name: Continuous integration on: push: branches: - main pull_request: env: GO_VERSION: 1.19 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 uses: actions/setup-go@v3 with: go-version: ${{ env.GO_VERSION }} cache: true - name: Validate go-mod is up-to-date and license headers run: make validate - name: Run golangci-lint env: BUILD_TAGS: kube,e2e run: | curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sudo sh -s -- -b /usr/bin/ v1.50.1 make -f builder.Makefile lint # 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 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: name: Build runs-on: ubuntu-latest steps: - name: Checkout code into the Go module directory uses: actions/checkout@v3 - name: Set up Go uses: actions/setup-go@v3 with: go-version: ${{ env.GO_VERSION }} cache: true - name: Set up gosum run: | go install gotest.tools/gotestsum@latest - name: Setup docker CLI run: | curl https://download.docker.com/linux/static/stable/x86_64/docker-20.10.3.tgz | tar xz sudo cp ./docker/docker /usr/bin/ && rm -rf docker && docker version - name: Test env: BUILD_TAGS: kube run: make -f builder.Makefile test - name: Build for local E2E env: BUILD_TAGS: e2e run: make -f builder.Makefile cli - name: E2E Test run: make e2e-local