Skip to content

Initial commit

Initial commit #4

Workflow file for this run

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 }}