xref: /plugin/combo/.github/workflows/scratch-env.yml (revision 62ac904eb0d0a6b3aa750c695ebae9736313aebc)
1*62ac904eSgerardnico# https://docs.github.com/en/actions/learn-github-actions/contexts
2*62ac904eSgerardniconame: Example Env (Scratch File)
3*62ac904eSgerardnico
4*62ac904eSgerardnico
5*62ac904eSgerardnico## Expression
6*62ac904eSgerardnico# https://docs.github.com/en/github-ae@latest/actions/learn-github-actions/expressions
7*62ac904eSgerardnico## Error: .github/workflows/example-env-github.yml (Line: 53, Col: 26): A mapping was not expected
8*62ac904eSgerardnico## Means that the expression syntax ${{ }} is not supported
9*62ac904eSgerardnico
10*62ac904eSgerardnico
11*62ac904eSgerardnicoon:
12*62ac904eSgerardnico  # Manually running a workflow from the UI
13*62ac904eSgerardnico  # https://docs.github.com/en/actions/using-workflows/triggering-a-workflow#defining-inputs-for-manually-triggered-workflows
14*62ac904eSgerardnico  # https://docs.github.com/en/actions/managing-workflow-runs/manually-running-a-workflow#configuring-a-workflow-to-run-manually
15*62ac904eSgerardnico  # https://docs.github.com/en/actions/learn-github-actions/contexts#inputs-context
16*62ac904eSgerardnico  workflow_dispatch:
17*62ac904eSgerardnico    inputs:
18*62ac904eSgerardnico      versions:
19*62ac904eSgerardnico        description: 'Version of the interpreter'
20*62ac904eSgerardnico        required: true
21*62ac904eSgerardnico        default: "['8.2']"
22*62ac904eSgerardnico        # https://docs.github.com/en/enterprise-cloud@latest/actions/using-workflows/workflow-syntax-for-github-actions#onworkflow_dispatchinputsinput_idtype
23*62ac904eSgerardnico        type: choice
24*62ac904eSgerardnico        options:
25*62ac904eSgerardnico          - "['7.4','8.2']"
26*62ac904eSgerardnico          - "['8.2']"
27*62ac904eSgerardnico          - "['7.4']"
28*62ac904eSgerardnico
29*62ac904eSgerardnico
30*62ac904eSgerardnicopermissions: # Setting permissions for the token
31*62ac904eSgerardnico  contents: read # needed to fetch code
32*62ac904eSgerardnico
33*62ac904eSgerardnico# A list of the jobs that run in the workflow file.
34*62ac904eSgerardnicojobs:
35*62ac904eSgerardnico  demo-job: # The identifier of the job
36*62ac904eSgerardnico
37*62ac904eSgerardnico    name: Env printing with the matrix version ${{ matrix.version }} # The name of the job
38*62ac904eSgerardnico
39*62ac904eSgerardnico    runs-on: ubuntu-latest
40*62ac904eSgerardnico
41*62ac904eSgerardnico    # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategy
42*62ac904eSgerardnico    strategy:
43*62ac904eSgerardnico      # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategyfail-fast
44*62ac904eSgerardnico      fail-fast: false
45*62ac904eSgerardnico
46*62ac904eSgerardnico      # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategymatrix
47*62ac904eSgerardnico      matrix:
48*62ac904eSgerardnico        # 2 jobs will run, one for each include entry
49*62ac904eSgerardnico        # because we don't specify any matrix variables
50*62ac904eSgerardnico        # All configurations under include will run
51*62ac904eSgerardnico        # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-adding-configurations
52*62ac904eSgerardnico        # Using context to create matrix
53*62ac904eSgerardnico        # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-using-contexts-to-create-matrices
54*62ac904eSgerardnico        # Note you can also set it programmatically: https://docs.github.com/en/actions/learn-github-actions/expressions#example-returning-a-json-object
55*62ac904eSgerardnico        version: ${{ fromJson(github.event.inputs.versions) }}
56*62ac904eSgerardnico
57*62ac904eSgerardnico    # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#env
58*62ac904eSgerardnico    # https://docs.github.com/en/actions/learn-github-actions/contexts#env-context
59*62ac904eSgerardnico    # only string, boolean, number
60*62ac904eSgerardnico    env:
61*62ac904eSgerardnico      LITERAL_STRING_ENV: lib/plugins/combo
62*62ac904eSgerardnico      DEPENDENCY_VIA_COMMAND: "${{ matrix.version == '7.4' && '7.4 version' || 'not 7.4 version' }}"
63*62ac904eSgerardnico
64*62ac904eSgerardnico    steps:
65*62ac904eSgerardnico
66*62ac904eSgerardnico      # https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#setting-an-environment-variable
67*62ac904eSgerardnico      # https://docs.github.com/en/actions/learn-github-actions/variables#passing-values-between-steps-and-jobs-in-a-workflow
68*62ac904eSgerardnico      # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsenv
69*62ac904eSgerardnico      - name: Adding a conditional dependant variable
70*62ac904eSgerardnico        run: |
71*62ac904eSgerardnico          echo "DEPENDENCY_VIA_ARRAY=${{ fromJson(env.LITERAL_ARRAY_ENV)[matrix.version] }}" >> $GITHUB_ENV
72*62ac904eSgerardnico        env:
73*62ac904eSgerardnico          # only string, boolean, number
74*62ac904eSgerardnico          LITERAL_ARRAY_ENV: '{"7.4":"Dependency Variable for 7.4","8.2":"Dependency Variable for 8.2"}'
75*62ac904eSgerardnico
76*62ac904eSgerardnico      - name: Echo env created
77*62ac904eSgerardnico        run: |
78*62ac904eSgerardnico          echo "$LITERAL_STRING_ENV";
79*62ac904eSgerardnico          echo "$DEPENDENCY_VIA_COMMAND";
80*62ac904eSgerardnico          echo "$DEPENDENCY_VIA_ARRAY";
81*62ac904eSgerardnico
82*62ac904eSgerardnico      # https://docs.github.com/en/actions/learn-github-actions/contexts#example-printing-context-information-to-the-log
83*62ac904eSgerardnico      - name: Dump GitHub context
84*62ac904eSgerardnico        run: echo '${{ toJSON(github) }}'
85*62ac904eSgerardnico      - name: Dump job context
86*62ac904eSgerardnico        run: echo '${{ toJSON(job) }}'
87*62ac904eSgerardnico      - name: Dump steps context
88*62ac904eSgerardnico        run: echo '${{ toJSON(steps) }}'
89*62ac904eSgerardnico      - name: Dump runner context
90*62ac904eSgerardnico        run: echo '${{ toJSON(runner) }}'
91*62ac904eSgerardnico      - name: Dump strategy context
92*62ac904eSgerardnico        run: echo '${{ toJSON(strategy) }}'
93*62ac904eSgerardnico      - name: Dump matrix context
94*62ac904eSgerardnico        run: echo '${{ toJSON(matrix) }}'
95*62ac904eSgerardnico      - name: Dump Input context
96*62ac904eSgerardnico        run: echo '${{ toJSON(inputs) }}'
97*62ac904eSgerardnico
98