name: Test Integration on: pull_request: branches: - '*' paths-ignore: - 'docs/**' - '**.md' - 'script/gcg/**' env: GO_VERSION: '1.24' CGO_ENABLED: 0 jobs: build: runs-on: ubuntu-latest steps: - name: Check out code uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up Go ${{ env.GO_VERSION }} uses: actions/setup-go@v5 with: go-version: ${{ env.GO_VERSION }} check-latest: true - name: Avoid generating webui run: touch webui/static/index.html - name: Build binary run: make binary-linux-amd64 - name: Save go cache build uses: actions/cache/save@v4 with: path: | ~/.cache/go-build key: ${{ runner.os }}-go-build-cache-${{ env.GO_VERSION }}-${{ hashFiles('**/go.sum') }} - name: Artifact traefik binary uses: actions/upload-artifact@v4 with: name: traefik path: ./dist/linux/amd64/traefik retention-days: 1 test-integration: runs-on: ubuntu-latest needs: - build strategy: fail-fast: true matrix: parallel: [12] index: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] steps: - name: Check out code uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up Go ${{ env.GO_VERSION }} uses: actions/setup-go@v5 with: go-version: ${{ env.GO_VERSION }} check-latest: true - name: Avoid generating webui run: touch webui/static/index.html - name: Download traefik binary uses: actions/download-artifact@v4 with: name: traefik path: ./dist/linux/amd64/ - name: Make binary executable run: chmod +x ./dist/linux/amd64/traefik - name: Restore go cache build uses: actions/cache/restore@v4 with: path: | ~/.cache/go-build key: ${{ runner.os }}-go-build-cache-${{ env.GO_VERSION }}-${{ hashFiles('**/go.sum') }} - name: Generate go test Slice id: test_split uses: hashicorp-forge/go-test-split-action@v2.0.0 with: packages: ./integration total: ${{ matrix.parallel }} index: ${{ matrix.index }} - name: Run Integration tests run: | TESTS=$(echo "${{ steps.test_split.outputs.run}}" | sed 's/\$/\$\$/g') TESTFLAGS="-run \"${TESTS}\"" make test-integration