From 043ce673b762b28814763203d23b29b3e63f1911 Mon Sep 17 00:00:00 2001 From: anirudhprasad-sap <126493692+anirudhprasad-sap@users.noreply.github.com> Date: Wed, 20 Sep 2023 13:28:42 +0000 Subject: [PATCH] docker & generate manifest workflow reworked --- .github/workflows/docker-push.yml | 54 ++------------------ .github/workflows/generate-manifest.yml | 65 +++++++++++++++++++------ 2 files changed, 56 insertions(+), 63 deletions(-) diff --git a/.github/workflows/docker-push.yml b/.github/workflows/docker-push.yml index 912f078..5f3caa2 100644 --- a/.github/workflows/docker-push.yml +++ b/.github/workflows/docker-push.yml @@ -1,8 +1,9 @@ name: Docker push on: - release: - types: [published] + push: + tags: + - manager/v[0-9]+.[0-9]+.[0-9]+ concurrency: release-${{ github.event.release.tag_name }} @@ -13,47 +14,10 @@ defaults: run: shell: bash -jobs: - get_component: - name: Get component from tag - runs-on: ubuntu-22.04 - outputs: - proceed_with_docker_push: ${{ steps.check_release_tag.outputs.proceed }} - component: ${{ steps.extract_component.outputs.component }} - permissions: - contents: read - packages: write - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Extract component from tag - id: extract_component - run: | - echo "component=$(echo ${{ github.event.release.tag_name }} | grep -oP '^(.*?)\/' | rev | cut -c2- | rev )" >> $GITHUB_OUTPUT - - - name: Print component - run: | - echo ${{ steps.extract_component.outputs.component }} - - - name: Check release tag - id: check_release_tag - run: | - if [[ '${{ steps.extract_component.outputs.component }}' == 'manager' ]] - then - echo "Release tag created for cap-operator-manager, we can proceed with docker push." - echo "proceed=true" >> $GITHUB_OUTPUT - else - echo "Release tag doesn't correspond to cap-operator-manager, skip!!!" - echo "proceed=false" >> $GITHUB_OUTPUT - fi - +jobs: docker_build_and_push: name: Docker build and push runs-on: ubuntu-22.04 - needs: [get_component] - if: needs.get_component.outputs.proceed_with_docker_push == 'true' outputs: version: ${{ steps.extract-metadata.outputs.version }} permissions: @@ -109,12 +73,4 @@ jobs: - name: Print Outputs run: | echo "Tags: ${{ steps.extract-metadata.outputs.tags }}" - echo "Labels: ${{ steps.extract-metadata.outputs.labels }}" - - generate_manifests: - uses: ./.github/workflows/generate-manifest.yml - needs: [get_component, docker_build_and_push] - if: needs.get_component.outputs.proceed_with_docker_push == 'true' - with: - version: ${{ needs.docker_build_and_push.outputs.version }} - upload_url: ${{ github.event.release.upload_url }} \ No newline at end of file + echo "Labels: ${{ steps.extract-metadata.outputs.labels }}" \ No newline at end of file diff --git a/.github/workflows/generate-manifest.yml b/.github/workflows/generate-manifest.yml index 069249c..3bb8bb5 100644 --- a/.github/workflows/generate-manifest.yml +++ b/.github/workflows/generate-manifest.yml @@ -2,14 +2,9 @@ name: Generate Manifests on: - workflow_call: - inputs: - version: - type: string - required: true - upload_url: - type: string - required: false + release: + types: [published] + workflow_dispatch: inputs: version: @@ -28,18 +23,42 @@ defaults: shell: bash jobs: - generate-manifest: + generate_manifest: name: Generate manifest runs-on: ubuntu-22.04 steps: - name: Checkout uses: actions/checkout@v3 + + - name: Get version and upload URL + id: get_version_upload_url + run: | + if [[ ! -z '${{ inputs.version }}' ]] + then + echo "version=${{ inputs.version }}" >> $GITHUB_OUTPUT + else + echo "version=$(echo ${{ github.event.release.tag_name }} | grep -oP '(?<=\/v)\d+\.\d+\.\d+' )" >> $GITHUB_OUTPUT + fi + + if [[ ! -z '${{ inputs.upload_url }}' ]] + then + echo "upload_url=${{ inputs.upload_url }}" >> $GITHUB_OUTPUT + elif [[ ! -z '${{ github.event.release.upload_url }}' ]] + then + echo "upload_url=${{ github.event.release.upload_url }}" >> $GITHUB_OUTPUT + else + echo "upload_url=''" >> $GITHUB_OUTPUT + fi + + - name: Print version and upload URL + run: | + echo "Version=${{ steps.get_version_upload_url.outputs.version }}" + echo "Upload URL=${{ steps.get_version_upload_url.outputs.upload_url }}" - name: Update version in kustomization.yaml run: | - yq -i '.images[0].newTag="${{ inputs.version }}"' config/default/kustomization.yaml - cat config/default/kustomization.yaml > $CR_FILENAME + yq -i '.images[0].newTag="${{ steps.get_version_upload_url.outputs.version }}"' config/default/kustomization.yaml - name: Download kustomize cli run: | @@ -50,11 +69,29 @@ jobs: run: | ./kustomize build config/default/ > $MANIFEST_FILENAME cat $MANIFEST_FILENAME + cat config/samples/operator_v1alpha1_capoperator.yaml > $CR_FILENAME + + - name: Determine target commit + id: get_target_commit + run: | + sha=$(git rev-parse HEAD) + echo "Target commit: $sha" + echo "sha=$sha" >> $GITHUB_OUTPUT + + - name: Wait for check suites to complete + uses: sap-contributions/await-check-suites@master + if: inputs.version == '' + with: + ref: ${{ steps.get_target_commit.outputs.sha }} + intervalSeconds: 10 + timeoutSeconds: 1800 + failStepIfUnsuccessful: true + appSlugFilter: github-actions - name: Upload manifest & default CR to release - if: inputs.upload_url != '' + if: inputs.upload_url != '' || github.event.release.upload_url != '' run: | - upload_url="${{ inputs.upload_url }}" + upload_url="${{ steps.get_version_upload_url.outputs.upload_url }}" upload_url=${upload_url%%\{*\}} file=$MANIFEST_FILENAME echo "Uploading manifest $file to $upload_url ..." @@ -72,4 +109,4 @@ jobs: -H "Authorization: Bearer ${{ github.token }}" \ -H "Content-Type: $(file -b --mime-type $file)" \ --data-binary @$file \ - "$upload_url?name=$(basename $file)" \ No newline at end of file + "$upload_url?name=$(basename $file)"