Package #29
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: Package | |
on: | |
workflow_dispatch: | |
inputs: | |
version: | |
description: "The version to release (eg: 'v1.0.0')" | |
required: true | |
type: string | |
build-unpacked: | |
description: "Create unpacked artifact?" | |
required: true | |
type: boolean | |
default: true | |
build-installer: | |
description: "Create installer artifact?" | |
required: true | |
type: boolean | |
default: true | |
draft: | |
description: "Create a draft release?" | |
required: false | |
type: boolean | |
default: true | |
prerelease: | |
description: "Create a prerelease?" | |
required: false | |
type: boolean | |
default: true | |
env: | |
SigningCertificate: cert.pfx | |
jobs: | |
build: | |
runs-on: windows-latest | |
env: | |
ACTIONS_ALLOW_UNSECURE_COMMANDS: true # Allows AddPAth and SetEnv commands | |
CERT_PATH: Release | |
strategy: | |
matrix: | |
dotnet-version: [ 6.0.x ] | |
steps: | |
- name: Set Outputs | |
id: setOutputs | |
shell: pwsh | |
env: | |
InputVersion: ${{ inputs.version }} | |
run: | | |
$tagVersion = $env:InputVersion.StartsWith('v') ? $env:InputVersion : "v" + $env:InputVersion | |
$rawVersion = $env:InputVersion.StartsWith('v') ? $env:InputVersion.Substring(1) : $env:InputVersion | |
$validation = [System.Version]::Parse($rawVersion) | |
echo "tagVersion=$tagVersion" >> $env:GITHUB_OUTPUT | |
echo "rawVersion=$rawVersion" >> $env:GITHUB_OUTPUT | |
echo "artifactNameUnpacked=vortex-setup-$rawVersion-unpacked" >> $env:GITHUB_OUTPUT | |
echo "artifactNameInstaller=vortex-setup-$rawVersion-installer" >> $env:GITHUB_OUTPUT | |
- name: Get current time | |
uses: josStorer/get-current-time@v2 | |
id: current-time | |
with: | |
format: 'YYYY-MM-DD HHmm' | |
- name: Use current time | |
env: | |
TIME: "${{ steps.current-time.outputs.time }}" | |
R_TIME: "${{ steps.current-time.outputs.readableTime }}" | |
F_TIME: "${{ steps.current-time.outputs.formattedTime }}" | |
YEAR: "${{ steps.current-time.outputs.year }}" | |
DAY: "${{ steps.current-time.outputs.day }}" | |
run: echo $TIME $R_TIME $F_TIME $YEAR $DAY | |
- uses: actions/checkout@v3 | |
with: | |
submodules: "recursive" | |
- name: Download VC_redist | |
shell: pwsh | |
run: | | |
$vcredist = "https://aka.ms/vs/17/release/vc_redist.x64.exe" | |
Invoke-WebRequest $vcredist -OutFile build\VC_redist.x64.exe | |
- name: Use Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: '16.x' | |
cache: "yarn" | |
- name: Install dependencies | |
run: yarn --frozen-lockfile --network-timeout 600000 install | |
- name: Print debug info | |
run: dotnet --info | |
- name: Decode PFX | |
shell: pwsh | |
id: decode-pfx | |
run: | | |
$certBytes = [System.Convert]::FromBase64String("${{ secrets.PFX_BASE64 }}") | |
$certPath = Join-Path -Path $env:RUNNER_TEMP -ChildPath $env:SigningCertificate | |
[IO.File]::WriteAllBytes("$certPath", $certBytes) | |
- name: Build API | |
run: yarn --non-interactive build_api | |
- name: Build Install | |
run: yarn --non-interactive _install_app | |
- name: Build Subprojects | |
run: yarn --non-interactive subprojects_app | |
- name: Build Assets | |
run: yarn --non-interactive _assets_app | |
- name: Webpack | |
run: yarn build_dist | |
- name: Sign | |
shell: pwsh | |
run: | | |
$signtool = "C:\Program Files (x86)\Microsoft SDKs\ClickOnce\SignTool\signtool.exe" | |
$timestamp = "http://timestamp.digicert.com" | |
$certPath = Join-Path -Path $env:RUNNER_TEMP -ChildPath $env:SigningCertificate | |
& $signtool sign /f $certPath /p "${{ secrets.PFX_KEY }}" /td sha256 /fd sha256 /tr $timestamp "app\node_modules\winapi-bindings\build\Release\winapi.node" | |
- name: Package | |
run: yarn package | |
env: | |
DEBUG: electron-builder | |
CSC_LINK: ${{ secrets.PFX_BASE64 }} # works directly with base64 string and not a path | |
CSC_KEY_PASSWORD: ${{ secrets.PFX_KEY }} | |
- name: Extract Sourcemaps | |
run: yarn extract_sourcemaps | |
- name: Test | |
run: yarn test | |
- name: Remove PFX | |
shell: pwsh | |
run: | | |
$certPath = Join-Path -Path $env:RUNNER_TEMP -ChildPath $env:SigningCertificate | |
Remove-Item -Path $certPath | |
- name: Upload Unpacked | |
uses: actions/upload-artifact@v3 | |
if: inputs.build-unpacked == true | |
with: | |
name: ${{ steps.setOutputs.outputs.artifactNameUnpacked }} | |
path: ./dist/win-unpacked | |
if-no-files-found: error | |
- name: Upload Installer | |
uses: actions/upload-artifact@v3 | |
if: inputs.build-installer == true | |
with: | |
name: ${{ steps.setOutputs.outputs.artifactNameInstaller }} | |
path: | | |
./dist/vortex-setup-*.*.*.exe | |
./dist/latest.yml | |
if-no-files-found: error |