name: Continuous integration on: push: branches: - v2 pull_request: workflow_dispatch: inputs: debug_enabled: description: 'To run with tmate enter "debug_enabled"' required: false default: "false" env: GO_VERSION: 1.18.5 DOCKER_CLI_VERSION: 20.10.17 jobs: lint: name: Lint runs-on: ubuntu-latest steps: - name: Checkout code into the Go module directory uses: actions/checkout@v3 - name: Set up Go ${{ env.GO_VERSION }} uses: actions/setup-go@v3 with: go-version: ${{ env.GO_VERSION }} cache: true - name: Validate go-mod, license headers and docs are up-to-date run: make validate - name: Run golangci-lint env: BUILD_TAGS: e2e uses: golangci/golangci-lint-action@v3 with: version: v1.47.3 args: --timeout=180s # only on main branch, costs too much for the gain on every PR validate-cross-build: name: Validate cross build runs-on: ubuntu-latest if: github.ref == 'refs/heads/main' steps: - name: Checkout code into the Go module directory uses: actions/checkout@v3 - name: Set up Go ${{ env.GO_VERSION }} uses: actions/setup-go@v3 with: go-version: ${{ env.GO_VERSION }} cache: true # Ensure we don't discover cross platform build issues at release time. # Time used to build linux here is gained back in the build for local E2E step - name: Build packages run: make -f builder.Makefile cross build-plugin: name: Build and tests in plugin mode runs-on: ubuntu-latest steps: - name: Checkout code into the Go module directory uses: actions/checkout@v3 - name: Set up Go ${{ env.GO_VERSION }} uses: actions/setup-go@v3 with: go-version: ${{ env.GO_VERSION }} cache: true - name: Setup docker CLI run: | curl https://download.docker.com/linux/static/stable/x86_64/docker-${DOCKER_CLI_VERSION}.tgz | tar xz sudo cp ./docker/docker /usr/bin/ && rm -rf docker && docker version - name: Test run: make -f builder.Makefile test - name: Build for local E2E env: BUILD_TAGS: e2e run: make GIT_TAG=e2e-PR-${{ github.event.pull_request.number }}-${{ github.event.pull_request.head.sha }} -f builder.Makefile compose-plugin - name: E2E Test in plugin mode run: make e2e-compose build-standalone: name: Build and tests in standalone mode runs-on: ubuntu-latest steps: - name: Checkout code into the Go module directory uses: actions/checkout@v3 - name: Set up Go ${{ env.GO_VERSION }} uses: actions/setup-go@v3 with: go-version: ${{ env.GO_VERSION }} cache: true - name: Setup docker CLI run: | curl https://download.docker.com/linux/static/stable/x86_64/docker-${DOCKER_CLI_VERSION}.tgz | tar xz sudo cp ./docker/docker /usr/bin/ && rm -rf docker && docker version - name: Build for local E2E env: BUILD_TAGS: e2e run: make GIT_TAG=e2e-PR-${{ github.event.pull_request.number }}-${{ github.event.pull_request.head.sha }} -f builder.Makefile compose-plugin - name: Setup tmate session uses: mxschmitt/action-tmate@v3 with: limit-access-to-actor: true github-token: ${{ secrets.GITHUB_TOKEN }} if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.debug_enabled }} - name: E2E Test in standalone mode run: | rm -f /usr/local/bin/docker-compose cp bin/docker-compose /usr/local/bin make e2e-compose-standalone