Skip to content

👷Add information on each element of the output variable in the workflow #7

👷Add information on each element of the output variable in the workflow

👷Add information on each element of the output variable in the workflow #7

Workflow file for this run

name: Go Test
on:
pull_request:
branches:
- 'main'
paths:
- 'examples/go/**'
- '.github/workflows/go_test.yml'
jobs:
set_variables:
runs-on: ubuntu-latest
outputs:
os: ${{ steps.json2vars.outputs.os }}
versions_go: ${{ steps.json2vars.outputs.versions_go }}
ghpages_branch: ${{ steps.json2vars.outputs.ghpages_branch }}
steps:
- name: Checkout repository
uses: actions/[email protected]
with:
fetch-depth: 0
- name: Set variables from JSON
id: json2vars
uses: 7rikazhexde/json2vars-setter@main
with:
#json-file: .github/workflows/matrix.json
json-file: .github/workflows/go_project_matrix.json
- name: Debug output values
run: |
echo "os: ${{ steps.json2vars.outputs.os }}"
echo "os[0]: ${{ fromJson(steps.json2vars.outputs.os)[0] }}"
echo "os[1]: ${{ fromJson(steps.json2vars.outputs.os)[1] }}"
echo "os[2]: ${{ fromJson(steps.json2vars.outputs.os)[2] }}"
echo "versions_go: ${{ steps.json2vars.outputs.versions_go }}"
echo "versions_go[0]: ${{ fromJson(steps.json2vars.outputs.versions_go)[0] }}"
echo "versions_go[1]: ${{ fromJson(steps.json2vars.outputs.versions_go)[1] }}"
echo "versions_go[2]: ${{ fromJson(steps.json2vars.outputs.versions_go)[2] }}"
echo "ghpages_branch: ${{ steps.json2vars.outputs.ghpages_branch }}"
run_tests:
needs: set_variables
strategy:
matrix:
os: ${{ fromJson(needs.set_variables.outputs.os) }}
go-version: ${{ fromJson(needs.set_variables.outputs.versions_go) }}
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/[email protected]
with:
fetch-depth: 0
- name: Set up Go
uses: actions/[email protected]
with:
go-version: ${{ matrix.go-version }}
# Cache is disabled because:
# 1. Currently no external package dependencies
# 2. No go.sum file exists
# 3. To avoid warning messages in the workflow
# Note: Can be enabled when external dependencies are added in the future
cache: false
- name: Set timezone
uses: szenius/[email protected]
with:
timezoneLinux: "Asia/Tokyo"
timezoneMacos: "Asia/Tokyo"
timezoneWindows: "Tokyo Standard Time"
- name: Display Go version
run: go version
- name: Show matrix
shell: bash
run: |
# For non-list case
ghpages_branch="${{ needs.set_variables.outputs.ghpages_branch }}"
# For list case, explicitly enclose the list in "" to make it a string. (Note that it is not ''.)
os='${{ needs.set_variables.outputs.os }}'
versions_go='${{ needs.set_variables.outputs.versions_go }}'
# For list index case
os_0="${{ fromJson(needs.set_variables.outputs.os)[0] }}"
os_1="${{ fromJson(needs.set_variables.outputs.os)[1] }}"
os_2="${{ fromJson(needs.set_variables.outputs.os)[2] }}"
versions_go_0="${{ fromJson(needs.set_variables.outputs.versions_go)[0] }}"
versions_go_1="${{ fromJson(needs.set_variables.outputs.versions_go)[1] }}"
versions_go_2="${{ fromJson(needs.set_variables.outputs.versions_go)[2] }}"
echo "os: ${os}"
echo "os_0: ${os_0}"
echo "os_1: ${os_1}"
echo "os_2: ${os_2}"
echo "versions_go: ${versions_go}"
echo "versions_go_0: ${versions_go_0}"
echo "versions_go_1: ${versions_go_1}"
echo "versions_go_2: ${versions_go_2}"
echo "ghpages_branch: ${ghpages_branch}"
# For loop case
os_list=$(echo "${os}" | jq -r '.[]' | tr '\n' ' ' | sed 's/ $//')
go_versions_list=$(echo "${versions_go}" | jq -r '.[]' | tr '\n' ' ' | sed 's/ $//')
for current_os in ${os_list}; do
for version in ${go_versions_list}; do
echo "Current OS: ${current_os}, Current Go Version: ${version}"
done
done
- name: Get dependencies
working-directory: ./examples/go
run: go mod download
- name: Run tests
id: go_test
working-directory: ./examples/go
shell: bash
run: |
output="$(go test -v ./...)"
echo "${output}"