如何使用 cicd 更新应用程序版本? (点击一次)

How can I update the app version by using cicd? (clickonce)

我们为 WPF 项目使用了 cicd。没关系,但我们有一个大问题。当 cicd 部署 ClickOnce 包时,应用程序的版本没有改变。当我们通过 Visual Studio 手动发布时,应用程序版本会发生变化。这不是很好... 我们将 GitLab 与跑步者一起使用。 你能给些建议吗?

好的。这是我的解决方案...

我更改了 csproj-file 的代码:

<ApplicationRevision>123</ApplicationRevision>

至:

<ApplicationRevision Condition=" '$(ver)' != '' ">$(ver)</ApplicationRevision>
<ApplicationRevision Condition=" '$(ver)' == '' ">123</ApplicationRevision>

之后,我更改了我的 .gitlab-ci.yml 文件:

.myapp-runner:

  before_script:
  - CHCP 65001
  
stages:
  - build
  - cleanup

build_job:
  stage: build
  only:
    - master
  script:
  - $clickonce_ver = [int]${CI_PIPELINE_IID} + 500
  - Write-Host $clickonce_ver
  - '& "C:\tools\nuget.exe" restore myapp.sln -ConfigFile "C:\Users\User\AppData\Roaming\NuGet\NuGet.Config" -source "C:\Users\User\.nuget\packages\;https://www.nuget.org/api/v2/"'
  - '& "C:\Program Files (x86)\Microsoft Visual Studio19\Community\MSBuild\Current\Bin\msbuild.exe" -m -p:Configuration=Release /target:publish -p:cicd=true -p:ver="$clickonce_ver"'
  - '& xcopy .\bin\Release\app.publish\* C:\Publish\ /sy'
  - 'move .\bin\Release\app.publish\ .\artifacts\'
  artifacts:
    expire_in: 1 days
    paths:
        - .\artifacts\

cleanup_job:
  stage: cleanup
  only:
    - master
  script:
  - echo "Сlean up"
  - Remove-Item -Recurse -Force .\*

一个 CI_PIPELINE_IID 变量取决于 CI 作业的编号。每次启动后,该变量都会增加。

将应用程序包复制到 C:\Publish\ 文件夹。