From 90ca00c1a5592c290af7f9b0d2845b880cb53098 Mon Sep 17 00:00:00 2001 From: Arseniy Obolenskiy Date: Mon, 16 Jun 2025 10:59:49 +0200 Subject: [PATCH] Add PPC Ubuntu Docker image and use it on CI --- .github/workflows/docker.yml | 46 ++++++++++++++++++++++++++++++++++++ docker/ubuntu.Dockerfile | 28 ++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 .github/workflows/docker.yml create mode 100644 docker/ubuntu.Dockerfile diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 00000000..82eea207 --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,46 @@ +on: + push: + branches: + - master + paths: + - 'docker/**' + pull_request_target: + paths: + - 'docker/**' + +permissions: + contents: read + packages: write + +jobs: + build-and-push: + name: Build & Push Docker Image + runs-on: ubuntu-latest + + steps: + - name: Check out code + uses: actions/checkout@v3 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + with: + platforms: linux/amd64,linux/arm64 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Log in to GHCR + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.DOCKER_TOKEN }} + + - name: Build and push multi-arch image + uses: docker/build-push-action@v4 + with: + context: . + file: ./docker/ubuntu.Dockerfile + platforms: linux/amd64,linux/arm64 + push: true # ${{ github.ref == 'refs/heads/master' }} + tags: ghcr.io/learning-process/ppc-ubuntu:latest diff --git a/docker/ubuntu.Dockerfile b/docker/ubuntu.Dockerfile new file mode 100644 index 00000000..99b70ede --- /dev/null +++ b/docker/ubuntu.Dockerfile @@ -0,0 +1,28 @@ +FROM ubuntu:24.04 + +ENV DEBIAN_FRONTEND=noninteractive + +RUN set -e \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + build-essential \ + ca-certificates curl wget gnupg lsb-release software-properties-common \ + python3 python3-pip \ + ninja-build cmake make \ + ccache \ + valgrind \ + libmpich-dev mpich \ + openmpi-bin openmpi-common libopenmpi-dev \ + libomp-dev \ + gcc-14 g++-14 \ + gcovr \ + && wget -q https://apt.llvm.org/llvm.sh \ + && chmod +x llvm.sh \ + && ./llvm.sh 20 all \ + && rm llvm.sh \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +ENV CC=gcc-14 CXX=g++-14 + +CMD ["bash"]