Try reworking dry-run #62
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Main - explore CI primitives | |
on: | |
push: | |
branches: | |
- main | |
env: | |
KOSLI_ORG: kosli | |
KOSLI_API_TOKEN: dummy3465324sgr65324wrets | |
KOSLI_FLOW: server | |
KOSLI_TRAIL: ${{ github.sha }} | |
KOSLI_CLI_VERSION: 2.10.18 | |
KOSLI_DRY_RUN: ${{ vars.KOSLI_DRY_RUN }} # false | |
jobs: | |
setup: | |
runs-on: ubuntu-latest | |
outputs: | |
kosli_dry_run: ${{ steps.prepare.outputs.kosli_dry_run }} | |
steps: | |
- name: set-env-var in setup | |
id: prepare | |
run: | |
echo Hello | |
job-1: | |
runs-on: ubuntu-latest | |
needs: [ setup ] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 1 | |
- name: Do wibble | |
id: wibble | |
run: | |
exit 0 | |
- name: Setup Kosli cli | |
if: ${{ github.ref }} == 'refs/heads/main' && (success() || failure()) | |
uses: kosli-dev/setup-cli-action@v2 | |
with: | |
version: | |
${{ env.KOSLI_CLI_VERSION }} | |
- name: When on master, attest result to Kosli | |
if: ${{ github.ref }} == 'refs/heads/main' && (success() || failure()) | |
run: | | |
echo "KOSLI_DRY_RUN=:${KOSLI_DRY_RUN}:" | |
KOSLI_COMPLIANT=$([ "${{ steps.wibble.outcome }}" == 'success' ] && echo true || echo false) | |
echo "KOSLI_COMPLIANT=:${KOSLI_COMPLIANT}:" | |
kosli attest generic --name=wibble | |
job-2: | |
runs-on: ubuntu-latest | |
needs: [ job-1 ] | |
if: ${{ success() || failure() }} | |
steps: | |
- name: step-1 from job-2 | |
run: | | |
echo Hello from job-2, step-1 | |
echo "TEST_UNIT_COVERAGE_IS_COMPLIANT=wibble" >> ${GITHUB_ENV} | |
- name: step-2 from job-2 | |
run: | | |
echo Hello from job-2, step-2 | |
echo "env-var=:${{ env.TEST_UNIT_COVERAGE_IS_COMPLIANT }}:" | |
# plain exit-42 on job-1,step-1 and success()||failure() on job-1,step-2 means | |
# job-1,step-2 runs? YES | |
# job-2 runs? NO | |
# plain exit-42 on job-1,step-1 and NO success()||failure() on job-1,step-2 means | |
# job-1,step-2 runs? NO | |
# job-2 runs? NO | |
# With this... | |
# - name: step-1 from job-1 | |
# run: | | |
# echo Hello from job-1, step-1 | |
# sdf | |
# echo Hello from job-1, step-1, after an error | |
# exit 42 | |
# then | |
# the second echo is NOT run, and the exit code of the job is 127 (not 42) | |
# With this... | |
# job-2: | |
# runs-on: ubuntu-latest | |
# needs: [ job-1 ] | |
# if: ${{ success() || failure() }} | |
# then | |
# job1 failed, job2 waits for job1 to finish, and does then run. | |
# Putting continue-on-error: true | |
# at the step level, means that if the step fails | |
# the other steps still run, and the job succeeds | |
# Eg, there is no "Rerun failed jobs" option in the CI. | |
# Putting continue-on-error: true | |
# at the job-2 level, seems to have no effect. | |
# job1 fails, but job2 is not run (it is skipped) | |
# Putting continue-on-error: true | |
# at the job-1 level, means that job1 steps 2,3 are not run. | |
# and job-1 fails, and job-2 is run. | |
# env-var added to >> ${GITHUB_ENV} | |
# is available in the next step (in the same job) |