xref: /plugin/combo/.github/workflows/scratch-env.yml (revision 6bc0fc136b8af3d7a7678f100eb401e0b6415da3)
162ac904eSgerardnico# https://docs.github.com/en/actions/learn-github-actions/contexts
2*6bc0fc13Sgerardniconame: Scratch Learning Workflow
362ac904eSgerardnico
462ac904eSgerardnico
562ac904eSgerardnico## Expression
662ac904eSgerardnico# https://docs.github.com/en/github-ae@latest/actions/learn-github-actions/expressions
762ac904eSgerardnico## Error: .github/workflows/example-env-github.yml (Line: 53, Col: 26): A mapping was not expected
862ac904eSgerardnico## Means that the expression syntax ${{ }} is not supported
962ac904eSgerardnico
1062ac904eSgerardnico
1162ac904eSgerardnicoon:
1262ac904eSgerardnico  # Manually running a workflow from the UI
1362ac904eSgerardnico  # https://docs.github.com/en/actions/using-workflows/triggering-a-workflow#defining-inputs-for-manually-triggered-workflows
1462ac904eSgerardnico  # https://docs.github.com/en/actions/managing-workflow-runs/manually-running-a-workflow#configuring-a-workflow-to-run-manually
1562ac904eSgerardnico  # https://docs.github.com/en/actions/learn-github-actions/contexts#inputs-context
1662ac904eSgerardnico  workflow_dispatch:
1762ac904eSgerardnico    inputs:
1862ac904eSgerardnico      versions:
1962ac904eSgerardnico        description: 'Version of the interpreter'
2062ac904eSgerardnico        required: true
2162ac904eSgerardnico        default: "['8.2']"
2262ac904eSgerardnico        # https://docs.github.com/en/enterprise-cloud@latest/actions/using-workflows/workflow-syntax-for-github-actions#onworkflow_dispatchinputsinput_idtype
2362ac904eSgerardnico        type: choice
2462ac904eSgerardnico        options:
2562ac904eSgerardnico          - "['7.4','8.2']"
2662ac904eSgerardnico          - "['8.2']"
2762ac904eSgerardnico          - "['7.4']"
2862ac904eSgerardnico
2962ac904eSgerardnico
3062ac904eSgerardnicopermissions: # Setting permissions for the token
3162ac904eSgerardnico  contents: read # needed to fetch code
3262ac904eSgerardnico
3362ac904eSgerardnico# A list of the jobs that run in the workflow file.
3462ac904eSgerardnicojobs:
3562ac904eSgerardnico  demo-job: # The identifier of the job
3662ac904eSgerardnico
3762ac904eSgerardnico    name: Env printing with the matrix version ${{ matrix.version }} # The name of the job
3862ac904eSgerardnico
3962ac904eSgerardnico    runs-on: ubuntu-latest
4062ac904eSgerardnico
4162ac904eSgerardnico    # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategy
4262ac904eSgerardnico    strategy:
4362ac904eSgerardnico      # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategyfail-fast
4462ac904eSgerardnico      fail-fast: false
4562ac904eSgerardnico
4662ac904eSgerardnico      # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategymatrix
4762ac904eSgerardnico      matrix:
4862ac904eSgerardnico        # 2 jobs will run, one for each include entry
4962ac904eSgerardnico        # because we don't specify any matrix variables
5062ac904eSgerardnico        # All configurations under include will run
5162ac904eSgerardnico        # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-adding-configurations
5262ac904eSgerardnico        # Using context to create matrix
5362ac904eSgerardnico        # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-using-contexts-to-create-matrices
5462ac904eSgerardnico        # Note you can also set it programmatically: https://docs.github.com/en/actions/learn-github-actions/expressions#example-returning-a-json-object
5562ac904eSgerardnico        version: ${{ fromJson(github.event.inputs.versions) }}
5662ac904eSgerardnico
5762ac904eSgerardnico    # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#env
5862ac904eSgerardnico    # https://docs.github.com/en/actions/learn-github-actions/contexts#env-context
5962ac904eSgerardnico    # only string, boolean, number
6062ac904eSgerardnico    env:
6162ac904eSgerardnico      LITERAL_STRING_ENV: lib/plugins/combo
6262ac904eSgerardnico      DEPENDENCY_VIA_COMMAND: "${{ matrix.version == '7.4' && '7.4 version' || 'not 7.4 version' }}"
6362ac904eSgerardnico
6462ac904eSgerardnico    steps:
6562ac904eSgerardnico
6662ac904eSgerardnico      # https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#setting-an-environment-variable
6762ac904eSgerardnico      # https://docs.github.com/en/actions/learn-github-actions/variables#passing-values-between-steps-and-jobs-in-a-workflow
6862ac904eSgerardnico      # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsenv
6962ac904eSgerardnico      - name: Adding a conditional dependant variable
7062ac904eSgerardnico        run: |
7162ac904eSgerardnico          echo "DEPENDENCY_VIA_ARRAY=${{ fromJson(env.LITERAL_ARRAY_ENV)[matrix.version] }}" >> $GITHUB_ENV
7262ac904eSgerardnico        env:
7362ac904eSgerardnico          # only string, boolean, number
7462ac904eSgerardnico          LITERAL_ARRAY_ENV: '{"7.4":"Dependency Variable for 7.4","8.2":"Dependency Variable for 8.2"}'
7562ac904eSgerardnico
7662ac904eSgerardnico      - name: Echo env created
7762ac904eSgerardnico        run: |
7862ac904eSgerardnico          echo "$LITERAL_STRING_ENV";
7962ac904eSgerardnico          echo "$DEPENDENCY_VIA_COMMAND";
8062ac904eSgerardnico          echo "$DEPENDENCY_VIA_ARRAY";
8162ac904eSgerardnico
8262ac904eSgerardnico      # https://docs.github.com/en/actions/learn-github-actions/contexts#example-printing-context-information-to-the-log
8362ac904eSgerardnico      - name: Dump GitHub context
8462ac904eSgerardnico        run: echo '${{ toJSON(github) }}'
8562ac904eSgerardnico      - name: Dump job context
8662ac904eSgerardnico        run: echo '${{ toJSON(job) }}'
8762ac904eSgerardnico      - name: Dump steps context
8862ac904eSgerardnico        run: echo '${{ toJSON(steps) }}'
8962ac904eSgerardnico      - name: Dump runner context
9062ac904eSgerardnico        run: echo '${{ toJSON(runner) }}'
9162ac904eSgerardnico      - name: Dump strategy context
9262ac904eSgerardnico        run: echo '${{ toJSON(strategy) }}'
9362ac904eSgerardnico      - name: Dump matrix context
9462ac904eSgerardnico        run: echo '${{ toJSON(matrix) }}'
9562ac904eSgerardnico      - name: Dump Input context
9662ac904eSgerardnico        run: echo '${{ toJSON(inputs) }}'
9762ac904eSgerardnico
98