| name: Build Metrics Container |
| |
| permissions: |
| contents: read |
| |
| on: |
| push: |
| branches: |
| - main |
| paths: |
| - .github/workflows/build-metrics-container.yml |
| - '.ci/metrics/**' |
| pull_request: |
| branches: |
| - main |
| paths: |
| - .github/workflows/build-metrics-container.yml |
| - '.ci/metrics/**' |
| |
| jobs: |
| build-metrics-container: |
| if: github.repository_owner == 'llvm' |
| runs-on: ubuntu-24.04 |
| outputs: |
| container-name: ${{ steps.vars.outputs.container-name }} |
| container-name-tag: ${{ steps.vars.outputs.container-name-tag }} |
| container-filename: ${{ steps.vars.outputs.container-filename }} |
| steps: |
| - name: Checkout LLVM |
| uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 |
| with: |
| sparse-checkout: .ci/metrics/ |
| - name: Write Variables |
| id: vars |
| run: | |
| tag=`date +%s` |
| container_name="ghcr.io/$GITHUB_REPOSITORY_OWNER/metrics" |
| echo "container-name=$container_name" >> $GITHUB_OUTPUT |
| echo "container-name-tag=$container_name:$tag" >> $GITHUB_OUTPUT |
| echo "container-filename=$(echo $container_name:$tag | sed -e 's/\//-/g' -e 's/:/-/g').tar" >> $GITHUB_OUTPUT |
| - name: Build Container |
| working-directory: ./.ci/metrics |
| run: | |
| podman build -t ${{ steps.vars.outputs.container-name-tag }} -f Dockerfile . |
| # Save the container so we have it in case the push fails. This also |
| # allows us to separate the push step into a different job so we can |
| # maintain minimal permissions while building the container. |
| - name: Save Container Image |
| run: | |
| podman save ${{ steps.vars.outputs.container-name-tag }} > ${{ steps.vars.outputs.container-filename }} |
| - name: Upload Container Image |
| uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 |
| with: |
| name: container |
| path: ${{ steps.vars.outputs.container-filename }} |
| retention-days: 14 |
| |
| push-metrics-container: |
| if: github.event_name == 'push' |
| needs: |
| - build-metrics-container |
| permissions: |
| packages: write |
| runs-on: ubuntu-24.04 |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| steps: |
| - name: Download Container |
| uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 |
| with: |
| name: container |
| - name: Push Container |
| run: | |
| podman load -i ${{ needs.build-metrics-container.outputs.container-filename }} |
| podman tag ${{ needs.build-metrics-container.outputs.container-name-tag }} ${{ needs.build-metrics-container.outputs.container-name }}:latest |
| podman login -u ${{ github.actor }} -p $GITHUB_TOKEN ghcr.io |
| podman push ${{ needs.build-metrics-container.outputs.container-name-tag }} |
| podman push ${{ needs.build-metrics-container.outputs.container-name }}:latest |