From c26eb86a74301db5359b1f0a97bed9c342b3d70c Mon Sep 17 00:00:00 2001 From: Michele Sciabarra Date: Thu, 22 Feb 2024 08:36:45 +0000 Subject: [PATCH] workflow --- .github/workflows/ci.yaml | 112 ----------------------------------- .github/workflows/image.yaml | 51 ++++++++++++++++ Taskfile.yml | 5 +- 3 files changed, 54 insertions(+), 114 deletions(-) delete mode 100644 .github/workflows/ci.yaml create mode 100644 .github/workflows/image.yaml diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml deleted file mode 100644 index c475af2c..00000000 --- a/.github/workflows/ci.yaml +++ /dev/null @@ -1,112 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -name: Continuous Integration - -on: - push: - branches: [ master ] - tags: [ '*' ] - pull_request: - branches: [ master ] - types: [ opened, synchronize, reopened ] - schedule: - - cron: '30 1 * * 1,3,5' - -permissions: read-all - -jobs: - ci: - runs-on: ubuntu-22.04 - env: - PUSH_NIGHTLY: ${{ (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/master' }} - PUSH_RELEASE: ${{ github.event_name == 'push' && github.ref_type == 'tag' }} - steps: - # Checkout just this repo and run scanCode before we do anything else - - name: Checkout runtime repo - uses: actions/checkout@v3 - with: - path: runtime - - name: Scan Code - uses: apache/openwhisk-utilities/scancode@master - - # Install core OpenWhisk artifacts needed to build/test anything else - - name: Checkout OpenWhisk core repo - uses: actions/checkout@v3 - with: - repository: apache/openwhisk - path: core - - name: Setup Java - uses: actions/setup-java@v3 - with: - distribution: 'temurin' - java-version: '11' - - name: Compile and Install Core OpenWhisk - working-directory: core - run: | - ./gradlew :tests:compileTestScala - ./gradlew install - - # Build this repository - - name: Build Runtime - working-directory: runtime - run: | - ./gradlew distDocker - - # Test this repository - - name: Test Runtime - working-directory: runtime - run: | - ./gradlew :tests:checkScalafmtAll - ./gradlew :tests:test - - # Conditionally publish runtime images to DockerHub - # Important: naming convention for release tags is runtime@version - - name: Docker Login - if: ${{ env.PUSH_NIGHTLY == 'true' || env.PUSH_RELEASE == 'true' }} - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKERHUB_USER_OPENWHISK }} - password: ${{ secrets.DOCKERHUB_TOKEN_OPENWHISK }} - - name: Push Nightly Images - if: ${{ env.PUSH_NIGHTLY == 'true' }} - working-directory: runtime - run: | - SHORT_COMMIT=$(git rev-parse --short "$GITHUB_SHA") - ./gradlew :actionloop:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=nightly - ./gradlew :actionloop:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=$SHORT_COMMIT - ./gradlew :golang1.19:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=nightly - ./gradlew :golang1.19:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=$SHORT_COMMIT - ./gradlew :golang1.20:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=nightly - ./gradlew :golang1.20:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=$SHORT_COMMIT - ./gradlew :golang1.21:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=nightly - ./gradlew :golang1.21:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=$SHORT_COMMIT - ./gradlew :golang1.22:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=nightly - ./gradlew :golang1.22:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=$SHORT_COMMIT - - name: Push Release Images - if: ${{ env.PUSH_RELEASE == 'true' }} - working-directory: runtime - run: | - RUNTIME_VERSION=${GITHUB_REF_NAME%@*} - IMAGE_TAG=${GITHUB_REF_NAME##*@} - if [[ ${RUNTIME_VERSION} =~ 1\.[0-9]+ ]]; then - RUNTIME="golang$RUNTIME_VERSION" - elif [ ${RUNTIME_VERSION} == "actionloop" ]; then - RUNTIME="actionloop" - fi - ./gradlew $RUNTIME:distDocker -PdockerRegistry=docker.io -PdockerImagePrefix=openwhisk -PdockerImageTag=$IMAGE_TAG diff --git a/.github/workflows/image.yaml b/.github/workflows/image.yaml new file mode 100644 index 00000000..8bc429ce --- /dev/null +++ b/.github/workflows/image.yaml @@ -0,0 +1,51 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +name: Build Images +on: + push: + tags: + - '[0-9]*' + branches-ignore: '*' + +jobs: + build: + name: Build + runs-on: ubuntu-latest + steps: + - name: Checkout recursive + uses: actions/checkout@v2 + #- name: License check + # uses: apache/skywalking-eyes@main + # continue-on-error: true + - name: Registry login + uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Buildx install + uses: crazy-max/ghaction-docker-buildx@v1 + with: + version: latest + - name: Task + run: sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b /usr/local/bin + - name: Setup + run: task setup + - name: Build + run: task build diff --git a/Taskfile.yml b/Taskfile.yml index 3f2b8384..955eeb78 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -4,7 +4,7 @@ dotenv: [.env] vars: DRY: "" - PUSH: "" + PUSH: "y" BASETAG: 3.1.0-mastrogpt BASEIMG: ghcr.io/nuvolaris COMMON_VER: common1.17.1 @@ -56,7 +56,7 @@ tasks: RUNTIME="{{.BASEIMG}}/runtime-{{.RT}}-{{.VER}}:{{.TAG}}" if test -n "{{.PUSH}}" then {{.DRY}} docker buildx build -t "$RUNTIME" --build-arg COMMON="{{.COMMON}}" --platform linux/amd64,linux/arm64 . --push - else {{.DRY}} docker buildx build -t "$RUNTIME" --build-arg COMMON="{{.COMMON}}" . --push + else {{.DRY}} docker buildx build -t "$RUNTIME" --build-arg COMMON="{{.COMMON}}" . --load fi echo "Built $RUNTIME" @@ -74,6 +74,7 @@ tasks: build: - task: docker-login + - task: build-common - task build-lang RT=golang - task build-lang RT=python - task build-lang RT=nodejs