From 968e8b39dbc820a66ab212b6f576a278114c2ece Mon Sep 17 00:00:00 2001 From: rfprod Date: Tue, 6 Oct 2026 00:19:36 +0400 Subject: [PATCH] ci(trunk): separate trunk workflow into two distinct jobs - [x] implement release deployment as a separate job of the trunk workflow; --- .github/workflows/trunk.yml | 58 ++++++++++++++++++++++++++----------- CMakeLists.txt | 4 +-- 2 files changed, 42 insertions(+), 20 deletions(-) diff --git a/.github/workflows/trunk.yml b/.github/workflows/trunk.yml index b9fda16..80e90f9 100644 --- a/.github/workflows/trunk.yml +++ b/.github/workflows/trunk.yml @@ -16,9 +16,17 @@ concurrency: cancel-in-progress: true jobs: - test-build-deploy: + test-build: runs-on: ubuntu-latest + outputs: + release: ${{ steps.src-changed.outputs.change == 'true' || steps.deps-changed.outputs.change == 'true' }} + release_tag: ${{ steps.version.outputs.release_tag }} + artifact_version: ${{ steps.version.outputs.artifact_version }} + version: ${{ steps.version.outputs.version }} + build_number: ${{ steps.version.outputs.build_number }} + + steps: - name: Checkout sources uses: actions/checkout@v7 @@ -271,25 +279,44 @@ jobs: path: | release-*.tar.gz release-*.zip - retention-days: 90 + retention-days: 1 + + release: + needs: test-build + if: needs.test-build.outputs.release == 'true' + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: Checkout sources + uses: actions/checkout@v7 + + - name: Download release artifacts + uses: actions/download-artifact@v8 + with: + name: cpp-release-${{ needs.test-build.outputs.artifact_version }} + path: ./ + + - name: Get build timestamp + id: timestamp + run: echo "time=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT - name: Create GitHub Release - if: ${{ steps.src-changed.outputs.change == 'true' || steps.deps-changed.outputs.change == 'true' }} uses: softprops/action-gh-release@v3 with: - tag_name: ${{ steps.version.outputs.release_tag }} - name: Release ${{ steps.version.outputs.artifact_version }} + tag_name: ${{ needs.test-build.outputs.release_tag }} + name: Release ${{ needs.test-build.outputs.artifact_version }} body: | - ## Release ${{ steps.version.outputs.version }} (Build ${{ steps.version.outputs.build_number }}) + ## Release ${{ needs.test-build.outputs.version }} (Build ${{ needs.test-build.outputs.build_number }}) - **Full Version**: `${{ steps.version.outputs.release_tag }}` + **Full Version**: `${{ needs.test-build.outputs.release_tag }}` **Commit**: `${{ github.sha }}` **Branch**: `${{ github.ref_name }}` - **Build Time**: $(date -u +'%Y-%m-%dT%H:%M:%SZ') + **Build Time**: ${{ steps.timestamp.outputs.time }} ### Build Artifacts - - `release-${{ steps.version.outputs.artifact_version }}.tar.gz` - - `release-${{ steps.version.outputs.artifact_version }}.zip` + - `release-${{ needs.test-build.outputs.artifact_version }}.tar.gz` + - `release-${{ needs.test-build.outputs.artifact_version }}.zip` ### Changes - Source files updated @@ -301,14 +328,11 @@ jobs: release-*.zip draft: false prerelease: false - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Notify deployment success - if: ${{ steps.src-changed.outputs.change == 'true' || steps.deps-changed.outputs.change == 'true' }} run: | echo "✅ Release built and deployed successfully" - echo "📦 Version: ${{ steps.version.outputs.version }}" - echo "🏗️ Build Number: ${{ steps.version.outputs.build_number }}" - echo "🏷️ Release Tag: ${{ steps.version.outputs.release_tag }}" - echo "📁 Artifact: release-${{ steps.version.outputs.artifact_version }}.{tar.gz,zip}" + echo "📦 Version: ${{ needs.test-build.outputs.version }}" + echo "🏗️ Build Number: ${{ needs.test-build.outputs.build_number }}" + echo "🏷️ Release Tag: ${{ needs.test-build.outputs.release_tag }}" + echo "📁 Artifact: release-${{ needs.test-build.outputs.artifact_version }}.{tar.gz,zip}" diff --git a/CMakeLists.txt b/CMakeLists.txt index c4d6277..12b1c63 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.20) -project(cpp-workspace VERSION 1.0.0 LANGUAGES CXX) +project(cpp-workspace VERSION 0.1.0 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -26,5 +26,3 @@ target_link_libraries(cpp-workspace-app CURL::libcurl nlohmann_json::nlohmann_json ) - -# enable_testing()