摘要
本文描述了运行在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."
}
执行效果
存在的问题
PowerShell执行失败,但是Gitlab Runner认为是成功的。
后续还会更新
标签:nupkg,NUPKG,Windows,Gitlab,YEE,VERSION,ID,CLOUD From: https://www.cnblogs.com/amisoft/p/18179216/gitlab-runner-at-windows-push-nupkg