From dce7d3492df15a9f3e7453f305c41a74fca61f34 Mon Sep 17 00:00:00 2001 From: brock Date: Sat, 27 Jan 2024 23:18:47 -0800 Subject: [PATCH] ops: Add gitea actions CI (#1) Co-authored-by: Brock Allen Reviewed-on: https://git.brocklobsta.net/brock/cproject/pulls/1 --- .devcontainer/devcontainer.json | 3 +- {.github => .gitea}/workflows/ci.yml | 55 ++++++++++++++++------------ builder.Dockerfile | 36 +++++++++--------- makefile | 1 - tests/unittest/project.yml | 4 -- 5 files changed, 50 insertions(+), 49 deletions(-) rename {.github => .gitea}/workflows/ci.yml (58%) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 5d59fcf..0181f24 100755 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -7,8 +7,7 @@ }, "workspaceMount": "", "runArgs": [ - "--volume=${localWorkspaceFolder}:/workspaces/${localWorkspaceFolderBasename}:Z", - "--platform=linux/amd64" + "--volume=${localWorkspaceFolder}:/workspaces/${localWorkspaceFolderBasename}:Z" ], "customizations": { "vscode": { diff --git a/.github/workflows/ci.yml b/.gitea/workflows/ci.yml similarity index 58% rename from .github/workflows/ci.yml rename to .gitea/workflows/ci.yml index 5dacc95..47a5ef8 100644 --- a/.github/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -16,16 +16,25 @@ jobs: steps: - uses: actions/checkout@v3 - uses: docker/setup-buildx-action@v2 + - uses: actions/setup-go@v3 + with: + go-version: '1.20' - name: Create docker cache folder run: mkdir -p /tmp/docker + - + name: Hash dockerfile + id: dockerfile-hash + uses: https://gitea.com/actions/go-hashfiles@v0.0.1 + with: + patterns: builder.Dockerfile - name: Restore docker image id: cache-docker uses: actions/cache@v3 with: path: /tmp/docker - key: ${{ runner.os }}-docker-${{ hashFiles('builder.Dockerfile') }} + key: ${{ runner.os }}-docker-${{ steps.dockerfile-hash.outputs.hash }} - name: Build docker builder-image if: steps.cache-docker.outputs.cache-hit != 'true' @@ -42,38 +51,38 @@ jobs: steps: - uses: actions/checkout@v3 - uses: docker/setup-buildx-action@v2 + - uses: actions/setup-go@v3 + with: + go-version: '1.20' + - + name: Hash dockerfile + id: dockerfile-hash + uses: https://gitea.com/actions/go-hashfiles@v0.0.1 + with: + patterns: builder.Dockerfile - name: Restore docker image id: cache-docker uses: actions/cache@v3 with: path: /tmp/docker - key: ${{ runner.os }}-docker-${{ hashFiles('builder.Dockerfile') }} - - - name: Load image - run: | - docker load --input /tmp/docker/${{ runner.os }}-builder-image.tar - docker image ls -a + key: ${{ runner.os }}-docker-${{ steps.dockerfile-hash.outputs.hash }} - name: Build library - run: | - docker run \ - --rm \ - --platform linux/amd64 \ - --workdir /builder/mnt \ - -v ${{ github.workspace }}:/builder/mnt \ - cproject-builder:latest \ - /bin/bash -c "rm -rf build; cmake -B build; cmake --build build" + uses: https://github.com/addnab/docker-run-action@v3 + with: + image: cproject-builder:latest + options: --volumes-from ${{ env.JOB_CONTAINER_NAME }} + run: | + /bin/bash -c "cd ${{ github.workspace }}; rm -rf build; cmake -B build; cmake --build build" - name: Test library - run: | - docker run \ - --rm \ - --platform linux/amd64 \ - --workdir /builder/mnt/tests/unittest \ - -v ${{ github.workspace }}:/builder/mnt \ - cproject-builder:latest \ - /bin/bash -c "ceedling clobber; ceedling gcov:all; ceedling utils:gcov" + uses: https://github.com/addnab/docker-run-action@v3 + with: + image: cproject-builder:latest + options: --volumes-from ${{ env.JOB_CONTAINER_NAME }} + run: | + /bin/bash -c "cd ${{ github.workspace }}/tests/unittest; ceedling clobber; ceedling gcov:all; ceedling utils:gcov" - name: Archive coverage results shell: bash diff --git a/builder.Dockerfile b/builder.Dockerfile index 0fad747..fb468a7 100644 --- a/builder.Dockerfile +++ b/builder.Dockerfile @@ -2,7 +2,7 @@ ARG base_tag=bullseye ARG base_img=mcr.microsoft.com/vscode/devcontainers/base:dev-${base_tag} # ARG base_img=debian:${base_tag} -FROM --platform=linux/amd64 ${base_img} AS builder-install +FROM ${base_img} AS builder-install # the following shows how to install the latest version of a package. # you can determine the installed version with `apt-cache policy ` and fix @@ -15,7 +15,6 @@ RUN apt-get install -y --no-install-recommends \ cmake \ build-essential \ gcc \ - g++-multilib \ locales \ make \ ruby \ @@ -61,29 +60,28 @@ RUN ln -s /usr/bin/clang-tidy-${llvm_version} /usr/local/bin/clang-tidy # this can take a significant amount of time (e.g., several minutes just to compile one tool), # and also increases the image size significantly. therefore, we go for option B below. -# RUN curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain stable -y -# ENV PATH=/root/.cargo/bin:$PATH +RUN curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain stable -y +ENV PATH=/root/.cargo/bin:$PATH # Each takes around 280 s to build on an M2 macbook air -# RUN cargo install run-clang-format -# RUN cargo install run-clang-tidy +RUN cargo install run-clang-format +RUN cargo install run-clang-tidy # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # option B: install pre-built clang wrappers +# RUN mkdir -p /usr/local/run-clang-format +# RUN wget -O clang-utils.tgz "https://github.com/lmapii/run-clang-format/releases/download/v1.4.14/run-clang-format-v1.4.14-i686-unknown-linux-gnu.tar.gz" && \ +# tar -C /usr/local/run-clang-format -xzf clang-utils.tgz --strip-components 1 && \ +# rm clang-utils.tgz +# ENV PATH /usr/local/run-clang-format:$PATH +# RUN run-clang-format --version -RUN mkdir -p /usr/local/run-clang-format -RUN wget -O clang-utils.tgz "https://github.com/lmapii/run-clang-format/releases/download/v1.4.14/run-clang-format-v1.4.14-i686-unknown-linux-gnu.tar.gz" && \ - tar -C /usr/local/run-clang-format -xzf clang-utils.tgz --strip-components 1 && \ - rm clang-utils.tgz -ENV PATH /usr/local/run-clang-format:$PATH -RUN run-clang-format --version - -RUN mkdir -p /usr/local/run-clang-tidy -RUN wget -O clang-utils.tgz "https://github.com/lmapii/run-clang-tidy/releases/download/v0.2.5/run-clang-tidy-v0.2.5-i686-unknown-linux-gnu.tar.gz" && \ - tar -C /usr/local/run-clang-tidy -xzf clang-utils.tgz --strip-components 1 && \ - rm clang-utils.tgz -ENV PATH /usr/local/run-clang-tidy:$PATH -RUN run-clang-tidy --version +# RUN mkdir -p /usr/local/run-clang-tidy +# RUN wget -O clang-utils.tgz "https://github.com/lmapii/run-clang-tidy/releases/download/v0.2.5/run-clang-tidy-v0.2.5-i686-unknown-linux-gnu.tar.gz" && \ +# tar -C /usr/local/run-clang-tidy -xzf clang-utils.tgz --strip-components 1 && \ +# rm clang-utils.tgz +# ENV PATH /usr/local/run-clang-tidy:$PATH +# RUN run-clang-tidy --version # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # install unity and ceedling diff --git a/makefile b/makefile index 88c2e96..06d561e 100644 --- a/makefile +++ b/makefile @@ -7,7 +7,6 @@ builder-run : docker run \ --rm \ -it \ - --platform linux/amd64 \ --workdir /builder/mnt \ -v .:/builder/mnt \ $(project_name)-builder:latest \ diff --git a/tests/unittest/project.yml b/tests/unittest/project.yml index 72c976c..58d94e4 100644 --- a/tests/unittest/project.yml +++ b/tests/unittest/project.yml @@ -102,24 +102,20 @@ - -Wall - -g0 - -O3 - - -m32 :link: :*: - -g0 - -O3 - - -m32 :gcov: :compile: :*: - -g0 - -O3 - -Wall - - -m32 :link: :*: - -g0 - -O3 - - -m32 # LIBRARIES