name: CI on: push: branches: [main] tags: - "*" pull_request: schedule: - cron: "0 0 * * *" workflow_dispatch: env: IMAGE_NAME: ${{ github.repository }} jobs: vendor: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: DeterminateSystems/determinate-nix-action@v3.16.1 - uses: DeterminateSystems/magic-nix-cache-action@v13 - run: | go mod tidy go mod vendor git diff --exit-code build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: DeterminateSystems/determinate-nix-action@v3.16.1 - uses: DeterminateSystems/magic-nix-cache-action@v13 - run: nix build docs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: DeterminateSystems/determinate-nix-action@v3.16.1 - uses: DeterminateSystems/magic-nix-cache-action@v13 - name: Build docs run: | nix develop . --command make gen-docs git diff --exit-code linux: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: DeterminateSystems/determinate-nix-action@v3.16.1 - uses: DeterminateSystems/magic-nix-cache-action@v13 - run: nix build .#kilo-cross-linux-amd64 .#kilo-cross-linux-arm64 .#kilo-cross-linux-arm darwin: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: DeterminateSystems/determinate-nix-action@v3.16.1 - uses: DeterminateSystems/magic-nix-cache-action@v13 - run: nix build .#kgctl-cross-darwin-amd64 .#kgctl-cross-darwin-arm64 windows: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: DeterminateSystems/determinate-nix-action@v3.16.1 - uses: DeterminateSystems/magic-nix-cache-action@v13 - run: nix build .#kgctl-cross-windows-amd64 unit: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: DeterminateSystems/determinate-nix-action@v3.16.1 - uses: DeterminateSystems/magic-nix-cache-action@v13 - run: nix develop . --command go test -mod=vendor --race ./... e2e: runs-on: - nscloud-ubuntu-22.04-amd64-8x16-with-features - namespace-features:kernel.release-channel=bleeding-edge steps: - uses: actions/checkout@v6 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Build uses: docker/build-push-action@v6 with: context: . platforms: linux/amd64 tags: squat/kilo:test cache-from: type=gha cache-to: type=gha,mode=max load: "true" build-args: | VERSION=${{ github.sha }} - uses: DeterminateSystems/determinate-nix-action@v3.16.1 - uses: DeterminateSystems/magic-nix-cache-action@v13 - env: E2E_SKIP_TEARDOWN_ON_FAILURE: "true" run: nix develop . --command make e2e - name: Breakpoint if tests failed if: failure() uses: namespacelabs/breakpoint-action@v0 with: duration: 15m authorized-users: squat, leonnicolas lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: DeterminateSystems/determinate-nix-action@v3.16.1 - uses: DeterminateSystems/magic-nix-cache-action@v13 - run: nix flake check -L --show-trace container: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Extract Docker metadata id: meta uses: docker/metadata-action@v5 with: images: ghcr.io/${{ env.IMAGE_NAME }},docker.io/${{ env.IMAGE_NAME }} tags: type=sha,prefix= flavor: latest=true - name: Build uses: docker/build-push-action@v6 with: context: . platforms: linux/amd64, linux/arm64, linux/arm tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha cache-to: type=gha,mode=max build-args: | VERSION=${{ github.sha }} push: if: github.event_name != 'pull_request' needs: - vendor - build - linux - darwin - windows - unit - lint - container runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to GitHub Container Registry uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Extract Docker metadata id: meta uses: docker/metadata-action@v5 with: images: ghcr.io/${{ env.IMAGE_NAME }},docker.io/${{ env.IMAGE_NAME }} tags: type=sha,prefix= flavor: latest=true - name: Build and push id: push uses: docker/build-push-action@v6 with: context: . push: ${{ github.event_name != 'pull_request' && github.ref == 'refs/heads/main' }} platforms: linux/amd64, linux/arm64, linux/arm tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha cache-to: type=gha,mode=max build-args: | VERSION=${{ github.sha }} - name: Determine digest run: echo ${{ steps.push.outputs.digest }}