summaryrefslogtreecommitdiff
path: root/.github/workflows/build-ci-container-tooling.yml
blob: 531da2ccbd446a960dbc637b536204f9ad65a17b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
name: Build CI Tooling Containers

permissions:
  contents: read

on:
  push:
    branches:
      - main
    paths:
      - .github/workflows/build-ci-container-tooling.yml
      - '.github/workflows/containers/github-action-ci-tooling/**'
      - llvm/utils/git/requirements_formatting.txt
      - llvm/utils/git/requirements_linting.txt
      - '.github/actions/build-container/**'
      - '.github/actions/push-container/**'
  pull_request:
    paths:
      - .github/workflows/build-ci-container-tooling.yml
      - '.github/workflows/containers/github-action-ci-tooling/**'
      - llvm/utils/git/requirements_formatting.txt
      - llvm/utils/git/requirements_linting.txt
      - '.github/actions/build-container/**'
      - '.github/actions/push-container/**'

jobs:
  build-ci-container-tooling:
    name: Build Container ${{ matrix.container-name }}
    if: github.repository_owner == 'llvm'
    runs-on: ubuntu-24.04
    strategy:
      fail-fast: false
      matrix:
        include:
          - container-name: format
            test-command: 'cd $HOME && clang-format --version | grep version && git-clang-format -h | grep usage && black --version | grep black'
          - container-name: lint
            test-command: 'cd $HOME && clang-tidy --version | grep version && clang-tidy-diff.py -h | grep usage'
          - container-name: abi-tests
            test-command: 'cd $HOME && abi-compliance-checker --help'
            target: abi-tests
    steps:
      - name: Checkout LLVM
        uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
        with:
          sparse-checkout: |
            .github/workflows/containers/github-action-ci-tooling/
            llvm/utils/git/requirements_formatting.txt
            llvm/utils/git/requirements_linting.txt
            clang-tools-extra/clang-tidy/tool/clang-tidy-diff.py
            .github/actions/build-container

      - name: Build Container
        uses: ./.github/actions/build-container
        with:
          container-name: ci-ubuntu-24.04-${{ matrix.container-name }}
          dockerfile: .github/workflows/containers/github-action-ci-tooling/Dockerfile
          target: ci-container-${{ matrix.target || format('code-{0}', matrix.container-name) }}
          test-command: ${{ matrix.test-command }}

  push-ci-container:
    if: github.event_name == 'push'
    needs:
      - build-ci-container-tooling
    permissions:
      packages: write
    runs-on: ubuntu-24.04
    steps:
      - name: Checkout LLVM
        uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
        with:
          sparse-checkout: |
            .github/actions/push-container

      - uses: ./.github/actions/push-container
        with:
          token: ${{ secrets.GITHUB_TOKEN }}