diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 56360bae..b9f59bcf 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -12,6 +12,7 @@ concurrency: env: NODE_OPTIONS: --enable-source-maps + version: "1.3.0" jobs: Build: @@ -239,25 +240,25 @@ jobs: platform: - linux/amd64 container: - - { distro: "ubuntu", image: "setup-cpp-ubuntu", BASE_VERSION: "24.04", tag: "24.04-1.3.0" } - - { distro: "ubuntu", image: "setup-cpp-ubuntu", BASE_VERSION: "22.04", tag: "22.04-1.3.0" } - - { distro: "ubuntu", image: "setup-cpp-ubuntu", BASE_VERSION: "20.04", tag: "20.04-1.3.0" } - - { distro: "fedora", image: "setup-cpp-fedora", tag: "40-1.3.0" } - - { distro: "arch", image: "setup-cpp-arch", tag: "base-1.3.0" } - - { distro: "alpine", image: "setup-cpp-alpine", BASE_VERSION: "22-alpine3.21", tag: "3.21-1.3.0" } + - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "24.04" } + - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "22.04" } + - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "20.04" } + - { distro: "fedora", image: "setup-cpp-fedora", tag: "40" } + - { distro: "arch", image: "setup-cpp-arch", tag: "base" } + - { distro: "alpine", image: "setup-cpp-alpine", tag: "3.21", base_version: "22-alpine3.21" } include: - os: ubuntu-24.04-arm platform: linux/arm64 - container: { distro: "ubuntu", image: "setup-cpp-ubuntu", BASE_VERSION: "24.04", tag: "24.04-1.3.0" } + container: { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "24.04" } - os: ubuntu-24.04-arm platform: linux/arm64 - container: { distro: "ubuntu", image: "setup-cpp-ubuntu", BASE_VERSION: "22.04", tag: "22.04-1.3.0" } + container: { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "22.04" } - os: ubuntu-24.04-arm platform: linux/arm64 - container: { distro: "ubuntu", image: "setup-cpp-ubuntu", BASE_VERSION: "20.04", tag: "20.04-1.3.0" } + container: { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "20.04" } - os: ubuntu-24.04-arm platform: linux/arm64 - container: { distro: "alpine", image: "setup-cpp-alpine", BASE_VERSION: "22-alpine3.21", tag: "3.21-1.3.0" } + container: { distro: "alpine", image: "setup-cpp-alpine", tag: "3.21", base_version: "22-alpine3.21" } steps: - uses: actions/checkout@v4 with: @@ -294,18 +295,21 @@ jobs: load: true provenance: false platforms: ${{ matrix.platform }} - tags: aminya/${{ matrix.container.image }}:${{ matrix.container.tag }}-${{ steps.platform.outputs.suffix }} - cache-from: type=registry,ref=aminya/${{ matrix.container.image }}:${{ matrix.container.tag }}-${{ steps.platform.outputs.suffix }} + tags: aminya/${{ matrix.container.image }}:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }} + cache-from: type=registry,ref=aminya/${{ matrix.container.image }}:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }} cache-to: type=inline - build-args: BASE_VERSION=${{ matrix.container.BASE_VERSION || '' }} + build-args: BASE_VERSION=${{ matrix.container.base_version || matrix.container.tag }} - name: Tag latest locally run: | - docker tag aminya/${{ matrix.container.image }}:${{ matrix.container.tag }}-${{ steps.platform.outputs.suffix }} aminya/${{ matrix.container.image }}:latest + docker tag aminya/${{ matrix.container.image }}:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }} aminya/${{ matrix.container.image }}:latest + docker tag aminya/${{ matrix.container.image }}:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }} aminya/${{ matrix.container.image }}:${{ matrix.container.tag }} - name: Push latest to Docker Hub if: ${{ github.event_name != 'pull_request' && matrix.container.distro != 'ubuntu' && matrix.container.distro != 'alpine' }} - run: docker push aminya/${{ matrix.container.image }}:latest + run: | + docker push aminya/${{ matrix.container.image }}:latest + docker push aminya/${{ matrix.container.image }}:${{ matrix.container.tag }} - name: Docker Readme for setup-cpp-${{matrix.container.distro }} if: ${{ github.event_name != 'pull_request' || contains(github.event.head_commit.message, '[push docker]') }} @@ -326,17 +330,20 @@ jobs: load: true provenance: false platforms: ${{ matrix.platform }} - tags: aminya/${{ matrix.container.image }}-llvm:${{ matrix.container.tag }}-${{ steps.platform.outputs.suffix }} - cache-from: type=registry,ref=aminya/${{ matrix.container.image }}-llvm:${{ matrix.container.tag }}-${{ steps.platform.outputs.suffix }} + tags: aminya/${{ matrix.container.image }}-llvm:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }} + cache-from: type=registry,ref=aminya/${{ matrix.container.image }}-llvm:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }} cache-to: type=inline - name: Tag latest locally run: | - docker tag aminya/${{ matrix.container.image }}-llvm:${{ matrix.container.tag }}-${{ steps.platform.outputs.suffix }} aminya/${{ matrix.container.image }}-llvm:latest + docker tag aminya/${{ matrix.container.image }}-llvm:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }} aminya/${{ matrix.container.image }}-llvm:latest + docker tag aminya/${{ matrix.container.image }}-llvm:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }} aminya/${{ matrix.container.image }}-llvm:${{ matrix.container.tag }} - name: Push latest to Docker Hub if: ${{ github.event_name != 'pull_request' && matrix.container.distro != 'ubuntu' && matrix.container.distro != 'alpine' }} - run: docker push aminya/${{ matrix.container.image }}-llvm:latest + run: | + docker push aminya/${{ matrix.container.image }}-llvm:latest + docker push aminya/${{ matrix.container.image }}-llvm:${{ matrix.container.tag }} - name: Docker Readme for setup-cpp-${{matrix.container.distro }}-llvm if: ${{ github.event_name != 'pull_request' || contains(github.event.head_commit.message, '[push docker]') }} @@ -355,7 +362,7 @@ jobs: file: ./dev/docker/examples/${{ matrix.container.distro }}-llvm.dockerfile push: false platforms: ${{ matrix.platform }} - tags: aminya/test-${{ matrix.container.image }}-llvm:${{ matrix.container.tag }} + tags: aminya/test-${{ matrix.container.image }}-llvm:${{ matrix.container.tag }}-${{ env.version }} - name: Build setup-cpp-${{matrix.container.distro }}-gcc id: build_gcc @@ -367,17 +374,20 @@ jobs: load: true provenance: false platforms: ${{ matrix.platform }} - tags: aminya/${{ matrix.container.image }}-gcc:${{ matrix.container.tag }}-${{ steps.platform.outputs.suffix }} - cache-from: type=registry,ref=aminya/${{ matrix.container.image }}-gcc:${{ matrix.container.tag }}-${{ steps.platform.outputs.suffix }} + tags: aminya/${{ matrix.container.image }}-gcc:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }} + cache-from: type=registry,ref=aminya/${{ matrix.container.image }}-gcc:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }} cache-to: type=inline - name: Tag latest locally run: | - docker tag aminya/${{ matrix.container.image }}-gcc:${{ matrix.container.tag }}-${{ steps.platform.outputs.suffix }} aminya/${{ matrix.container.image }}-gcc:latest + docker tag aminya/${{ matrix.container.image }}-gcc:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }} aminya/${{ matrix.container.image }}-gcc:latest + docker tag aminya/${{ matrix.container.image }}-gcc:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }} aminya/${{ matrix.container.image }}-gcc:${{ matrix.container.tag }} - name: Push latest to Docker Hub if: ${{ github.event_name != 'pull_request' && matrix.container.distro != 'ubuntu' && matrix.container.distro != 'alpine' }} - run: docker push aminya/${{ matrix.container.image }}-gcc:latest + run: | + docker push aminya/${{ matrix.container.image }}-gcc:latest + docker push aminya/${{ matrix.container.image }}-gcc:${{ matrix.container.tag }} - name: Docker Readme for setup-cpp-${{matrix.container.distro }}-gcc if: ${{ github.event_name != 'pull_request' || contains(github.event.head_commit.message, '[push docker]') }} @@ -396,7 +406,7 @@ jobs: file: ./dev/docker/examples/${{ matrix.container.distro }}-gcc.dockerfile push: false platforms: ${{ matrix.platform }} - tags: aminya/test-${{ matrix.container.image }}-gcc:${{ matrix.container.tag }} + tags: aminya/test-${{ matrix.container.image }}-gcc:${{ matrix.container.tag }}-${{ env.version }} - name: Build setup-cpp-${{matrix.container.distro }}-mingw id: build_mingw @@ -409,18 +419,20 @@ jobs: load: true provenance: false platforms: ${{ matrix.platform }} - tags: aminya/${{ matrix.container.image }}-mingw:${{ matrix.container.tag }}-${{ steps.platform.outputs.suffix }} - cache-from: type=registry,ref=aminya/${{ matrix.container.image }}-mingw:${{ matrix.container.tag }}-${{ steps.platform.outputs.suffix }} + tags: aminya/${{ matrix.container.image }}-mingw:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }} + cache-from: type=registry,ref=aminya/${{ matrix.container.image }}-mingw:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }} cache-to: type=inline - name: Tag latest locally if: ${{ matrix.container.distro != 'fedora' && !(matrix.container.distro == 'alpine' && matrix.platform == 'linux/arm64') }} run: | - docker tag aminya/${{ matrix.container.image }}-mingw:${{ matrix.container.tag }}-${{ steps.platform.outputs.suffix }} aminya/${{ matrix.container.image }}-mingw:latest - + docker tag aminya/${{ matrix.container.image }}-mingw:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }} aminya/${{ matrix.container.image }}-mingw:latest + docker tag aminya/${{ matrix.container.image }}-mingw:${{ matrix.container.tag }}-${{ env.version }}-${{ steps.platform.outputs.suffix }} aminya/${{ matrix.container.image }}-mingw:${{ matrix.container.tag }} - name: Push latest to Docker Hub if: ${{ github.event_name != 'pull_request' && matrix.container.distro != 'ubuntu' && matrix.container.distro != 'fedora' && matrix.container.distro != 'alpine' }} - run: docker push aminya/${{ matrix.container.image }}-mingw:latest + run: | + docker push aminya/${{ matrix.container.image }}-mingw:latest + docker push aminya/${{ matrix.container.image }}-mingw:${{ matrix.container.tag }} - name: Docker Readme for setup-cpp-${{matrix.container.distro }}-mingw if: ${{ github.event_name != 'pull_request' && matrix.container.distro != 'fedora' && !(matrix.container.distro == 'alpine' && matrix.platform == 'linux/arm64') }} @@ -439,7 +451,7 @@ jobs: file: ./dev/docker/examples/${{ matrix.container.distro }}-mingw.dockerfile push: false platforms: ${{ matrix.platform }} - tags: aminya/test-${{ matrix.container.image }}-mingw:${{ matrix.container.tag }} + tags: aminya/test-${{ matrix.container.image }}-mingw:${{ matrix.container.tag }}-${{ env.version }} Docker-Manifest: needs: [Docker] @@ -449,25 +461,25 @@ jobs: fail-fast: false matrix: container: - - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "20.04-1.3.0", suffix: "", latest: false } - - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "20.04-1.3.0", suffix: "-llvm", latest: false } - - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "20.04-1.3.0", suffix: "-gcc", latest: false } - - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "20.04-1.3.0", suffix: "-mingw", latest: false } + - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "20.04", suffix: "", latest: false } + - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "20.04", suffix: "-llvm", latest: false } + - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "20.04", suffix: "-gcc", latest: false } + - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "20.04", suffix: "-mingw", latest: false } - - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "22.04-1.3.0", suffix: "", latest: false } - - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "22.04-1.3.0", suffix: "-llvm", latest: false } - - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "22.04-1.3.0", suffix: "-gcc", latest: false } - - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "22.04-1.3.0", suffix: "-mingw", latest: false } + - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "22.04", suffix: "", latest: false } + - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "22.04", suffix: "-llvm", latest: false } + - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "22.04", suffix: "-gcc", latest: false } + - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "22.04", suffix: "-mingw", latest: false } - - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "24.04-1.3.0", suffix: "", latest: true } - - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "24.04-1.3.0", suffix: "-llvm", latest: true } - - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "24.04-1.3.0", suffix: "-gcc", latest: true } - - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "24.04-1.3.0", suffix: "-mingw", latest: true } + - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "24.04", suffix: "", latest: true } + - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "24.04", suffix: "-llvm", latest: true } + - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "24.04", suffix: "-gcc", latest: true } + - { distro: "ubuntu", image: "setup-cpp-ubuntu", tag: "24.04", suffix: "-mingw", latest: true } - - { distro: "alpine", image: "setup-cpp-alpine", tag: "3.21-1.3.0", suffix: "", latest: true } - - { distro: "alpine", image: "setup-cpp-alpine", tag: "3.21-1.3.0", suffix: "-llvm", latest: true } - - { distro: "alpine", image: "setup-cpp-alpine", tag: "3.21-1.3.0", suffix: "-gcc", latest: true } - - { distro: "alpine", image: "setup-cpp-alpine", tag: "3.21-1.3.0", suffix: "-mingw", latest: true } + - { distro: "alpine", image: "setup-cpp-alpine", tag: "3.21", suffix: "", latest: true } + - { distro: "alpine", image: "setup-cpp-alpine", tag: "3.21", suffix: "-llvm", latest: true } + - { distro: "alpine", image: "setup-cpp-alpine", tag: "3.21", suffix: "-gcc", latest: true } + - { distro: "alpine", image: "setup-cpp-alpine", tag: "3.21", suffix: "-mingw", latest: true } steps: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 @@ -478,10 +490,17 @@ jobs: username: aminya password: ${{ secrets.DOCKERHUB_TOKEN }} + - uses: Noelware/docker-manifest-action@0.4.3 + with: + inputs: aminya/${{ matrix.container.image }}${{ matrix.container.suffix }}:${{ matrix.container.tag }}-${{ env.version }} + images: aminya/${{ matrix.container.image }}${{ matrix.container.suffix }}:${{ matrix.container.tag }}-${{ env.version }}-amd64,aminya/${{ matrix.container.image }}${{ matrix.container.suffix }}:${{ matrix.container.tag }}-${{ env.version }}-arm64 + push: true + amend: true + - uses: Noelware/docker-manifest-action@0.4.3 with: inputs: aminya/${{ matrix.container.image }}${{ matrix.container.suffix }}:${{ matrix.container.tag }} - images: aminya/${{ matrix.container.image }}${{ matrix.container.suffix }}:${{ matrix.container.tag }}-amd64,aminya/${{ matrix.container.image }}${{ matrix.container.suffix }}:${{ matrix.container.tag }}-arm64 + images: aminya/${{ matrix.container.image }}${{ matrix.container.suffix }}:${{ matrix.container.tag }}-${{ env.version }}-amd64,aminya/${{ matrix.container.image }}${{ matrix.container.suffix }}:${{ matrix.container.tag }}-${{ env.version }}-arm64 push: true amend: true @@ -489,7 +508,7 @@ jobs: if: ${{ matrix.container.latest }} with: inputs: aminya/${{ matrix.container.image }}${{ matrix.container.suffix }}:latest - images: aminya/${{ matrix.container.image }}${{ matrix.container.suffix }}:${{ matrix.container.tag }}-amd64,aminya/${{ matrix.container.image }}${{ matrix.container.suffix }}:${{ matrix.container.tag }}-arm64 + images: aminya/${{ matrix.container.image }}${{ matrix.container.suffix }}:${{ matrix.container.tag }}-${{ env.version }}-amd64,aminya/${{ matrix.container.image }}${{ matrix.container.suffix }}:${{ matrix.container.tag }}-${{ env.version }}-arm64 push: true amend: true diff --git a/README.md b/README.md index 2674beee..60e7c41a 100644 --- a/README.md +++ b/README.md @@ -209,7 +209,14 @@ When using the `setup-cpp` action in GitHub Actions, by default it will also ins To provide fast development environments, `setup-cpp` provides several prebuilt docker images that have the tools you need. You can use these images as a base image for your project. -The names are in the format `aminya/setup-cpp-:-` and `aminya/setup-cpp--:-`. +The tags are in the following template: + +- Base image: `aminya/setup-cpp-ubuntu:24.04` +- Compiler image: `aminya/setup-cpp-ubuntu-llvm:24.04` +- Base image with pinned setup-cpp version: `aminya/setup-cpp-ubuntu:24.04-v1.3.0` +- Compiler image with pinned setup-cpp version: `aminya/setup-cpp-ubuntu-llvm:24.04-v1.3.0` + +The supported platforms are `ubuntu`, `alpine`, `fedora`, and `arch`. The supported compilers are `llvm`, `gcc`, and `mingw`. #### Ubuntu Images (amd64 and arm64) @@ -218,43 +225,43 @@ Setup-cpp provides prebuilt images for various Ubuntu versions (20.04, 22.04, 24 Base image with `cmake, ninja, task, vcpkg, python, make, cppcheck, gcovr, doxygen, ccache, conan, meson, cmakelang` for Ubuntu 24.04: ```dockerfile -FROM aminya/setup-cpp-ubuntu:24.04-1.3.0 AS builder +FROM aminya/setup-cpp-ubuntu:24.04 AS builder ``` Image with `llvm` and the base tools: ```dockerfile -FROM aminya/setup-cpp-ubuntu-llvm:24.04-1.3.0 AS builder +FROM aminya/setup-cpp-ubuntu-llvm:24.04 AS builder ``` Image with `gcc` and the base tools: ```dockerfile -FROM aminya/setup-cpp-ubuntu-gcc:24.04-1.3.0 AS builder +FROM aminya/setup-cpp-ubuntu-gcc:24.04 AS builder ``` Image with `mingw` and the base tools: ```dockerfile -FROM aminya/setup-cpp-ubuntu-mingw:24.04-1.3.0 AS builder +FROM aminya/setup-cpp-ubuntu-mingw:24.04 AS builder ``` There are also the variants for Ubuntu `22.04` ```dockerfile -FROM aminya/setup-cpp-ubuntu:22.04-1.3.0 AS builder -FROM aminya/setup-cpp-ubuntu-llvm:22.04-1.3.0 AS builder -FROM aminya/setup-cpp-ubuntu-gcc:22.04-1.3.0 AS builder -FROM aminya/setup-cpp-ubuntu-mingw:22.04-1.3.0 AS builder +FROM aminya/setup-cpp-ubuntu:22.04 AS builder +FROM aminya/setup-cpp-ubuntu-llvm:22.04 AS builder +FROM aminya/setup-cpp-ubuntu-gcc:22.04 AS builder +FROM aminya/setup-cpp-ubuntu-mingw:22.04 AS builder ``` And for Ubuntu `20.04`: ```dockerfile -FROM aminya/setup-cpp-ubuntu:20.04-1.3.0 AS builder -FROM aminya/setup-cpp-ubuntu-llvm:20.04-1.3.0 AS builder -FROM aminya/setup-cpp-ubuntu-gcc:20.04-1.3.0 AS builder -FROM aminya/setup-cpp-ubuntu-mingw:20.04-1.3.0 AS builder +FROM aminya/setup-cpp-ubuntu:20.04 AS builder +FROM aminya/setup-cpp-ubuntu-llvm:20.04 AS builder +FROM aminya/setup-cpp-ubuntu-gcc:20.04 AS builder +FROM aminya/setup-cpp-ubuntu-mingw:20.04 AS builder ``` #### Fedora Images (amd64) @@ -264,25 +271,25 @@ FROM aminya/setup-cpp-ubuntu-mingw:20.04-1.3.0 AS builder Base image with `cmake, ninja, task, vcpkg, python, make, cppcheck, gcovr, doxygen, ccache, conan, meson, cmakelang` ```dockerfile -FROM aminya/setup-cpp-fedora:40-1.3.0 AS builder +FROM aminya/setup-cpp-fedora:40 AS builder ``` Image with `llvm` and the base tools: ```dockerfile -FROM aminya/setup-cpp-fedora-llvm:40-1.3.0 AS builder +FROM aminya/setup-cpp-fedora-llvm:40 AS builder ``` Image with `gcc` and the base tools: ```dockerfile -FROM aminya/setup-cpp-fedora-gcc:40-1.3.0 AS builder +FROM aminya/setup-cpp-fedora-gcc:40 AS builder ``` Image with `mingw` and the base tools: ```dockerfile -FROM aminya/setup-cpp-fedora-mingw:40-1.3.0 AS builder +FROM aminya/setup-cpp-fedora-mingw:40 AS builder ``` @@ -294,25 +301,25 @@ FROM aminya/setup-cpp-fedora-mingw:40-1.3.0 AS builder Base image with `cmake, ninja, task, vcpkg, python, make, cppcheck, gcovr, doxygen, ccache, conan, meson, cmakelang` ```dockerfile -FROM aminya/setup-cpp-arch:base-1.3.0 AS builder +FROM aminya/setup-cpp-arch:base AS builder ``` Image with `llvm` and the base tools: ```dockerfile -FROM aminya/setup-cpp-arch-llvm:base-1.3.0 AS builder +FROM aminya/setup-cpp-arch-llvm:base AS builder ``` Image with `gcc` and the base tools: ```dockerfile -FROM aminya/setup-cpp-arch-gcc:base-1.3.0 AS builder +FROM aminya/setup-cpp-arch-gcc:base AS builder ``` Image with `mingw` and the base tools: ```dockerfile -FROM aminya/setup-cpp-arch-mingw:base-1.3.0 AS builder +FROM aminya/setup-cpp-arch-mingw:base AS builder ``` diff --git a/README_DOCKER.md b/README_DOCKER.md index 0dbd0893..b97ed127 100644 --- a/README_DOCKER.md +++ b/README_DOCKER.md @@ -16,7 +16,14 @@ See https://github.com/aminya/setup-cpp for more information about using `setup- To provide fast development environments, `setup-cpp` provides several prebuilt docker images that have the tools you need. You can use these images as a base image for your project. -The names are in the format `aminya/setup-cpp-:-` and `aminya/setup-cpp--:-`. +The tags are in the following template: + +- Base image: `aminya/setup-cpp-ubuntu:24.04` +- Compiler image: `aminya/setup-cpp-ubuntu-llvm:24.04` +- Base image with pinned setup-cpp version: `aminya/setup-cpp-ubuntu:24.04-v1.3.0` +- Compiler image with pinned setup-cpp version: `aminya/setup-cpp-ubuntu-llvm:24.04-v1.3.0` + +The supported platforms are `ubuntu`, `alpine`, `fedora`, and `arch`. The supported compilers are `llvm`, `gcc`, and `mingw`. #### Ubuntu Images (amd64 and arm64) @@ -25,43 +32,71 @@ Setup-cpp provides prebuilt images for various Ubuntu versions (20.04, 22.04, 24 Base image with `cmake, ninja, task, vcpkg, python, make, cppcheck, gcovr, doxygen, ccache, conan, meson, cmakelang` for Ubuntu 24.04: ```dockerfile -FROM aminya/setup-cpp-ubuntu:24.04-1.3.0 AS builder +FROM aminya/setup-cpp-ubuntu:24.04 AS builder ``` Image with `llvm` and the base tools: ```dockerfile -FROM aminya/setup-cpp-ubuntu-llvm:24.04-1.3.0 AS builder +FROM aminya/setup-cpp-ubuntu-llvm:24.04 AS builder ``` Image with `gcc` and the base tools: ```dockerfile -FROM aminya/setup-cpp-ubuntu-gcc:24.04-1.3.0 AS builder +FROM aminya/setup-cpp-ubuntu-gcc:24.04 AS builder ``` Image with `mingw` and the base tools: ```dockerfile -FROM aminya/setup-cpp-ubuntu-mingw:24.04-1.3.0 AS builder +FROM aminya/setup-cpp-ubuntu-mingw:24.04 AS builder ``` There are also the variants for Ubuntu `22.04` ```dockerfile -FROM aminya/setup-cpp-ubuntu:22.04-1.3.0 AS builder -FROM aminya/setup-cpp-ubuntu-llvm:22.04-1.3.0 AS builder -FROM aminya/setup-cpp-ubuntu-gcc:22.04-1.3.0 AS builder -FROM aminya/setup-cpp-ubuntu-mingw:22.04-1.3.0 AS builder +FROM aminya/setup-cpp-ubuntu:22.04 AS builder +FROM aminya/setup-cpp-ubuntu-llvm:22.04 AS builder +FROM aminya/setup-cpp-ubuntu-gcc:22.04 AS builder +FROM aminya/setup-cpp-ubuntu-mingw:22.04 AS builder ``` And for Ubuntu `20.04`: ```dockerfile -FROM aminya/setup-cpp-ubuntu:20.04-1.3.0 AS builder -FROM aminya/setup-cpp-ubuntu-llvm:20.04-1.3.0 AS builder -FROM aminya/setup-cpp-ubuntu-gcc:20.04-1.3.0 AS builder -FROM aminya/setup-cpp-ubuntu-mingw:20.04-1.3.0 AS builder +FROM aminya/setup-cpp-ubuntu:20.04 AS builder +FROM aminya/setup-cpp-ubuntu-llvm:20.04 AS builder +FROM aminya/setup-cpp-ubuntu-gcc:20.04 AS builder +FROM aminya/setup-cpp-ubuntu-mingw:20.04 AS builder +``` + +#### Alpine Images (amd64 and arm64) + +Setup-cpp provides prebuilt images for Alpine with support for base tools, and compilers `llvm`, `gcc`, and `mingw` available for `amd64` and `arm64` architectures. + +Base image with `cmake, ninja, task, vcpkg, python, make, cppcheck, gcovr, doxygen, ccache, conan, meson, cmakelang` for Alpine 3.18: + +```dockerfile +FROM aminya/setup-cpp-alpine:3.21 AS builder +``` + +Image with `llvm` and the base tools: + +```dockerfile +FROM aminya/setup-cpp-alpine-llvm:3.21 AS builder +``` + +Image with `gcc` and the base tools: + +```dockerfile +FROM aminya/setup-cpp-alpine-gcc:3.21 AS builder +``` + +Image with `mingw` and the base tools: + +```dockerfile +FROM aminya/setup-cpp-alpine-mingw:3.21 AS builder ``` #### Fedora Images (amd64) @@ -71,25 +106,25 @@ FROM aminya/setup-cpp-ubuntu-mingw:20.04-1.3.0 AS builder Base image with `cmake, ninja, task, vcpkg, python, make, cppcheck, gcovr, doxygen, ccache, conan, meson, cmakelang` ```dockerfile -FROM aminya/setup-cpp-fedora:40-1.3.0 AS builder +FROM aminya/setup-cpp-fedora:40 AS builder ``` Image with `llvm` and the base tools: ```dockerfile -FROM aminya/setup-cpp-fedora-llvm:40-1.3.0 AS builder +FROM aminya/setup-cpp-fedora-llvm:40 AS builder ``` Image with `gcc` and the base tools: ```dockerfile -FROM aminya/setup-cpp-fedora-gcc:40-1.3.0 AS builder +FROM aminya/setup-cpp-fedora-gcc:40 AS builder ``` Image with `mingw` and the base tools: ```dockerfile -FROM aminya/setup-cpp-fedora-mingw:40-1.3.0 AS builder +FROM aminya/setup-cpp-fedora-mingw:40 AS builder ``` @@ -101,25 +136,25 @@ FROM aminya/setup-cpp-fedora-mingw:40-1.3.0 AS builder Base image with `cmake, ninja, task, vcpkg, python, make, cppcheck, gcovr, doxygen, ccache, conan, meson, cmakelang` ```dockerfile -FROM aminya/setup-cpp-arch:base-1.3.0 AS builder +FROM aminya/setup-cpp-arch:base AS builder ``` Image with `llvm` and the base tools: ```dockerfile -FROM aminya/setup-cpp-arch-llvm:base-1.3.0 AS builder +FROM aminya/setup-cpp-arch-llvm:base AS builder ``` Image with `gcc` and the base tools: ```dockerfile -FROM aminya/setup-cpp-arch-gcc:base-1.3.0 AS builder +FROM aminya/setup-cpp-arch-gcc:base AS builder ``` Image with `mingw` and the base tools: ```dockerfile -FROM aminya/setup-cpp-arch-mingw:base-1.3.0 AS builder +FROM aminya/setup-cpp-arch-mingw:base AS builder ```