fix: windows exporting (again) #103
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: Publish | |
on: | |
push: | |
tags: | |
- v[0-9]+.[0-9]+.[0-9]+ | |
branches: | |
- main | |
- dev | |
jobs: | |
patch-version: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Patch versioning | |
env: | |
GITHUB_REF: ${{ github.ref }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
BUILD_NUMBER: ${{ github.run_number }} | |
# Run the node tool and fail if it fails | |
run: node tooling/patchVersion.js || exit 1 | |
- name: Upload version | |
uses: actions/upload-artifact@v4 | |
with: | |
name: packageJson | |
path: package.json | |
build-jars: | |
needs: patch-version | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Cache | |
uses: actions/cache@v4 | |
with: | |
path: | | |
~/.gradle/caches | |
~/.gradle/wrapper | |
key: ${{ runner.os }}-gradle-${{ hashFiles('subprocess/settings.gradle', 'subprocess/gradle/wrapper/gradle-wrapper.properties', 'subprocess/build.gradle', 'subprocess/gradle.properties') }} | |
restore-keys: | | |
${{ runner.os }}-gradle- | |
- name: Set up JDK 21 | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'temurin' | |
java-version: 21 | |
- name: Override packageJson | |
uses: actions/download-artifact@v4 | |
with: | |
name: packageJson | |
path: . | |
- name: Build subprocess | |
env: | |
GRADLE_OPTS: "-Dorg.gradle.daemon=false" | |
run: | | |
cd subprocess | |
./gradlew clean build -si | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: subprocess-jar-${{ matrix.os }} | |
path: | | |
subprocess/build/libs/ | |
# Publish | |
build-releases: | |
name: Prepare releases | |
strategy: | |
matrix: | |
include: | |
- os: ubuntu-latest | |
platform: linux | |
- os: windows-latest | |
platform: windows | |
- os: macos-latest | |
platform: macos | |
runs-on: ${{ matrix.os }} | |
needs: build-jars | |
steps: | |
# Common setup | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download jar | |
uses: actions/download-artifact@v4 | |
with: | |
name: subprocess-jar-${{ matrix.os }} | |
path: subprocess/build/libs/ | |
# Validation of jar | |
- name: Ensure jar exists | |
if: ${{ matrix.os == 'macos-latest' || matrix.os == 'linux-latest' }} | |
run: | | |
stat subprocess/build/libs/*.jar || exit 1 | |
- name: Ensure jar exists | |
if: ${{ matrix.os == 'windows-latest' }} | |
run: | | |
dir subprocess/build/libs/*.jar || exit 1 | |
# Apple app signing | |
- name: Write apple id | |
if: ${{ matrix.os == 'macos-latest' }} | |
env: | |
APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }} | |
run: | | |
echo "$APPLE_API_KEY" > apple_api_key.p8 | |
find apple_api_key.p8 -size +0c || exit 1 | |
# Windows app signing | |
- name: Download AzureSignTool from nuget | |
if: ${{ matrix.os == 'windows-latest' }} | |
run: | | |
dotnet tool install --global AzureSignTool --version 5.0.0 | |
# Patch for correct versioning | |
- name: Override packageJson | |
uses: actions/download-artifact@v4 | |
with: | |
name: packageJson | |
path: . | |
# Setup the PNPM env for all the next steps | |
- name: Setup PNPM Env | |
run: | | |
npm install --global [email protected] || true | |
pnpm config set store-dir .pnpm-store | |
pnpm install --no-frozen-lockfile | |
pnpm gen:license | |
# Windows build | |
- name: Build frontend (Windows) | |
if: ${{ matrix.os == 'windows-latest' }} | |
env: | |
VUE_APP_PLATFORM: "electron" | |
APP_TARGET_PLATFORM: ${{ matrix.platform }} | |
VUE_APP_TARGET_PLATFORM: ${{ matrix.platform }} | |
AZURE_KEY_VAULT_URL: ${{ secrets.AZURE_KEY_VAULT_URL }} | |
AZURE_KEY_VAULT_CLIENT_ID: ${{ secrets.AZURE_KEY_VAULT_CLIENT_ID }} | |
AZURE_KEY_VAULT_CLIENT_SECRET: ${{ secrets.AZURE_KEY_VAULT_CLIENT_SECRET }} | |
AZURE_KEY_VAULT_CERTIFICATE_NAME: ${{ secrets.AZURE_KEY_VAULT_CERTIFICATE_NAME }} | |
AZURE_KEY_VAULT_TENANT_ID: ${{ secrets.AZURE_KEY_VAULT_TENANT_ID }} | |
run: | | |
pnpm build --publish always -w --x64 | |
# Mac build | |
- name: Build frontend (Macos) | |
if: ${{ matrix.os == 'macos-latest' }} | |
env: | |
VUE_APP_PLATFORM: "electron" | |
APP_TARGET_PLATFORM: ${{ matrix.platform }} | |
VUE_APP_TARGET_PLATFORM: ${{ matrix.platform }} | |
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }} | |
CSC_LINK: ${{ secrets.CSC_LINK }} | |
APPLE_API_ISSUER: ${{ secrets.APPLE_API_ISSUER }} | |
APPLE_API_KEY: "./apple_api_key.p8" | |
APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }} | |
run: | | |
pnpm build --publish always -m --x64 --arm64 | |
# Linux build | |
- name: Build frontend (Linux) | |
if: ${{ matrix.os == 'ubuntu-latest' }} | |
env: | |
VUE_APP_PLATFORM: "electron" | |
APP_TARGET_PLATFORM: ${{ matrix.platform }} | |
VUE_APP_TARGET_PLATFORM: ${{ matrix.platform }} | |
run: | | |
pnpm build --publish always -l --x64 --arm64 | |
# Upload time | |
- name: Upload Mac artifacts | |
if: ${{ matrix.os == 'macos-latest' }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: release-${{ matrix.os }} | |
path: | | |
release/ftb-app-*.dmg | |
release/ftb-app-*.zip | |
release/*.blockmap | |
release/*-mac.yml | |
- name: Upload Windows artifacts | |
uses: actions/upload-artifact@v4 | |
if: ${{ matrix.os == 'windows-latest' }} | |
with: | |
name: release-${{ matrix.os }} | |
path: | | |
release/ftb-app-*.exe | |
release/*.blockmap | |
release/latest.yml | |
release/alpha.yml | |
release/beta.yml | |
- name: Upload Linux artifacts | |
if: ${{ matrix.os == 'ubuntu-latest' }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: release-${{ matrix.os }} | |
path: | | |
release/ftb-app-*.deb | |
release/ftb-app-*.AppImage | |
release/ftb-app-*.rpm | |
release/*-linux.yml | |
release/*-linux-*.yml | |
build-overwolf: | |
name: Prepare Overwolf | |
if: "!contains(github.event.head_commit.message, '[-skip overwolf]') && startsWith(github.ref, 'refs/tags/v')" | |
needs: | |
- build-jars | |
- build-releases | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: subprocess-jar-ubuntu-latest | |
path: subprocess/build/libs/ | |
- name: Build App (Overwolf) | |
env: | |
OW_CLI_API_KEY: ${{ secrets.OW_CLI_API_KEY }} | |
OW_CLI_EMAIL: ${{ secrets.OW_CLI_EMAIL }} | |
APP_TARGET_PLATFORM: "overwolf" | |
VUE_APP_TARGET_PLATFORM: "overwolf" | |
VUE_APP_PLATFORM: "overwolf" | |
run: | | |
cp subprocess/build/libs/meta.json overwolf/ | |
cp subprocess/build/libs/java-licenses.json overwolf/ | |
npm install --global [email protected] || true | |
pnpm config set store-dir .pnpm-store | |
pnpm install --no-frozen-lockfile | |
pnpm gen:license | |
node tooling/overwolf/patchManifest.js | |
pnpm overwolf:build | |
node tooling/overwolf/packageOpk.js | |
echo "Signing OPK.." | |
pnpm ow opk sign -o overwolf/signed.opk overwolf/*.opk | |
- name: Upload Overwolf artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: overwolf-opk | |
path: overwolf/signed.opk | |
# Publish to S3 | |
release-electron: | |
name: Publish Electron | |
if: | | |
!cancelled() && !contains(github.event.head_commit.message, '[-skip release]') && needs.build-jars.result == 'success' | |
runs-on: ubuntu-latest | |
needs: build-releases | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
env: | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
PUBLISH_BUCKET: ${{ secrets.PUBLISH_BUCKET }} | |
steps: | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: release-${{ matrix.os }} | |
path: release/ | |
- name: Get B2 client | |
shell: bash | |
run: | | |
wget -q -O /usr/local/bin/b2 https://github.com/Backblaze/B2_Command_Line_Tool/releases/latest/download/b2-linux | |
chmod +x /usr/local/bin/b2 | |
- name: Upload | |
shell: bash | |
run: | | |
ls -la release | |
b2 authorize-account ${{ secrets.AWS_ACCESS_KEY_ID }} ${{ secrets.AWS_SECRET_ACCESS_KEY }} > /dev/null 2>&1 | |
b2 sync --replace-newer --no-progress release b2://${{ secrets.PUBLISH_BUCKET }}/app | |
# Publish to Overwolf | |
release-overwolf: | |
name: Publish Overwolf | |
# Don't run if cancelled or if the commit message contains [-skip release], also, don't run if the build-overwolf job was skipped | |
if: | | |
!cancelled() && !contains(github.event.head_commit.message, '[-skip release]') && needs.build-overwolf.result == 'success' | |
runs-on: ubuntu-latest | |
needs: | |
- build-overwolf | |
- release-electron # There is no point in releasing Overwolf if the Electron build failed | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: overwolf-opk | |
path: overwolf/ | |
- name: Release | |
env: | |
OW_CLI_API_KEY: ${{ secrets.OW_CLI_API_KEY }} | |
OW_CLI_EMAIL: ${{ secrets.OW_CLI_EMAIL }} | |
run: | | |
npm install --global [email protected] || true | |
pnpm config set store-dir .pnpm-store | |
pnpm install --no-frozen-lockfile | |
pnpm ow opk upload -w true overwolf/signed.opk |