Files
OneLevelXmlOpr/.gitlab-ci.yml
2026-01-27 20:56:28 +08:00

73 lines
2.4 KiB
YAML

stages:
- build
- release
variables:
VS_DIR: "C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools"
VS_ENV: "C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/Common7/Tools/Microsoft.VisualStudio.DevShell.dll"
CMAKE_BUILD_TYPE: Release
PROJECT_VERSION: "1.3.13"
CMAKE_GENERATOR: "Ninja"
PROJECT_NAME: "OneLevelXmlOpr"
ARCH_TYPE: x64
QT_PATH: "C:/Dev/qt6"
RELEASENAME: "$PROJECT_NAME-v$PROJECT_VERSION"
DESCRIPTION: |
# $PROJECT_NAME v$PROJECT_VERSION
# Windows运行器配置
.win-template: &win
tags:
- win
before_script:
- echo "Running on Windows runner"
artifacts:
expire_in: 1 hour
# Windows构建 - 在win运行器上执行
build-windows:
<<: *win
stage: build
rules:
- if: $CI_COMMIT_TAG
script:
- Import-Module $VS_ENV
- Enter-VsDevShell -VsInstallPath $VS_DIR -DevCmdArguments "-arch=$ARCH_TYPE"
- cmake -Bbuild -G "$CMAKE_GENERATOR" -DCMAKE_BUILD_TYPE="$CMAKE_BUILD_TYPE" -DCMAKE_PREFIX_PATH="$QT_PATH"
- cmake --build build --config "$CMAKE_BUILD_TYPE"
- Write-Host "package windows start..."
- cd build/bin
- Write-Host "windeployqt.exe Path is $QT_PATH/bin/windeployqt.exe"
- >
& "$QT_PATH/bin/windeployqt.exe" "$CMAKE_BUILD_TYPE/$PROJECT_NAME.exe" --no-system-dxc-compiler --no-translations --no-system-d3d-compiler
- >
Compress-Archive -Path "$CMAKE_BUILD_TYPE" -DestinationPath "$PROJECT_NAME-v$PROJECT_VERSION-win-$ARCH_TYPE.zip"
artifacts:
paths:
- build/bin/$PROJECT_NAME-v$PROJECT_VERSION-win-$ARCH_TYPE.zip
create-release:
stage: release
needs: ["build-windows"]
tags:
- pi
variables:
RELEASE_TAG: "v$PROJECT_VERSION"
RELEASE_NAME: "$RELEASENAME"
RELEASE_DESCRIPTION: "$DESCRIPTION"
rules:
- if: $CI_COMMIT_TAG
script:
- echo "start release"
- >
curl --fail --show-error --header "JOB-TOKEN: $CI_JOB_TOKEN" \
--upload-file "build/bin/$PROJECT_NAME-v$PROJECT_VERSION-win-$ARCH_TYPE.zip" \
"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/releases/v$PROJECT_VERSION/$PROJECT_NAME-v$PROJECT_VERSION-win-$ARCH_TYPE.zip"
release:
tag_name: $RELEASE_TAG
name: $RELEASE_NAME
description: $RELEASE_DESCRIPTION
assets:
links:
- name: "$PROJECT_NAME-v$PROJECT_VERSION-win-$ARCH_TYPE.zip"
url: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/releases/v$PROJECT_VERSION/$PROJECT_NAME-v$PROJECT_VERSION-win-$ARCH_TYPE.zip"