| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- 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.15.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.15.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.15.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.15.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.15.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.15.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.15.1
- - uses: DeterminateSystems/magic-nix-cache-action@v13
- - run: nix develop . --command go test -mod=vendor --race ./...
- e2e:
- runs-on: ubuntu-latest
- 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.15.1
- - uses: DeterminateSystems/magic-nix-cache-action@v13
- - run: nix develop . --command make e2e
- lint:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v6
- - uses: DeterminateSystems/determinate-nix-action@v3.15.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 }}
|