name: Build Docker images for PRs on: pull_request: branches: - main concurrency: group: ${{ github.workflow }}-$${{ github.head_ref || github.run_id }} cancel-in-progress: true jobs: build: runs-on: ubuntu-latest permissions: write-all steps: - uses: actions/checkout@v4 with: fetch-depth: 2 - name: Get changed files id: changed-files uses: dorny/paths-filter@v3 with: filters: | files: - '*.nix' - 'go.*' - '**/*.go' - 'integration_test/' - 'config-example.yaml' - '.ko.yaml' - uses: DeterminateSystems/nix-installer-action@main if: steps.changed-files.outputs.files == 'true' - uses: DeterminateSystems/magic-nix-cache-action@main if: steps.changed-files.outputs.files == 'true' - uses: actions/github-script@v6 id: get_pr_data with: script: | return ( await github.rest.repos.listPullRequestsAssociatedWithCommit({ commit_sha: context.sha, owner: context.repo.owner, repo: context.repo.repo, }) ).data[0]; - name: Run ko build id: build if: steps.changed-files.outputs.files == 'true' env: KO_DOCKER_REPO: ghcr.io/${{ github.repository_owner }}/headscale TAG_PR_NAME: pr-${{ fromJson(steps.get_pr_data.outputs.result).number }} TAG_SHA: ${{ github.sha }} run: | ko build --tags=$TAG_PR_NAME,$TAG_SHA ./cmd/headscale