generate_build_number:
needs: [ aws, azure, gcp ]
name: Generate Build Number
runs-on: ubuntu-latest
if: ${{ always() && contains(join(needs.*.result, ','), 'success') }}
outputs:
build_number: ${{ steps.buildnumber.outputs.build_number }}
steps:
- name: Generate build number
id: buildnumber
uses: einaregilsson/build-number@v3
with:
token: ${{secrets.github_token}}
zip_files:
needs: generate_build_number
name: Generate Zip File
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: echo ${{needs.generate_build_number.outputs.build_number}} > world.txt
- uses: montudor/action-zip@v1
with:
args: zip -qq -r terraform-latest.zip aws azure gcp world.txt
- uses: actions/upload-artifact@v1
with:
name: terraform-latest
path: ${{ github.workspace }}/terraform-latest.zip
I want to run zip_files only after generate_build_number is completed successfully. How using the above code, even though generate_build_number finished, zip_files was skipped.
By default, when "needs" is set, Github actions will interpret the condition if: success(). So if there are any failures in steps, GH will treat the job as not successful.
Either you can add continue-on-error: true
for each step in generate_build_number
job
or
add a condition like below
generate_build_number:
needs: [ aws, azure, gcp ]
name: Generate Build Number
runs-on: ubuntu-latest
if: ${{ always() && contains(join(needs.*.result, ','), 'success') }}
outputs:
build_number: ${{ steps.buildnumber.outputs.build_number }}
steps:
- name: Generate build number
id: buildnumber
uses: einaregilsson/build-number@v3
with:
token: ${{secrets.github_token}}
zip_files:
needs: generate_build_number
if: always()
name: Generate Zip File
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: echo ${{needs.generate_build_number.outputs.build_number}} > world.txt
- uses: montudor/action-zip@v1
with:
args: zip -qq -r terraform-latest.zip aws azure gcp world.txt
- uses: actions/upload-artifact@v1
with:
name: terraform-latest
path: ${{ github.workspace }}/terraform-latest.zip