Initial commit #4
This file contains 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: clang-format | |
on: | |
push: | |
branches: | |
- main | |
paths: | |
# Workflow file itself | |
- '.github/workflows/clang-format.yml' | |
# Dockerfile | |
- 'clang-format.dockerfile' | |
# Patches | |
- 'patches/**' | |
workflow_dispatch: | |
permissions: | |
packages: write | |
contents: read | |
jobs: | |
push_to_registry: | |
name: Push Docker image (clang-format-${{ matrix.cfg.tag }}) | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
# clang-format was added with LLVM 4.0.0 | |
cfg: | |
# LLVM 18.x | |
- { tag: "v18.1.5", version: "llvmorg-18.1.5", latest: true, latest_major: true, latest_minor: true } | |
- { tag: "v18.1.4", version: "llvmorg-18.1.4", latest: false, latest_major: false, latest_minor: false } | |
- { tag: "v18.1.3", version: "llvmorg-18.1.3", latest: false, latest_major: false, latest_minor: false } | |
- { tag: "v18.1.2", version: "llvmorg-18.1.2", latest: false, latest_major: false, latest_minor: false } | |
- { tag: "v18.1.1", version: "llvmorg-18.1.1", latest: false, latest_major: false, latest_minor: false } | |
- { tag: "v18.1.0", version: "llvmorg-18.1.0", latest: false, latest_major: false, latest_minor: false } | |
# LLVM 17.x | |
- { tag: "v17.0.6", version: "llvmorg-17.0.6", latest: false, latest_major: true, latest_minor: true } | |
- { tag: "v17.0.5", version: "llvmorg-17.0.5", latest: false, latest_major: false, latest_minor: false } | |
- { tag: "v17.0.4", version: "llvmorg-17.0.4", latest: false, latest_major: false, latest_minor: false } | |
- { tag: "v17.0.3", version: "llvmorg-17.0.3", latest: false, latest_major: false, latest_minor: false } | |
- { tag: "v17.0.2", version: "llvmorg-17.0.2", latest: false, latest_major: false, latest_minor: false } | |
- { tag: "v17.0.1", version: "llvmorg-17.0.1", latest: false, latest_major: false, latest_minor: false } | |
- { tag: "v17.0.0", version: "llvmorg-17.0.0", latest: false, latest_major: false, latest_minor: false } | |
# LLVM 16.x | |
- { tag: "v16.0.6", version: "llvmorg-16.0.6", latest: false, latest_major: true, latest_minor: true } | |
- { tag: "v16.0.5", version: "llvmorg-16.0.5", latest: false, latest_major: false, latest_minor: false } | |
- { tag: "v16.0.4", version: "llvmorg-16.0.4", latest: false, latest_major: false, latest_minor: false } | |
- { tag: "v16.0.3", version: "llvmorg-16.0.3", latest: false, latest_major: false, latest_minor: false } | |
- { tag: "v16.0.2", version: "llvmorg-16.0.2", latest: false, latest_major: false, latest_minor: false } | |
- { tag: "v16.0.1", version: "llvmorg-16.0.1", latest: false, latest_major: false, latest_minor: false } | |
- { tag: "v16.0.0", version: "llvmorg-16.0.0", latest: false, latest_major: false, latest_minor: false } | |
# LLVM 15.x | |
- { tag: "v15.0.7", version: "llvmorg-15.0.7", latest: false, latest_major: true, latest_minor: true } | |
- { tag: "v15.0.6", version: "llvmorg-15.0.6", latest: false, latest_major: false, latest_minor: false } | |
- { tag: "v15.0.5", version: "llvmorg-15.0.5", latest: false, latest_major: false, latest_minor: false } | |
- { tag: "v15.0.4", version: "llvmorg-15.0.4", latest: false, latest_major: false, latest_minor: false } | |
- { tag: "v15.0.3", version: "llvmorg-15.0.3", latest: false, latest_major: false, latest_minor: false } | |
- { tag: "v15.0.2", version: "llvmorg-15.0.2", latest: false, latest_major: false, latest_minor: false } | |
- { tag: "v15.0.1", version: "llvmorg-15.0.1", latest: false, latest_major: false, latest_minor: false } | |
- { tag: "v15.0.0", version: "llvmorg-15.0.0", latest: false, latest_major: false, latest_minor: false } | |
# LLVM 14.x | |
- { tag: "v14.0.6", version: "llvmorg-14.0.6", latest: false, latest_major: true, latest_minor: true } | |
- { tag: "v14.0.5", version: "llvmorg-14.0.5", latest: false, latest_major: false, latest_minor: false } | |
- { tag: "v14.0.4", version: "llvmorg-14.0.4", latest: false, latest_major: false, latest_minor: false } | |
- { tag: "v14.0.3", version: "llvmorg-14.0.3", latest: false, latest_major: false, latest_minor: false } | |
- { tag: "v14.0.2", version: "llvmorg-14.0.2", latest: false, latest_major: false, latest_minor: false } | |
- { tag: "v14.0.1", version: "llvmorg-14.0.1", latest: false, latest_major: false, latest_minor: false } | |
- { tag: "v14.0.0", version: "llvmorg-14.0.0", latest: false, latest_major: false, latest_minor: false } | |
# LLVM 13.x | |
- { tag: "v13.0.1", version: "llvmorg-13.0.1", latest: false, latest_major: true, latest_minor: true } | |
- { tag: "v13.0.0", version: "llvmorg-13.0.0", latest: false, latest_major: false, latest_minor: false } | |
# LLVM 12.x | |
- { tag: "v12.0.1", version: "llvmorg-12.0.1", latest: false, latest_major: true, latest_minor: true } | |
- { tag: "v12.0.0", version: "llvmorg-12.0.0", latest: false, latest_major: false, latest_minor: false } | |
# LLVM 11.x | |
- { tag: "v11.1.0", version: "llvmorg-11.1.0", latest: false, latest_major: true, latest_minor: true } | |
- { tag: "v11.0.1", version: "llvmorg-11.0.1", latest: false, latest_major: false, latest_minor: true } | |
- { tag: "v11.0.0", version: "llvmorg-11.0.0", latest: false, latest_major: false, latest_minor: false } | |
# LLVM 10.x | |
- { tag: "v10.0.1", version: "llvmorg-10.0.1", latest: false, latest_major: true, latest_minor: true } | |
- { tag: "v10.0.0", version: "llvmorg-10.0.0", latest: false, latest_major: false, latest_minor: false } | |
# LLVM 9.x | |
- { tag: "v9.0.1", version: "llvmorg-9.0.1", latest: false, latest_major: true, latest_minor: true } | |
- { tag: "v9.0.0", version: "llvmorg-9.0.0", latest: false, latest_major: false, latest_minor: false } | |
# LLVM 8.x | |
- { tag: "v8.0.1", version: "llvmorg-8.0.1", latest: false, latest_major: true, latest_minor: true } | |
- { tag: "v8.0.0", version: "llvmorg-8.0.0", latest: false, latest_major: false, latest_minor: false } | |
# LLVM 7.x | |
- { tag: "v7.1.0", version: "llvmorg-7.1.0", latest: false, latest_major: true, latest_minor: true } | |
- { tag: "v7.0.1", version: "llvmorg-7.0.1", latest: false, latest_major: false, latest_minor: true } | |
- { tag: "v7.0.0", version: "llvmorg-7.0.0", latest: false, latest_major: false, latest_minor: false } | |
# LLVM 6.x | |
- { tag: "v6.0.1", version: "llvmorg-6.0.1", latest: false, latest_major: true, latest_minor: true } | |
- { tag: "v6.0.0", version: "llvmorg-6.0.0", latest: false, latest_major: false, latest_minor: false } | |
# LLVM 5.x | |
- { tag: "v5.0.2", version: "llvmorg-5.0.2", latest: false, latest_major: true, latest_minor: true } | |
- { tag: "v5.0.1", version: "llvmorg-5.0.1", latest: false, latest_major: false, latest_minor: false } | |
- { tag: "v5.0.0", version: "llvmorg-5.0.0", latest: false, latest_major: false, latest_minor: false } | |
# LLVM 4.x | |
- { tag: "v4.0.1", version: "llvmorg-4.0.1", latest: false, latest_major: true, latest_minor: true } | |
- { tag: "v4.0.0", version: "llvmorg-4.0.0", latest: false, latest_major: false, latest_minor: false } | |
steps: | |
- name: Check out the repo | |
uses: actions/checkout@v4 | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
# list of Docker images to use as base name for tags | |
images: | | |
ams21/clang-format | |
ghcr.io/ams21/clang-format | |
flavor: | | |
latest=${{ matrix.cfg.latest }} | |
prefix= | |
suffix= | |
# generate Docker tags based on the following events/attributes | |
tags: | | |
type=pep440,pattern={{version}},value=${{ matrix.cfg.tag }} | |
type=pep440,pattern={{major}},value=${{ matrix.cfg.tag }},enable=${{ matrix.cfg.latest_major }} | |
type=pep440,pattern={{major}}.{{minor}},value=${{ matrix.cfg.tag }},enable=${{ matrix.cfg.latest_minor }} | |
- name: Docker Setup QEMU | |
uses: docker/[email protected] | |
- name: Set up Docker Buildx | |
uses: docker/[email protected] | |
- name: Log in to Docker Hub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_PASSWORD }} | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Build and push Docker image | |
uses: docker/[email protected] | |
with: | |
context: ./ | |
file: clang-format.dockerfile | |
build-args: "VERSION=${{ matrix.cfg.version }}" | |
push: true | |
platforms: "linux/amd64,linux/arm64" | |
annotations: ${{ steps.meta.outputs.annotations }} | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} |