name: Render and Lint Documentation

on:
  pull_request:
    branches_ignore: []

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        # current Go releases plus the version in the go.mod are tested
        go: ['go.mod', 'oldstable', 'stable']
        # https://github.com/actions/setup-go/tree/v5#getting-go-version-from-the-gomod-file
        # https://github.com/actions/setup-go/tree/v5#using-stableoldstable-aliases

    env:
      RELEASE_GO_VER: "1.23"

    name: Documentation and Linting
    steps:

      - uses: actions/checkout@v4
        with:
          path: go/src/github.com/opencontainers/image-spec

      - uses: actions/setup-go@v5
        with:
          go-version: ${{ matrix.go != 'go.mod' && matrix.go || null }}
          go-version-file: ${{ matrix.go == 'go.mod' && 'go/src/github.com/opencontainers/image-spec/go.mod' || null }}
          cache-dependency-path: go/src/github.com/opencontainers/image-spec/go.sum

      - name: Render and Lint
        env:
          GOPATH: /home/runner/work/image-spec/image-spec/go
          # do not automatically upgrade go to a different version: https://go.dev/doc/toolchain
          GOTOOLCHAIN: local
        run: |
          export PATH=$GOPATH/bin:$PATH
          cd go/src/github.com/opencontainers/image-spec
          make install.tools
          go get -t -d ./...
          ls ../
          make
          make .gitvalidation
          make lint
          make check-license
          make test
          make docs

      - name: documentation artifacts
        uses: actions/upload-artifact@v4
        if: matrix.go == env.RELEASE_GO_VER
        with:
          name: oci-docs
          path: go/src/github.com/opencontainers/image-spec/output
