89 lines
3.8 KiB
YAML
89 lines
3.8 KiB
YAML
desktop-build-windows:
|
|
stage: package
|
|
tags:
|
|
- saas-windows-medium-amd64
|
|
rules:
|
|
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
|
|
changes:
|
|
- Overlord-Desktop/package.json
|
|
- Overlord-Desktop/bun.lock
|
|
- Overlord-Desktop/scripts/**/*
|
|
- Overlord-Desktop/src/**/*
|
|
- Overlord-Desktop/src-tauri/**/*
|
|
before_script:
|
|
- npm install --global --prefix "$env:CI_PROJECT_DIR\.tools" bun@1.3.14
|
|
- $env:PATH = "$env:CI_PROJECT_DIR\.tools;$env:USERPROFILE\.cargo\bin;$env:PATH"
|
|
- |
|
|
if (-not (Get-Command rustup -ErrorAction SilentlyContinue)) {
|
|
Invoke-WebRequest -UseBasicParsing https://win.rustup.rs/x86_64 -OutFile "$env:CI_PROJECT_DIR\rustup-init.exe"
|
|
& "$env:CI_PROJECT_DIR\rustup-init.exe" -y --profile minimal
|
|
}
|
|
- rustup toolchain install stable --profile minimal
|
|
- rustup default stable
|
|
script:
|
|
- Set-Location Overlord-Desktop
|
|
- |
|
|
$Version = (Get-Content package.json | ConvertFrom-Json).version
|
|
if ($Version -notmatch '^\d+\.\d+\.\d+$') {
|
|
throw "package.json version must be strict X.Y.Z SemVer; got '$Version'"
|
|
}
|
|
$Tag = "Overlord-Desktop-v$Version"
|
|
if (git ls-remote --exit-code --tags origin "refs/tags/$Tag") {
|
|
throw "Release tag already exists: $Tag"
|
|
}
|
|
$env:DESKTOP_VERSION = $Version
|
|
$env:DESKTOP_TAG = $Tag
|
|
"DESKTOP_VERSION=$Version" | Out-File -FilePath "$env:CI_PROJECT_DIR\desktop.env" -Encoding ascii
|
|
"DESKTOP_TAG=$Tag" | Out-File -FilePath "$env:CI_PROJECT_DIR\desktop.env" -Encoding ascii -Append
|
|
- bun install --frozen-lockfile
|
|
- bun run vendor
|
|
- bun run build:win
|
|
- |
|
|
$Installer = Get-ChildItem -Path src-tauri\target\release\bundle\nsis\*.exe -ErrorAction Stop | Select-Object -First 1
|
|
$ReleaseDirectory = New-Item -ItemType Directory -Path "$env:CI_PROJECT_DIR\release" -Force
|
|
$InstallerName = "Overlord-Desktop-$env:DESKTOP_VERSION-setup.exe"
|
|
Copy-Item -LiteralPath $Installer.FullName -Destination (Join-Path $ReleaseDirectory $InstallerName)
|
|
Copy-Item -LiteralPath PLEASE_READ.txt -Destination $ReleaseDirectory
|
|
"INSTALLER_NAME=$InstallerName" | Out-File -FilePath "$env:CI_PROJECT_DIR\desktop.env" -Encoding ascii -Append
|
|
artifacts:
|
|
expire_in: 30 days
|
|
paths:
|
|
- release/
|
|
reports:
|
|
dotenv: desktop.env
|
|
|
|
desktop-release:
|
|
stage: release
|
|
image: registry.gitlab.com/gitlab-org/cli:latest
|
|
needs:
|
|
- job: desktop-build-windows
|
|
artifacts: true
|
|
rules:
|
|
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
|
|
changes:
|
|
- Overlord-Desktop/package.json
|
|
- Overlord-Desktop/bun.lock
|
|
- Overlord-Desktop/scripts/**/*
|
|
- Overlord-Desktop/src/**/*
|
|
- Overlord-Desktop/src-tauri/**/*
|
|
script:
|
|
- |
|
|
set -eu
|
|
package_base="$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/overlord-desktop/$DESKTOP_VERSION"
|
|
curl --fail --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file "release/$INSTALLER_NAME" "$package_base/$INSTALLER_NAME"
|
|
curl --fail --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file release/PLEASE_READ.txt "$package_base/PLEASE_READ.txt"
|
|
release:
|
|
tag_name: $DESKTOP_TAG
|
|
tag_message: "Overlord Desktop v$DESKTOP_VERSION"
|
|
name: "Overlord Desktop v$DESKTOP_VERSION"
|
|
description: "Automated build release for Overlord Desktop v$DESKTOP_VERSION"
|
|
ref: $CI_COMMIT_SHA
|
|
assets:
|
|
links:
|
|
- name: $INSTALLER_NAME
|
|
url: "$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/overlord-desktop/$DESKTOP_VERSION/$INSTALLER_NAME"
|
|
link_type: package
|
|
- name: PLEASE_READ.txt
|
|
url: "$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/overlord-desktop/$DESKTOP_VERSION/PLEASE_READ.txt"
|
|
link_type: other
|