diff --git a/.github/workflows/csharp_release.yml b/.github/workflows/csharp_release.yml index 80461161..39fad87b 100644 --- a/.github/workflows/csharp_release.yml +++ b/.github/workflows/csharp_release.yml @@ -3,14 +3,19 @@ on: release: types: [ published ] # Trigger on published pre-releases and releases - workflow_dispatch: + workflow_dispatch: + inputs: + tag: + description: 'Tag name' + required: true + default: 'v4.1.0' jobs: variables: name: Set Variables runs-on: ubuntu-latest env: - TAG: ${{ github.event.release.tag_name }} + TAG: ${{ github.event.release.tag_name || github.event.inputs.tag }} steps: - name: Extract semantic version from tag id: set_version @@ -25,11 +30,11 @@ jobs: echo "Extracted semantic version: ${SEMANTIC_VERSION}" echo "semantic_version=${SEMANTIC_VERSION}" >> $GITHUB_OUTPUT outputs: - tag: $TAG + tag: ${{ env.TAG }} semanticVersion: ${{ steps.set_version.outputs.semantic_version }} buildFrameworkVersions: - name: Build Framework versions + name: Build .NET Framework versions needs: [ variables ] runs-on: windows-2019 # required version for Framework 4.0 steps: @@ -48,12 +53,12 @@ jobs: - name: Upload Framework artifacts uses: actions/upload-artifact@v4 with: - name: unsigned-dlls + name: unsigned-dlls-framework if-no-files-found: error path: ./**/bin/Release/**/Optimizely*.dll buildStandard16: - name: Build Standard 1.6 version + name: Build .NET 1.6 version needs: [ variables ] runs-on: windows-latest steps: @@ -70,12 +75,12 @@ jobs: - name: Upload Standard 1.6 artifact uses: actions/upload-artifact@v4 with: - name: unsigned-dlls + name: unsigned-dlls-standard16 if-no-files-found: error path: ./**/bin/Release/**/Optimizely*.dll buildStandard20: - name: Build Standard 2.0 version + name: Build .NET 2.0 version needs: [ variables ] runs-on: windows-latest steps: @@ -92,13 +97,48 @@ jobs: - name: Build and strongly name assemblies uses: actions/upload-artifact@v4 with: - name: unsigned-dlls + name: unsigned-dlls-standard20 if-no-files-found: error path: ./**/bin/Release/**/Optimizely*.dll + + combineArtifacts: + name: Combine artifacts + needs: [ variables, buildFrameworkVersions, buildStandard16, buildStandard20 ] + runs-on: ubuntu-latest + steps: + - name: Download Framework artifacts + uses: actions/download-artifact@v4 + with: + name: unsigned-dlls-framework + path: ./unsigned-dlls-framework + - name: Download Standard 1.6 artifacts + uses: actions/download-artifact@v4 + with: + name: unsigned-dlls-standard16 + path: ./unsigned-dlls-standard16 + - name: Download Standard 2.0 artifacts + uses: actions/download-artifact@v4 + with: + name: unsigned-dlls-standard20 + path: ./unsigned-dlls-standard20 + - name: List all downloaded artifacts + run: ls -R ./ + - name: Combine artifacts + run: | + mkdir -p ./unsigned-dlls + find ./unsigned-dlls-framework -type f -name 'Optimizely*.dll' ! -path '*/OptimizelySDK.Tests/*' -exec mv {} ./unsigned-dlls/ \; + find ./unsigned-dlls-standard16 -type f -name 'Optimizely*.dll' -exec mv {} ./unsigned-dlls/ \; + find ./unsigned-dlls-standard20 -type f -name 'Optimizely*.dll' -exec mv {} ./unsigned-dlls/ \; + - name: Upload combined artifacts + uses: actions/upload-artifact@v4 + with: + name: unsigned-dlls + if-no-files-found: error + path: ./unsigned-dlls sign: name: Send DLLs for signing - needs: [ variables, buildFrameworkVersions, buildStandard16, buildStandard20 ] + needs: [ combineArtifacts ] runs-on: ubuntu-latest env: # TODO: Replace actual values @@ -146,7 +186,7 @@ jobs: pack: name: Pack NuGet package - needs: [ variables, sign ] + needs: [ sign ] runs-on: ubuntu-latest env: VERSION: ${{ needs.variables.outputs.semanticVersion }} @@ -199,7 +239,7 @@ jobs: publish: name: Publish package to NuGet after reviewing the artifact - needs: [ variables, pack ] + needs: [ pack ] runs-on: ubuntu-latest # Review the `nuget-package` artifact ensuring the dlls are # organized and signed before approving.