WIP - Signing CD Action #28
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: FlexBridge CI/CD | ||
on: | ||
push: | ||
branches: ["develop", "master"] | ||
pull_request: | ||
branches: ["develop", "master"] | ||
workflow_dispatch: | ||
inputs: | ||
releaseType: | ||
description: 'Alpha, Beta, Stable used to stamp release artifacts' | ||
required: true | ||
default: 'Alpha' | ||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | ||
cancel-in-progress: true | ||
jobs: | ||
windows_debug_build_and_test: | ||
env: | ||
CROWDIN_API_KEY: ${{ secrets.CROWDIN_API_KEY }} | ||
name: Build Debug and run Tests | ||
runs-on: windows-latest | ||
steps: | ||
- name: Checkout Files | ||
uses: actions/checkout@v4 | ||
id: checkout | ||
with: | ||
fetch-depth: 0 | ||
submodules: true | ||
- name: Download 461 targeting pack | ||
uses: suisei-cn/actions-download-file@818d6b7dc8fe73f2f924b6241f2b1134ca1377d9 # 1.6.0 | ||
id: downloadfile # Remember to give an ID if you need the output filename | ||
with: | ||
url: "https://download.microsoft.com/download/F/1/D/F1DEB8DB-D277-4EF9-9F48-3A65D4D8F965/NDP461-DevPack-KB3105179-ENU.exe" | ||
target: public/ | ||
- name: Install targeting pack | ||
shell: cmd | ||
working-directory: public | ||
run: NDP461-DevPack-KB3105179-ENU.exe /q | ||
- name: Add msbuild to PATH | ||
uses: microsoft/setup-msbuild@v2 | ||
# We need the dotnet runtime to execute overcrowdin | ||
- name: Setup dotnet | ||
uses: actions/setup-dotnet@v3 | ||
with: | ||
dotnet-version: | ||
8.0.x | ||
if: github.event_name != 'pull_request' | ||
# If we are just doing a CI build we don't need real localizations, but the location must exist | ||
- name: Add Fake Localizations for CI | ||
shell: bash | ||
run: echo > DistFiles/localizations/empty.xlf | ||
if: github.event_name == 'pull_request' | ||
- name: Restore Build Tasks & Packages | ||
id: package_restore | ||
shell: cmd | ||
run: msbuild build\FLExBridge.proj /t:RestoreBuildTasks;RestorePackages | ||
- name: Build & Test | ||
id: build_and_test | ||
shell: cmd | ||
run: msbuild build\FLExBridge.proj /t:Test | ||
# All the following are used only when building an installer after a merge | ||
- name: Install Latest Overcrowdin | ||
shell: cmd | ||
run: dotnet tool install -g overcrowdin | ||
if: github.event_name != 'pull_request' | ||
- name: Restore L10n Packages | ||
shell: cmd | ||
run: | | ||
cd l10n | ||
msbuild l10n.proj /t:restore | ||
if: github.event_name != 'pull_request' | ||
- name: Get Latest L10ns | ||
shell: cmd | ||
run: | | ||
cd l10n | ||
msbuild l10n.proj /t:GetLatestL10ns;CopyL10nsToDistFiles | ||
if: github.event_name != 'pull_request' | ||
- name: Build Msi | ||
shell: cmd | ||
run: msbuild build/FLExBridge.proj /t:CleanMasterOutputDir;PreparePublishingArtifactsInternal;BuildProductBaseMsi /p:UploadFolder=${{ inputs.environment || 'Alpha' }} | ||
if: github.event_name != 'pull_request' | ||
- name: Find versioned msi file | ||
id: find_file | ||
run: | | ||
find . -name "FLExBridge*.msi" > files.txt | ||
# Read the first matching file found (should only be one) and store it as an output variable | ||
head -n 1 files.txt > first_file.txt | ||
echo "::set-output name=fb_msi_path::$(cat first_file.txt)" | ||
- name: Create Msi Digest | ||
id: msi-digest | ||
uses: sillsdev/codesign/generate-digest@v1 | ||
with: | ||
path: ${{ steps.find_file.outputs.fb_msi_path }} | ||
public-cert: ${{ secrets.CODESIGN_LSDEVSECTIGOEV }} | ||
if: github.event_name != 'pull_request' | ||
sign-msi: | ||
needs: windows_debug_build_and_test | ||
uses: sillsdev/codesign/.github/workflows/sign-digest@v1 | ||
with: | ||
digest: ${{ needs.windows_debug_build_and_test.msi-digest.outputs.digest }} | ||
if: github.event_name != 'pull_request' | ||
build-installer-bundles: | ||
needs: [windows_debug_build_and_test, sign-msi] | ||
steps: | ||
- name: Apply signing to msi | ||
uses: sillsdev/codesign/apply-signed-digest@v1 | ||
with: | ||
artifact: ${{ needs.windows_debug_build_and_test.outputs.intermediates }} | ||
path: ${{ needs.windows_debug_build_and_test.steps.find_file.outputs.fb_msi_path }} | ||
signed-digest: ${{ needs.sign-msi.outputs.signed-digest }} | ||
if: github.event_name != 'pull_request' |