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"] variables: RELEASE_TAG: "v$PROJECT_VERSION" RELEASE_NAME: "$RELEASENAME" RELEASE_DESCRIPTION: "$DESCRIPTION" rules: - if: $CI_COMMIT_TAG script: - Write-Host "Creating release..." - Write-Host "当前工作目录: $PWD" - Write-Host "文件列表:" - > curl --fail --show-error --location --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"