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