ci(ghcr): allow manual dispatch to build images for .github PRs #2891
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build GHCR images | |
| on: | |
| push: | |
| branches: ["main"] | |
| paths: | |
| - "**/*" | |
| - "!.github/**" # Important: Exclude pushes related to .github from auto-run | |
| - "!.github/workflows/**" # Important: Exclude pushes related to .github/workflows from auto-run | |
| - "!.github/actions/**" # Important: Exclude pushes related to .github/actions from auto-run | |
| pull_request: | |
| branches: ["main"] | |
| paths: | |
| - "**/*" | |
| - "!.github/**" # Important: Exclude PRs related to .github from auto-run | |
| - "!.github/workflows/**" # Important: Exclude PRs related to .github/workflows from auto-run | |
| - "!.github/actions/**" # Important: Exclude PRs related to .github/actions from auto-run | |
| # Pull requests touching .github are excluded from the automatic runs above, | |
| # since the workflow definition that would run is the one from the pull | |
| # request. This is the deliberate way to run the ghcr build for them anyway, by | |
| # someone with write access. The job conditions below allow for it. | |
| workflow_dispatch: | |
| env: | |
| REGISTRY_IMAGE: ghcr.io/${{ github.repository }} | |
| permissions: | |
| contents: read | |
| packages: write | |
| id-token: write | |
| attestations: write | |
| artifact-metadata: write | |
| jobs: | |
| check_paths: | |
| uses: ./.github/workflows/check_paths.yml | |
| check_if_pr_from_outside_repo: | |
| needs: check_paths | |
| if: needs.check_paths.outputs.githubfolder == 'false' || github.event_name == 'workflow_dispatch' | |
| uses: ./.github/workflows/check_if_pr_from_outside_repo.yml | |
| teslamate_build: | |
| name: Build images | |
| needs: | |
| - check_paths | |
| - check_if_pr_from_outside_repo | |
| if: (needs.check_paths.outputs.githubfolder == 'false' && needs.check_if_pr_from_outside_repo.outputs.is_pr_from_outside_repo == 'false') || (github.event_name == 'workflow_dispatch' && needs.check_if_pr_from_outside_repo.outputs.is_pr_from_outside_repo == 'false') | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - platform: "linux/amd64" | |
| runs_on: "ubuntu-24.04" | |
| cache_id: amd64 | |
| - platform: "linux/arm64" | |
| runs_on: "ubuntu-24.04-arm" | |
| cache_id: arm64 | |
| runs-on: ${{ matrix.runs_on }} | |
| timeout-minutes: 10 | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| - name: Buildx | |
| uses: ./.github/actions/build | |
| with: | |
| docker_password: ${{ secrets.DOCKER_PASSWORD }} | |
| repository_owner: ${{ github.repository_owner }} | |
| repository: ${{ github.repository }} | |
| github_token: ${{ secrets.GITHUB_TOKEN }} | |
| version: ${{ github.head_ref || github.ref_name }} | |
| labels: | | |
| org.opencontainers.image.version=${{ github.ref || github.ref_name }} | |
| teslamate_merge: | |
| name: Merge GHCR images | |
| needs: | |
| - check_paths | |
| - teslamate_build | |
| if: needs.check_paths.outputs.githubfolder == 'false' || github.event_name == 'workflow_dispatch' | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 10 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| - name: Login to GitHub Container Registry | |
| uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.repository_owner }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Merge | |
| id: merge | |
| uses: ./.github/actions/merge | |
| with: | |
| image: ${{ env.REGISTRY_IMAGE }} | |
| grafana: | |
| needs: | |
| - check_paths | |
| - check_if_pr_from_outside_repo | |
| if: (needs.check_paths.outputs.githubfolder == 'false' && needs.check_if_pr_from_outside_repo.outputs.is_pr_from_outside_repo == 'false') || (github.event_name == 'workflow_dispatch' && needs.check_if_pr_from_outside_repo.outputs.is_pr_from_outside_repo == 'false') | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| - name: Login to GitHub Container Registry | |
| uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.repository_owner }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - uses: ./.github/actions/grafana | |
| with: | |
| image: ${{ env.REGISTRY_IMAGE }}/grafana | |
| labels: | | |
| org.opencontainers.image.version=${{ github.ref || github.ref_name }} |