From cb5d500594c9a9e888ce6b3d241021dda3b0dc27 Mon Sep 17 00:00:00 2001 From: Romain BOULLARD Date: Sat, 24 Jan 2026 11:02:32 +0100 Subject: [PATCH] BigfootBuilder --- .gitea/workflows/ci.yaml | 54 +++++++++++++++++++++++++------ Linux/BigfootBuilder/Dockerfile | 37 +++++++++++++-------- Linux/BigfootBuilder/conanfile.py | 33 +++++++++++-------- 3 files changed, 87 insertions(+), 37 deletions(-) diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml index 40f51a3..3029dbf 100644 --- a/.gitea/workflows/ci.yaml +++ b/.gitea/workflows/ci.yaml @@ -8,10 +8,10 @@ on: env: BRANCH_NAME: ${{ github.ref_name }} - BASE_BUILDER_TAG: ${{ vars.CI_REGISTRY_IMAGE }}/linuxbasebuilder:${{ github.ref_name }} - CPP_BUILDER_TAG: ${{ vars.CI_REGISTRY_IMAGE }}/linuxcppbuilder:${{ github.ref_name }} - BIGFOOT_BUILDER_TAG: ${{ vars.CI_REGISTRY_IMAGE }}/linuxbigfootbuilder:${{ github.ref_name }} - BIGFOOT_COVERAGE_BUILDER_TAG: ${{ vars.CI_REGISTRY_IMAGE }}/linuxbigfootcoveragebuilder:${{ github.ref_name }} + BASE_BUILDER_TAG: ${{ vars.DOCKER_IMAGE }}/linuxbasebuilder:${{ github.ref_name }} + CPP_BUILDER_TAG: ${{ vars.DOCKER_IMAGE }}/linuxcppbuilder:${{ github.ref_name }} + BIGFOOT_BUILDER_TAG: ${{ vars.DOCKER_IMAGE }}/linuxbigfootbuilder:${{ github.ref_name }} + BIGFOOT_COVERAGE_BUILDER_TAG: ${{ vars.DOCKER_IMAGE }}/linuxbigfootcoveragebuilder:${{ github.ref_name }} jobs: build-base-builder: @@ -28,9 +28,9 @@ jobs: - name: Login to the Container registry uses: docker/login-action@v3 with: - registry: ${{ vars.CI_REGISTRY }} - username: ${{ secrets.CI_USERNAME }} - password: ${{ secrets.CI_TOKEN }} + registry: ${{ vars.DOCKER_REGISTRY }} + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_TOKEN }} - name: Build and push base builder uses: docker/build-push-action@v5 @@ -54,9 +54,9 @@ jobs: - name: Login to the Container registry uses: docker/login-action@v3 with: - registry: ${{ vars.CI_REGISTRY }} - username: ${{ secrets.CI_USERNAME }} - password: ${{ secrets.CI_TOKEN }} + registry: ${{ vars.DOCKER_REGISTRY }} + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_TOKEN }} - name: Build and push cpp builder uses: docker/build-push-action@v5 @@ -67,3 +67,37 @@ jobs: build-args: | BASE_BUILDER=${{ env.BASE_BUILDER_TAG }} CONAN_PROFILE_BRANCH=${{ env.BRANCH_NAME }} + + build-bigfoot-builder: + runs-on: ubuntu-latest + timeout-minutes: 360 + needs: build-base-builder + + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to the Container registry + uses: docker/login-action@v3 + with: + registry: ${{ vars.DOCKER_REGISTRY }} + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_TOKEN }} + + - name: Build and push cpp builder + uses: docker/build-push-action@v5 + with: + context: ./Linux/BigfootBuilder + push: true + tags: ${{ env.BIGFOOT_BUILDER_TAG }} + build-args: | + BASE_BUILDER=${{ env.CPP_BUILDER_TAG }} + ARTIFACTORY_CONAN_USER=${{ secrets.ARTIFACTORY_USER }} + ARTIFACTORY_CONAN_PASSWORD=${{ secrets.ARTIFACTORY_PASSWORD }} + CONAN_RELEASE_PROFILE=clang + CONAN_RELWITHDEBINFO_PROFILE=clangd + CONAN_DEBUG_PROFILE=clangd + PACKAGES_CHANNEL=${{ github.ref_name }} diff --git a/Linux/BigfootBuilder/Dockerfile b/Linux/BigfootBuilder/Dockerfile index f8f3f40..53ebcdc 100644 --- a/Linux/BigfootBuilder/Dockerfile +++ b/Linux/BigfootBuilder/Dockerfile @@ -5,20 +5,31 @@ FROM $BASE_BUILDER ARG CONAN_RELEASE_PROFILE ARG CONAN_RELWITHDEBINFO_PROFILE ARG CONAN_DEBUG_PROFILE +ARG ARTIFACTORY_CONAN_USER +ARG ARTIFACTORY_CONAN_PASSWORD +ARG PACKAGES_CHANNEL -RUN wget -qO - https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo apt-key add -RUN wget -qO /etc/apt/sources.list.d/lunarg-vulkan-1.4.313-noble.list https://packages.lunarg.com/vulkan/1.4.313/lunarg-vulkan-1.4.313-noble.list -RUN apt-get update -y -RUN apt-get install gcovr -y -RUN apt-get install vulkan-sdk -y -RUN apt-get install xvfb -y +RUN apt-get update \ + && apt-get install -y \ + gcovr \ + xvfb \ + \ + # LunarG Vulkan repo (modern keyring method) + && wget -qO /usr/share/keyrings/lunarg-archive-keyring.gpg https://packages.lunarg.com/lunarg-signing-key-pub.asc; \ + && echo "deb [signed-by=/usr/share/keyrings/lunarg-archive-keyring.gpg] https://packages.lunarg.com/vulkan/1.4.313 noble main" \ + > /etc/apt/sources.list.d/lunarg-vulkan.list \ + \ + && apt-get update \ + && apt-get install -y vulkan-sdk \ + \ + # Cleanup + && rm -rf /var/lib/apt/lists/* COPY conanfile.py BigfootDependencies/conanfile.py -RUN ccache --zero-stats - -RUN CONAN_LOGIN_USERNAME=${GITLAB_CONAN_USER} CONAN_PASSWORD=${GITLAB_CONAN_PASSWORD} conan install ./BigfootDependencies --remote=bigfootpackages --build="*" -pr:h=${CONAN_RELEASE_PROFILE} -pr:b=${CONAN_RELEASE_PROFILE} -s build_type=Release && \ - CONAN_LOGIN_USERNAME=${GITLAB_CONAN_USER} CONAN_PASSWORD=${GITLAB_CONAN_PASSWORD} conan install ./BigfootDependencies --remote=bigfootpackages --build="*" -pr:h=${CONAN_RELWITHDEBINFO_PROFILE} -pr:b=${CONAN_RELWITHDEBINFO_PROFILE} -s build_type=RelWithDebInfo && \ - CONAN_LOGIN_USERNAME=${GITLAB_CONAN_USER} CONAN_PASSWORD=${GITLAB_CONAN_PASSWORD} conan install ./BigfootDependencies --remote=bigfootpackages --build="*" -pr:h=${CONAN_DEBUG_PROFILE} -pr:b=${CONAN_DEBUG_PROFILE} -s build_type=Debug - -RUN ccache --show-stats \ No newline at end of file +RUN ccache --zero-stats \ + && CONAN_LOGIN_USERNAME=${ARTIFACTORY_CONAN_USER} CONAN_PASSWORD=${ARTIFACTORY_CONAN_PASSWORD} conan install ./BigfootDependencies -o Requirements/*:packages_channel=${PACKAGES_CHANNEL} --remote=bigfootpackages --build="*" -pr:h=${CONAN_RELEASE_PROFILE} -pr:b=${CONAN_RELEASE_PROFILE} -s build_type=Release \ + && CONAN_LOGIN_USERNAME=${ARTIFACTORY_CONAN_USER} CONAN_PASSWORD=${ARTIFACTORY_CONAN_PASSWORD} conan install ./BigfootDependencies -o Requirements/*:packages_channel=${PACKAGES_CHANNEL} --remote=bigfootpackages --build="*" -pr:h=${CONAN_RELWITHDEBINFO_PROFILE} -pr:b=${CONAN_RELWITHDEBINFO_PROFILE} -s build_type=RelWithDebInfo \ + && CONAN_LOGIN_USERNAME=${ARTIFACTORY_CONAN_USER} CONAN_PASSWORD=${ARTIFACTORY_CONAN_PASSWORD} conan install ./BigfootDependencies -o Requirements/*:packages_channel=${PACKAGES_CHANNEL} --remote=bigfootpackages --build="*" -pr:h=${CONAN_DEBUG_PROFILE} -pr:b=${CONAN_DEBUG_PROFILE} -s build_type=Debug \ + && ccache --show-stats \ + && CONAN_LOGIN_USERNAME=${ARTIFACTORY_CONAN_USER} CONAN_PASSWORD=${ARTIFACTORY_CONAN_PASSWORD} conan upload "*" --remote=bigfootpackages --force --confirm \ No newline at end of file diff --git a/Linux/BigfootBuilder/conanfile.py b/Linux/BigfootBuilder/conanfile.py index a805470..d3002af 100644 --- a/Linux/BigfootBuilder/conanfile.py +++ b/Linux/BigfootBuilder/conanfile.py @@ -3,6 +3,13 @@ from conan import ConanFile class RequirementsConan(ConanFile): name = "Requirements" + options = { + "packages_channel" + } + default_options = { + "packages_channel": "main" + } + def configure(self): self.options['stduuid'].with_cxx20_span = True self.options['flatbuffers'].header_only = True @@ -15,17 +22,15 @@ class RequirementsConan(ConanFile): self.options["benchmark"].enable_lto = True def requirements(self): - self.requires("eastl/3.27.01") - self.requires("unordered_dense/4.8.1") - self.requires("mimalloc/3.1.5") - self.requires("magic_enum/0.9.7") - self.requires("stduuid/1.2.3") - self.requires("sqlite3/3.51.0") + self.requires(f"eastl/3.27.01@bigfootdev/{self.options['packages_channel']}") + self.requires(f"unordered_dense/4.8.1@bigfootdev/{self.options['packages_channel']}") + self.requires(f"mimalloc/3.1.5@bigfootdev/{self.options['packages_channel']}") + self.requires(f"stduuid/1.2.3@bigfootdev/{self.options['packages_channel']}") + self.requires(f"sqlite3/3.51.0@bigfootdev/{self.options['packages_channel']}") self.requires("cli11/2.6.0") - self.requires("xxhash/0.8.3") + self.requires(f"rapidhash/3.0@bigfootdev/{self.options['packages_channel']}") self.requires("effolkronium-random/1.5.0") - self.requires("zeus_expected/1.3.0") - self.requires("flatbuffers/25.9.23") + self.requires(f"flatbuffers/25.12.19@bigfootdev/{self.options['packages_channel']}") self.requires("quill/11.0.2") self.requires("tracy/0.12.2") @@ -38,17 +43,17 @@ class RequirementsConan(ConanFile): self.requires("glfw/3.4") self.requires("vulkan-headers/1.4.313.0") - self.requires("vulkan-validationlayers/1.4.313.0") + self.requires(f"vulkan-validationlayers/1.4.313.0@bigfootdev/{self.options['packages_channel']}") self.requires("spirv-cross/1.4.313.0") - self.requires("vulkan-memory-allocator/3.3.0") + self.requires(f"vulkan-memory-allocator/3.3.0@bigfootdev/{self.options['packages_channel']}") self.requires("gtest/1.17.0") - self.requires("pixelmatch-cpp17/1.0.3") + self.requires(f"pixelmatch-cpp17/1.0.3@bigfootdev/{self.options['packages_channel']}") self.requires("stb/cci.20240531", override=True) - self.requires("shaderc/2025.3") + self.requires(f"shaderc/2025.3@bigfootdev/{self.options['packages_channel']}") self.requires("assimp/6.0.2") - self.requires("meshoptimizer/1.0") + self.requires(f"meshoptimizer/1.0@bigfootdev/{self.options['packages_channel']}") self.requires("libsquish/1.15") self.requires("benchmark/1.9.4")