代码改变世界

天行健,君子以自强不息

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

摘要

本文描述了运行在Windows上的Gitlab Runner,如果调用PowerShell来执行推送nupkg包的命令。

.gitlab-ci.yml

完整脚本如下:

stages:          # List of stages for jobs, and their order of execution
  - build
  - test
  - push-nupkg

variables:
    YEE_CLOUD_VERSION_ID : 2024.5.$CI_PIPELINE_IID
    YEE_CLOUD_NUPKG_DIR : $NUPKG_OUTPUT_ROOT\\Yee.Cloud\\$YEE_CLOUD_VERSION_ID

推送包:
  stage: push-nupkg
  before_script:
    - .$PUSH_NUPKG_POWERSHELL_FILE
  script:
    - echo "Deploying application..."
    - Push-Nupkg $NEXUS_REPO $NUGET_API_KEY $YEE_CLOUD_NUPKG_DIR $YEE_CLOUD_VERSION_ID
    - echo "Application successfully deployed."

在PowerShell中注册函数/方法

执行了这一句,在PowerShell中就能使用PUSH_NUPKG_POWERSHELL_FILE这个文件中的Push-Nupkg函数/方法了。

  before_script:
    - .$PUSH_NUPKG_POWERSHELL_FILE

调用PowerShell的函数

调用Push-Nupkg方法,把4个参数传进去即可。

  script:
    - Push-Nupkg $NEXUS_REPO $NUGET_API_KEY $YEE_CLOUD_NUPKG_DIR $YEE_CLOUD_VERSION_ID

Gitlab服务器中的CI/CD变量

变量1和2:NUPKG_OUTPUT_ROOT和YEE_CLOUD_VERSION_ID

上文中已经解释了这个变量。

变量3:NEXUS_REPO

我们的NuGet仓库是用Nexus搭建的,这个值就是仓库的网址,比如https://nuget.abc.com

变量4:NUGET_API_KEY

用户登入Nexus的网页,然后去自己账户下生成Key,用于执行nuget push的时候带在URL里。ps:新手在折腾自动集成的时候,有个误区,就是不知道这个key只能用于上传nupkd的包,并不能用于下载nupkg的包。

PowerShell

PowerShell脚本,被Gitlab Runner调用时,需要4个参数。

function Push-Nupkg {

	param (
		[string]$NEXUS_REPO,
		[string]$NUGET_API_KEY,
		[string]$PROJECT_NUPKG_DIR,
		[string]$VERSION_ID
	)

echo "NuGet仓库的http(s)开头的URL:"$NEXUS_REPO
echo "推送NuGet包用到的令牌:"$NUGET_API_KEY
echo "项目的nupkg包的目录"$PROJECT_NUPKG_DIR
echo "包的版本号,只在上述目录下搜索这个版本号的nupkg包:"$VERSION_ID

cd $PROJECT_NUPKG_DIR
dotnet nuget push *.$VERSION_ID.nupkg -k $NUGET_API_KEY -s $NEXUS_REPO

echo "Application successfully deployed."

}

执行效果

img

存在的问题

PowerShell执行失败,但是Gitlab Runner认为是成功的。

后续还会更新

posted on 2024-05-08 11:02  终南山人  阅读(44)  评论(0)    收藏  举报