Skip to content

Check Workflow setup logic #44

Check Workflow setup logic

Check Workflow setup logic #44

Workflow file for this run

name: Main - explore CI primitives
on:
push:
branches:
- main
env:
KOSLI_ORG: kosli
KOSLI_FLOW: server
KOSLI_CLI_VERSION: 2.10.16
# KOSLI_DRY_RUN: true # local override
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: |
if [ "${{ vars.KOSLI_DRY_RUN }}" == 'true' ] ; then
echo Org level KOSLI_DRY_RUN=true
value=true
elif [ "${{ vars.KOSLI_DRY_RUN }}" == 'false' ] ; then
echo Org level KOSLI_DRY_RUN=false
value=false
elif [ -n "${{ env.KOSLI_DRY_RUN }}" ] ; then
echo Repo level KOSLI_DRY_RUN=true
value="${{ env.KOSLI_DRY_RUN }}"
elif [ "${{ github.ref }}" == 'refs/heads/main' ] ; then
echo Branch level KOSLI_DRY_RUN=false
value=false
else
echo Default KOSLI_DRY_RUN=true
value=true
fi
echo "kosli_dry_run=$(echo $value)" >> ${GITHUB_OUTPUT}
job-1:
runs-on: ubuntu-latest
needs: [ setup ]
env:
KOSLI_DRY_RUN: ${{ needs.setup.outputs.kosli_dry_run }}
steps:
- name: Do something
run:
exit 27
# - name: Setup Kosli cli
# if: success() || failure()
# uses: kosli-dev/setup-cli-action@v2
# with:
# version:
# ${{ env.KOSLI_CLI_VERSION }}
- name: When on master, attest result to Kosli
if: success() || failure()
run: |
# Here we do 'kosli attest ..."
echo "KOSLI_DRY_RUN=:${{ env.KOSLI_DRY_RUN }}:"
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)