From 11d19e54468a35a60ca1b4aaa4913e5d8b3688ad Mon Sep 17 00:00:00 2001 From: Snider Date: Tue, 7 Oct 2025 02:20:06 +0100 Subject: [PATCH] =?UTF-8?q?Add=20caching=20and=20dependency=20installation?= =?UTF-8?q?=20steps=20for=20ARM,=20Intel,=20and=20mac=E2=80=A6=20(#25)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/actions/upload-artifacts/action.yml | 4 ++-- .github/workflows/_on-pr.yml | 23 --------------------- .github/workflows/build-linux-arm64.yml | 5 ++++- .github/workflows/build-linux-intel.yml | 5 ++++- .github/workflows/build-macos-arm64.yml | 5 ++++- .github/workflows/build-macos-intel.yml | 4 +++- .github/workflows/build-windows-intel.yml | 4 +++- Makefile | 19 +++++++++++------ 8 files changed, 33 insertions(+), 36 deletions(-) diff --git a/.github/actions/upload-artifacts/action.yml b/.github/actions/upload-artifacts/action.yml index b3872d6d..d292cedf 100644 --- a/.github/actions/upload-artifacts/action.yml +++ b/.github/actions/upload-artifacts/action.yml @@ -38,7 +38,7 @@ runs: echo "version=${VERSION}" >> "$GITHUB_OUTPUT" if [ "${{ github.event_name }}" == "pull_request" ]; then - TAG_SUFFIX="-${{ github.event.number }}alpha" + TAG_SUFFIX="-alpha.${{ github.event.number }}" PRERELEASE=true elif [ "${{ inputs.chain-network }}" != "mainnet" ]; then TAG_SUFFIX="-beta" @@ -86,5 +86,5 @@ runs: with: tag_name: ${{ steps.asset.outputs.tag_name }} prerelease: ${{ steps.asset.outputs.prerelease }} - files: ${{ inputs.asset-directory }}/lethean-* + files: ${{ inputs.asset-directory }}/* target_commitish: ${{ github.sha }} diff --git a/.github/workflows/_on-pr.yml b/.github/workflows/_on-pr.yml index 51a4bced..a89bc19e 100644 --- a/.github/workflows/_on-pr.yml +++ b/.github/workflows/_on-pr.yml @@ -10,35 +10,12 @@ on: - opened - synchronize - reopened - - closed concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: - cleanup-release: - name: Cleanup Release - if: github.event.action == 'closed' && github.event.pull_request.merged == true - runs-on: ubuntu-latest - steps: - - name: Checkout Project - uses: actions/checkout@v4.2.2 - - - name: Get Version - id: get_version - run: echo "VERSION=$(git describe --tags --abbrev=0)" >> $GITHUB_OUTPUT - - - name: Delete Release and Tag - if: contains(steps.get_version.outputs.VERSION, '-alpha') || contains(steps.get_version.outputs.VERSION, '-beta') - uses: dev-drprasad/delete-older-releases@v0.3.4 - with: - keep_latest: 0 - delete_tags: true - delete_tag_pattern: ${{ steps.get_version.outputs.VERSION }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - build-linux-intel: name: Linux if: ${{!github.event.pull_request.draft}} diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml index 6e15b24d..9a64e529 100644 --- a/.github/workflows/build-linux-arm64.yml +++ b/.github/workflows/build-linux-arm64.yml @@ -45,7 +45,10 @@ jobs: - name: Compile Dependencies if: steps.cache.outputs.cache-hit != 'true' - run: make build-deps CPU_CORES=4 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} + run: | + make build-deps CPU_CORES=4 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} CONAN_USER=ci-user CONAN_PASSWORD=${{ secrets.CONAN_PASSWORD }} + make upload-conan-cache + build: name: compile-arm64 diff --git a/.github/workflows/build-linux-intel.yml b/.github/workflows/build-linux-intel.yml index ba68329a..edfc56bc 100644 --- a/.github/workflows/build-linux-intel.yml +++ b/.github/workflows/build-linux-intel.yml @@ -45,7 +45,10 @@ jobs: - name: Compile Dependencies if: steps.cache.outputs.cache-hit != 'true' - run: make build-deps CPU_CORES=4 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} + run: | + make build-deps CPU_CORES=4 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} CONAN_USER=ci-user CONAN_PASSWORD=${{ secrets.CONAN_PASSWORD }} + make upload-conan-cache + build: diff --git a/.github/workflows/build-macos-arm64.yml b/.github/workflows/build-macos-arm64.yml index 8477d630..140a9f74 100644 --- a/.github/workflows/build-macos-arm64.yml +++ b/.github/workflows/build-macos-arm64.yml @@ -43,7 +43,10 @@ jobs: - name: Compile Dependencies if: steps.cache.outputs.cache-hit != 'true' - run: make build-deps CPU_CORES=3 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} + run: | + make build-deps CPU_CORES=3 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} CONAN_USER=ci-user CONAN_PASSWORD=${{ secrets.CONAN_PASSWORD }} + make upload-conan-cache + build: name: compile-armv8 diff --git a/.github/workflows/build-macos-intel.yml b/.github/workflows/build-macos-intel.yml index 697df5fd..93dbe618 100644 --- a/.github/workflows/build-macos-intel.yml +++ b/.github/workflows/build-macos-intel.yml @@ -41,7 +41,9 @@ jobs: - name: Compile Dependencies if: steps.cache.outputs.cache-hit != 'true' - run: make build-deps CPU_CORES=4 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} + run: | + make build-deps CPU_CORES=4 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} CONAN_USER=ci-user CONAN_PASSWORD=${{ secrets.CONAN_PASSWORD }} + make upload-conan-cache build: name: compile-x86_64 diff --git a/.github/workflows/build-windows-intel.yml b/.github/workflows/build-windows-intel.yml index d5bb77f0..5038bc65 100644 --- a/.github/workflows/build-windows-intel.yml +++ b/.github/workflows/build-windows-intel.yml @@ -41,7 +41,9 @@ jobs: - name: Compile Dependencies if: steps.cache.outputs.cache-hit != 'true' - run: make build-deps CPU_CORES=4 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} + run: | + make build-deps CPU_CORES=4 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }} CONAN_USER=ci-user CONAN_PASSWORD=${{ secrets.CONAN_PASSWORD }} + make upload-conan-cache build: name: compile-x86_64 diff --git a/Makefile b/Makefile index c12611af..5c33ed84 100644 --- a/Makefile +++ b/Makefile @@ -63,6 +63,9 @@ CONAN_CPU_COUNT=$(CPU_CORES) PROFILES := $(patsubst cmake/profiles/%,%,$(wildcard cmake/profiles/*)) SORTED_PROFILES := $(sort $(PROFILES)) CONAN_CACHE := $(CURDIR)/build/sdk +CONAN_URL:=https://artifacts.host.uk.com/artifactory/api/conan/conan-build +CONAN_USER:=public +CONAN_PASSWORD:=Lethean1234 DEFAULT_CONAN_PROFILE := $(CONAN_CACHE)/profiles/default CONAN_EXECUTABLE := $(CURDIR)/build/bin/conan CC_DOCKER_FILE?=utils/docker/images/lthn-chain/Dockerfile @@ -91,8 +94,17 @@ configure: build-deps @echo "Running Configure: $(BUILD_TYPE) testnet=$(TESTNET)" cmake -S . -B $(BUILD_FOLDER) -DCMAKE_TOOLCHAIN_FILE=$(BUILD_FOLDER)/generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -DSTATIC=$(STATIC) -DTESTNET=$(TESTNET) -DBUILD_VERSION=$(BUILD_VERSION) +docs: configure + @echo "Building Documentation" + cmake --build build/release --target=docs --config=Release --parallel=$(CPU_CORES) + get-conan: cmake -P cmake/GetConan.cmake + (CONAN_HOME=$(CONAN_CACHE) $(CONAN_EXECUTABLE) remote add conan_build $(CONAN_URL) && \ + CONAN_HOME=$(CONAN_CACHE) $(CONAN_EXECUTABLE) remote login conan_build $(CONAN_USER) -p $(CONAN_PASSWORD)) || true + +upload-conan-cache: + CONAN_HOME=$(CONAN_CACHE) $(CONAN_EXECUTABLE) upload "*" -r=conan_build --confirm conan-profile-detect: get-conan cmake -P cmake/ConanProfileSetup.cmake @@ -139,11 +151,6 @@ test-debug: cmake --build build/test-debug --config=Debug --parallel=$(CPU_CORES) $(MAKE) test - -docs: configure - @echo "Building Documentation" - cmake --build build/release --target=docs --config=Release --parallel=$(CPU_CORES) - docs-dev: configure @echo "Building Documentation" cmake --build build/release --target=serve_docs --config=Release @@ -157,4 +164,4 @@ clean-build: tags: ctags -R --sort=1 --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ src contrib tests/gtest -.PHONY: all release docker-chain-node debug docs docs-dev configure static static-release test test-release test-debug clean tags conan-profile-detect get-conan $(PROFILES) +.PHONY: all release upload-conan-cache docker-chain-node debug docs docs-dev configure static static-release test test-release test-debug clean tags conan-profile-detect get-conan $(PROFILES)