name: Main permissions: contents: read on: push: branches: - main pull_request: jobs: main: name: Main Process runs-on: ubuntu-latest env: # Keep in sync with go.mod. Capped at 1.22 because the plugin is run by # yaegi (bundled in Traefik) and even Traefik v3.7.1 ships yaegi v0.16.1, # which only supports Go 1.22. Building on the floor makes go build / go # test reject newer stdlib before yaegi_test does. GO_VERSION: 1.22 GOLANGCI_LINT_VERSION: v1.63.4 # yaegi_test guard — pin to the version current Traefik bundles. YAEGI_VERSION: v0.16.1 CGO_ENABLED: 0 defaults: run: working-directory: ${{ github.workspace }}/go/src/github.com/${{ github.repository }} steps: # https://github.com/marketplace/actions/setup-go-environment - name: Set up Go ${{ env.GO_VERSION }} uses: actions/setup-go@v6 with: go-version: ${{ env.GO_VERSION }} # https://github.com/marketplace/actions/checkout - name: Check out code uses: actions/checkout@v7 with: path: go/src/github.com/${{ github.repository }} fetch-depth: 0 # https://github.com/marketplace/actions/cache - name: Cache Go modules uses: actions/cache@v6 with: path: ${{ github.workspace }}/go/pkg/mod key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go- # https://golangci-lint.run/usage/install#other-ci - name: Install golangci-lint ${{ env.GOLANGCI_LINT_VERSION }} run: curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin ${GOLANGCI_LINT_VERSION} - name: Install Yaegi ${{ env.YAEGI_VERSION }} run: curl -sfL https://raw.githubusercontent.com/traefik/yaegi/master/install.sh | bash -s -- -b $(go env GOPATH)/bin ${YAEGI_VERSION} - name: Setup GOPATH run: go env -w GOPATH=${{ github.workspace }}/go - name: Check and get dependencies run: | go mod tidy git diff --exit-code go.mod # git diff --exit-code go.sum go mod download go mod vendor # git diff --exit-code ./vendor/ - name: Lint and Tests run: make - name: Run tests with Yaegi run: make yaegi_test env: GOPATH: ${{ github.workspace }}/go