| name: Build CI Container | |
| permissions: | |
| contents: read | |
| on: | |
| push: | |
| branches: | |
| - main | |
| paths: | |
| - .github/workflows/build-ci-container.yml | |
| - '.github/workflows/containers/github-action-ci/**' | |
| - '.github/actions/build-container/**' | |
| - '.github/actions/push-container/**' | |
| pull_request: | |
| paths: | |
| - .github/workflows/build-ci-container.yml | |
| - '.github/workflows/containers/github-action-ci/**' | |
| - '.github/actions/build-container/**' | |
| - '.github/actions/push-container/**' | |
| jobs: | |
| build-ci-container: | |
| name: Build Container ${{ matrix.container-name }} ${{ (contains(matrix.runs-on, 'arm') && 'ARM64') || 'X64' }} | |
| if: github.repository_owner == 'llvm' | |
| runs-on: ${{ matrix.runs-on }} | |
| strategy: | |
| matrix: | |
| runs-on: | |
| - depot-ubuntu-24.04-16 | |
| - depot-ubuntu-24.04-arm-16 | |
| container-name: | |
| - '' | |
| - agent | |
| test-command: | |
| - cd $HOME && printf '#include <iostream>\nint main(int argc, char **argv) { std::cout << "Hello\\n"; }' | clang++ -x c++ - && ./a.out | grep Hello | |
| steps: | |
| - name: Checkout LLVM | |
| uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 | |
| with: | |
| persist-credentials: false | |
| sparse-checkout: | | |
| .github/workflows/containers/github-action-ci/ | |
| .github/actions/build-container | |
| # TODO(boomanaiden154): This is a temporary work-around for AArch64 that | |
| # we should remove once the depot images no longer have the lock in them | |
| # by default. | |
| - name: Wait for apt-get to finish | |
| if: runner.arch == 'ARM64' | |
| run: | | |
| while pgrep "apt-get" > /dev/null; do | |
| echo "Waiting for apt-get to finish" | |
| sleep 1 | |
| done | |
| - name: Build Container | |
| uses: ./.github/actions/build-container | |
| with: | |
| container-name: ci-ubuntu-26.04${{ matrix.container-name && format('-{0}', matrix.container-name)}} | |
| context: .github/workflows/containers/github-action-ci/ | |
| dockerfile: .github/workflows/containers/github-action-ci/Dockerfile | |
| target: ci-container${{ matrix.container-name && format('-{0}', matrix.container-name) }} | |
| test-command: ${{ matrix.test-command }} | |
| push-ci-container: | |
| if: github.event_name == 'push' | |
| needs: | |
| - build-ci-container | |
| permissions: | |
| packages: write | |
| runs-on: ubuntu-26.04 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| steps: | |
| - name: Checkout LLVM | |
| uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 | |
| with: | |
| persist-credentials: false | |
| sparse-checkout: | | |
| .github/actions/push-container | |
| - uses: ./.github/actions/push-container | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} |