diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..b428b9a --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,68 @@ +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 + --- + *自动化构建于: $CI_PIPELINE_URL* + +# 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 + 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" + - cmake --build build --config "$CMAKE_BUILD_TYPE" + - Write-Host "package windows start..." + - cd "build/bin" + - "$QT_PATH/bin/windeployqt.exe" .\OneLevelXmlOpr.exe + - Compress-Archive -Path *.exe, *.dll -DestinationPath "$PROJECT_NAME-v$PROJECT_VERSION-win-$ARCH_TYPE.zip" -Recurse + 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: + - echo "Creating release..." + - > + curl --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" \ No newline at end of file