Struktura

definuje se v .github/workflows, napr. build_workflow.yml

name: JMENO
run-name: nepovinne - delší popis
on: push
env:
  promenna1: hodnota1
  
jobs:
 unikátní_název_jobu:
   runs_on: windows-latest
   outputs:
     cislo: ${{ steps.vystup.outputs.promenna }}
   steps:
   - run: echo "ahoj, promenna1: ${{env.promenna1}}"
   - run: echo "promenna=3" >> $GITHUB_OUTPUT
     id: vystup
   - name: failure
     id: aaa
     run: exit 1
   - name: If block
     if: ${{ failure() && steps.aaa.conclusion == 'failure' }}

Proměnné

${{runner.os}}
${{matrix.version}} … provede krok několikrát, doplní data ze sekce matrix pro každý běh jiná

root sekce

on

push.branches: -master, 'releases/**' … nastavení push requestu v určitých GIT větvích
pull_request.branches: - master, develop … pull requesty
workflow_dispach: …

workflow_call

workflow_call

inputs:
  config-path:
    required: true
    type: string
secrets:
  token:
    required: true

workflow_call.outputs.PRVNI.description: “popis”
workflow_call.outputs.PRVNI.value: ${{ job.EXAMPLE.outputs.output1 }}

concurency

běh na více prostředích

concurency.group: environment-${{github.ref}}
concurency.cancel-in-progress: true

jobs

job

runs_on: ubuntu-latest … na jakém agentoviúworkeru job pojede

outputs: … vystupy
outputs.vystup1: ${{ steps.step1.outputs.proměnná }}

if: github.ref_name == 'master' … podmínka pro spuštění jobu

stragegy: … strategie
strategy.matrix.target: [dev, stage, prod]

permissions:
permissions.contents: read
permissions.pull-requests: write

uses: octo-org/another-repo/.github/workflows/workflow.yml@v1 … volání jiného workflow
uses.with.config-path: .github/configdata.yml
uses.secrets:envPAT: ${{ secrets.envPAT }}

steps:

Kroky, steps

run

spustí příkaz

github

run: gh repo list aaa env.GITHUB_TOKEN: ${{secrets.token}}

actions/cache

uses: actions/cache@v1.2.1
with:
with.path: ~/.m2 … ve kterém adresáři se cachuje. ~/.m2 pro maven, **/node_modules pro node
with.key: ${{ runner.os }}-cache
with.restore-keys: ““

actions/checkout
actions/setup-node@v3

with.node-version: '16' with.registry-url: https://registry.npmjs.org/

actions/setup-java

with.java-version: '11'
with.distribution: 'temurin'
with.cache: 'maven'

docker/setup-buildx-action
docker/login-action

with.username: ${{ secrets.DOCKER_USR }}
with.password: ${{ secrets.DOCKER_PWD }}

docker/build-and-push

with.context: .
with.push: true
with.tags: aa/bb:cc