diff --git a/.github/workflows/docker-autobuild.yml b/.github/workflows/docker-autobuild.yml new file mode 100644 index 00000000..9e1ac660 --- /dev/null +++ b/.github/workflows/docker-autobuild.yml @@ -0,0 +1,102 @@ +name: HyperCPU CI/CD Pipeline (update Docker images) + +on: + schedule: + - cron: "0 0 */7 * *" + +permissions: + contents: read + + +jobs: + build: + runs-on: ubuntu-latest + name: "Update ${{ matrix.config.name }} Docker image" + strategy: + matrix: + config: + - tag: fedora + name: Fedora + - tag: debian-stable + name: Debian Stable + - tag: debian-unstable + name: Debian Unstable + - tag: archlinux + name: Arch Linux + - tag: gentoo-glibc + name: Gentoo GLibc + - tag: alpine + name: Alpine + - tag: ubuntu + name: Ubuntu + + steps: + - name: Install Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to DockerHub + uses: docker/login-action@v3 + with: + username: hyperwin + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 2 + submodules: true + + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: "{{ defaultContext }}:docker/${{ matrix.config.tag }}" + push: true + tags: hyperwin/hcpu-ci:${{ matrix.config.tag }} + + build-gentoo-musl-stage1: + runs-on: ubuntu-latest + name: "Update Gentoo Musl Docker image - stage 1" + steps: + - name: Login to DockerHub + uses: docker/login-action@v3 + with: + username: hyperwin + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 2 + submodules: true + + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: "{{ defaultContext }}:docker/gentoo-musl/stage1" + push: true + tags: hyperwin/hcpu-ci:gentoo-musl-build + + build-gentoo-musl-stage2: + runs-on: ubuntu-latest + name: "Update Gentoo Musl Docker image - stage 2" + needs: build-gentoo-musl-stage1 + steps: + - name: Login to DockerHub + uses: docker/login-action@v3 + with: + username: hyperwin + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 2 + submodules: true + + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: "{{ defaultContext }}:docker/gentoo-musl/stage2" + push: true + tags: hyperwin/hcpu-ci:gentoo-musl + diff --git a/docker/alpine/Dockerfile b/docker/alpine/Dockerfile new file mode 100644 index 00000000..8278b3fd --- /dev/null +++ b/docker/alpine/Dockerfile @@ -0,0 +1,4 @@ +FROM alpine:latest + +RUN apk update && \ + apk add clang gcc git cmake make gtest-dev gtest-src re2 re2-dev fmt fmt-dev nodejs grep diff --git a/docker/archlinux/Dockerfile b/docker/archlinux/Dockerfile new file mode 100644 index 00000000..ccd8d5f6 --- /dev/null +++ b/docker/archlinux/Dockerfile @@ -0,0 +1,3 @@ +FROM archlinux:latest + +RUN pacman -Syu cmake git clang gcc gtest re2 fmt base-devel nodejs --noconfirm diff --git a/docker/debian-stable/Dockerfile b/docker/debian-stable/Dockerfile new file mode 100644 index 00000000..d48af887 --- /dev/null +++ b/docker/debian-stable/Dockerfile @@ -0,0 +1,4 @@ +FROM debian + +RUN apt update && \ + apt install git cmake clang libre2-9 libre2-dev libfmt9 libfmt-dev libgtest-dev googletest gnu-which nodejs -y diff --git a/docker/debian-unstable/Dockerfile b/docker/debian-unstable/Dockerfile new file mode 100644 index 00000000..2720484f --- /dev/null +++ b/docker/debian-unstable/Dockerfile @@ -0,0 +1,4 @@ +FROM debian:unstable + +RUN apt update && \ + apt install git cmake clang libre2-11 libre2-dev libfmt10 libfmt-dev libgtest-dev googletest gnu-which nodejs -y diff --git a/docker/fedora/Dockerfile b/docker/fedora/Dockerfile new file mode 100644 index 00000000..2f133747 --- /dev/null +++ b/docker/fedora/Dockerfile @@ -0,0 +1,5 @@ +FROM fedora + +RUN dnf update -y && \ + dnf install clang clang-libs gcc gtest gtest-devel fmt fmt-devel re2 re2-devel gtest gtest-devel git cmake libasan which nodejs -y + diff --git a/docker/gentoo-glibc/Dockerfile b/docker/gentoo-glibc/Dockerfile new file mode 100644 index 00000000..bead05b4 --- /dev/null +++ b/docker/gentoo-glibc/Dockerfile @@ -0,0 +1,5 @@ +FROM gentoo/stage3:systemd + +RUN emerge --sync > /dev/null && \ + getuto && \ + emerge llvm-core/clang cmake dev-vcs/git re2 libfmt gtest which nodejs --getbinpkg -j2 diff --git a/docker/gentoo-glibc/Dockerfile.save b/docker/gentoo-glibc/Dockerfile.save new file mode 100644 index 00000000..a8034b04 --- /dev/null +++ b/docker/gentoo-glibc/Dockerfile.save @@ -0,0 +1,5 @@ +FROM gentoo/stage3:systemd + +RUN emerge --sync +RUN getuto +RUN emerge llvm-core/clang cmake gtest re2 libfmt dev-vcs/git --getbinpkg diff --git a/docker/gentoo-musl/stage1/Dockerfile b/docker/gentoo-musl/stage1/Dockerfile new file mode 100644 index 00000000..f552c572 --- /dev/null +++ b/docker/gentoo-musl/stage1/Dockerfile @@ -0,0 +1,6 @@ +FROM gentoo/stage3:musl + +RUN emerge --sync > /dev/null && \ + getuto && \ + sed -i 's/^MAKEOPTS=".*"/MAKEOPTS="& -j8"/' /etc/portage/make.conf && \ + emerge llvm-core/llvm cmake gtest re2 libfmt dev-vcs/git --getbinpkg diff --git a/docker/gentoo-musl/stage2/Dockerfile b/docker/gentoo-musl/stage2/Dockerfile new file mode 100644 index 00000000..fbb23d7a --- /dev/null +++ b/docker/gentoo-musl/stage2/Dockerfile @@ -0,0 +1,3 @@ +FROM hyperwin/hcpu-ci:gentoo-musl-build + +RUN emerge llvm-core/clang --getbinpkg diff --git a/docker/ubuntu/Dockerfile b/docker/ubuntu/Dockerfile new file mode 100644 index 00000000..62ba3169 --- /dev/null +++ b/docker/ubuntu/Dockerfile @@ -0,0 +1,4 @@ +FROM ubuntu:latest + +RUN apt update && \ + apt install git cmake clang libre2-10 libre2-dev libfmt9 libfmt-dev libgtest-dev googletest gnu-which nodejs -y diff --git a/test.cpp b/test.cpp deleted file mode 100644 index e69de29b..00000000