In this lab you will update the workflow syntax.
Duration: 5-10 minutes
References:
- Open the workflow file job-dependencies.yml
- Edit the file and copy the following YAML content at the end of the file:
build:
runs-on: windows-latest
steps:
- run: echo "This job will be run in parallel with the initial job."
test:
runs-on: ubuntu-latest
needs: build
steps:
- run: echo "This job will be run after the build job."
ring01:
runs-on: ubuntu-latest
needs: test
steps:
- run: echo "This job will be run after the test job."
ring02:
runs-on: macos-latest
needs: test
steps:
- run: echo "This job will be run after the test job."
ring03:
runs-on: ubuntu-latest
needs: test
steps:
- run: echo "This job will be run after the test job."
ring04:
runs-on: ubuntu-latest
needs: [ring01,ring02,ring03]
steps:
- run: echo "This job will be run after the ring01,ring02,ring03 jobs."
prod:
runs-on: ubuntu-latest
needs: [ring04]
steps:
- run: echo "This job will be run after the ring04 job."
- Commit the changes into the
main
branch - Go to
Actions
and manually trigger the workflow by clicking onRun Workflow
button - See the details of your running workflow
- Using the same file as step 2.1, copy the following YAML content and replace the
build
job
build:
runs-on: ubuntu-latest
strategy:
matrix:
configuration: [debug, release]
steps:
- run: echo "This job builds the cofiguration ${{ matrix.configuration }}."
- Update the workflow to run on push events
on:
workflow_dispatch:
push:
branches:
- main
- Commit the changes into the
main
branch - Go to
Actions
and see the details of your running workflow
job-dependencies.yml
name: 02-2. Dependencies
on:
workflow_dispatch:
push:
branches:
- main
jobs:
initial:
runs-on: ubuntu-latest
steps:
- run: echo "This job will be run first."
fanout1:
runs-on: ubuntu-latest
needs: initial
steps:
- run: echo "This job will run after the initial job, in parallel with fanout2."
fanout2:
runs-on: ubuntu-latest
needs: initial
steps:
- run: echo "This job will run after the initial job, in parallel with fanout1."
fanout3:
runs-on: ubuntu-latest
needs: fanout1
steps:
- run: echo "This job will run after the initial job, in parallel with fanout2."
fanin:
runs-on: ubuntu-latest
needs: [fanout1, fanout2]
steps:
- run: echo "This job will run after fanout1 and fanout2 have finished."
build:
runs-on: ubuntu-latest
strategy:
matrix:
configuration: [debug, release]
steps:
- run: echo "This job builds the cofiguration ${{ matrix.configuration }}."
test:
runs-on: ubuntu-latest
needs: build
steps:
- run: echo "This job will be run after the build job."
ring01:
runs-on: ubuntu-latest
needs: test
steps:
- run: echo "This job will be run after the test job."
ring02:
runs-on: macos-latest
needs: test
steps:
- run: echo "This job will be run after the test job."
ring03:
runs-on: ubuntu-latest
needs: test
steps:
- run: echo "This job will be run after the test job."
ring04:
runs-on: ubuntu-latest
needs: [ring01,ring02,ring03]
steps:
- run: echo "This job will be run after the ring01,ring02,ring03 jobs."
prod:
runs-on: ubuntu-latest
needs: [ring04]
steps:
- run: echo "This job will be run after the ring04 job."