on: [push] jobs: define-matrix: runs-on: docker outputs: scalar-value: ${{ steps.define.outputs.scalar }} array-value: ${{ steps.define.outputs.array }} matrix-value: ${{ steps.define.outputs.matrix }} steps: - id: define run: | echo 'scalar=scalar value' >> "$FORGEJO_OUTPUT" echo 'array=["value 1", "value 2"]' >> "$FORGEJO_OUTPUT" echo 'matrix={"dimension-1": ["d1 v1", "d1 v2"], "dimension-2": ["d2 v1", "d2 v2"]}' >> "$GITHUB_OUTPUT" scalar-job: runs-on: docker needs: define-matrix strategy: matrix: scalar: - "${{ needs.define-matrix.outputs.scalar-value }}" - hard-coded value steps: - run: | set -x [ "${{ matrix.scalar }}" = "scalar value" ] || [ "${{ matrix.scalar }}" = "hard-coded value" ] || exit 1 array-job: runs-on: docker needs: define-matrix strategy: matrix: array: ${{ fromJSON(needs.define-matrix.outputs.array-value) }} steps: - run: | set -x [ "${{ matrix.array }}" = "value 1" ] || [ "${{ matrix.array }}" = "value 2" ] || exit 1 matrix-job: runs-on: docker needs: define-matrix strategy: matrix: ${{ fromJSON(needs.define-matrix.outputs.matrix-value) }} steps: - run: | set -x [ "${{ matrix.dimension-1 }}" = "d1 v1" ] || [ "${{ matrix.dimension-1 }}" = "d1 v2" ] || exit 1 [ "${{ matrix.dimension-2 }}" = "d2 v1" ] || [ "${{ matrix.dimension-2 }}" = "d2 v2" ] || exit 1