一、安装插件
①、安装gitee插件【本文采用gitee】
②、安装.NET SDK
③、设置NET SDK插件配置
二、创建流水线
①、新建流水线
②、设置构建信息
③、配置构建触发器
④、高级设置及流水线脚本
⑤、配置流水线【配置Credentials参考】
三、创建配置Jenkinsfile
①、创建Jenkinsfile【语法参考】
②、写入基础配置【测试、编译、发布使用shell脚本】
#流水线【使用需删除注释】
pipeline{
#设置代理【所有】
agent any
#配置工具【使用已安装插件命令】
#如不知使用工具,随便输入工具命令
#错误信息会提示,下文会做具体讲解
tools{
dotnetsdk "dotnet"
}
#设置参数
parameters {
string(name: 'git_url', defaultValue: 'https://gitee.com/apricots/Apollo.Fast.git', description: '项目git地址')
string(name: 'project_name', defaultValue: 'Apollo.Fast', description: '项目名称')
string(name: 'tag', defaultValue: 'latest', description: '项目标签')
}
#设置流水步骤
stages {
#拉取代码
stage('pull code') {
steps{
echo " pull code ~ "
}
}
#自动化测试代码
stage('test code') {
steps{
sh "dotnet test ${params.project_name}"
}
}
#编译项目
stage('build code') {
steps{
sh "dotnet build ${params.project_name}"
}
}
#发布项目
stage('publish code') {
steps{
sh "dotnet publish ${params.project_name}"
}
}
}
}
③、生成拉取代码流水线脚本
(1)、选择版本控制选项:
(2)、 生成流水线脚本:
④、替换拉取脚本
#设置流水步骤
stages {
#拉取代码
stage('pull code') {
steps{
#替换拉取脚本
checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: []
, userRemoteConfigs: [[credentialsId: 'a6900740-984b-4296-a3ca-26212fe4a210'
, url: 'https://gitee.com/apricots/Apollo.Fast.git']]])
}
}
}
⑤、生成测试、编译、发布流水脚本【只做build演示】
⑥、添加NET SDK 工具脚本【如不配置会出现下文错误】
pipeline{
agent any
#添加工具【如不知使用已装插件、随便填写查看日志,有相关工具提示,文末:错误&处理有详解】
tools{
dotnetsdk "dotnet"
}
parameters {
string(name: 'project_url', defaultValue: 'https://gitee.com/apricots/Apollo.Fast.git', description: '项目git地址')
string(name: 'tag', defaultValue: 'latest', description: 'docker版本标签')
}
stages {
}
}
(1)、错误提示信息
⑦、替换测试、编译、发布脚本
#流水线【使用需删除注释】
pipeline{
#设置代理【所有】
agent any
#配置工具【使用已安装插件命令】
#如不知使用工具,随便输入工具命令
#错误信息会提示,下文会做具体讲解
#下文(三 --> ②)
tools{
dotnetsdk "dotnet"
}
#设置参数
parameters {
string(name: 'git_url', defaultValue: 'https://gitee.com/apricots/Apollo.Fast.git', description: '项目git地址')
string(name: 'project_name', defaultValue: 'Apollo.Fast', description: '项目名称')
string(name: 'tag', defaultValue: 'latest', description: '项目标签')
}
#设置流水步骤
stages {
#拉取代码
stage('pull code') {
steps{
checkout([$class: 'GitSCM', branches: [[name: '*/master']]
, extensions: [], userRemoteConfigs: [[credentialsId: 'a6900740-984b-4296-a3ca-26212fe4a210'
, url: 'https://gitee.com/apricots/Apollo.Fast.git']]])
}
}
#自动化测试代码
stage('test code') {
steps{
dotnetTest configuration: 'Release', project: "${params.project_name}", showSdkInfo: true
}
}
#编译项目
stage('build code') {
steps{
dotnetBuild configuration: 'Release', project: "${params.project_name}", showSdkInfo: true
}
}
#发布项目
stage('publish code') {
steps{
dotnetPublish configuration: 'Release', project: "${params.project_name}", showSdkInfo: true
}
}
}
}
⑧、完整SDK构建发布脚本
pipeline{
agent any
tools{
dotnetsdk "dotnet"
}
parameters {
string(name: 'git_url', defaultValue: 'https://gitee.com/apricots/Apollo.Fast.git', description: '项目git地址')
string(name: 'project_name', defaultValue: 'Apollo.Fast', description: 'docker项目名称')
string(name: 'tag', defaultValue: 'latest', description: 'docker版本标签')
}
stages {
stage('拉取代码') {
steps{
echo "${params.git_url}"
checkout([$class: 'GitSCM', branches: [[name: '*/master']]
, extensions: [], userRemoteConfigs: [[credentialsId: 'a6900740-984b-4296-a3ca-26212fe4a210'
, url: 'https://gitee.com/apricots/Apollo.Fast.git']]])
}
}
stage('自动化测试') {
steps{
dotnetTest project: "${params.project_name}", showSdkInfo: true
}
}
stage('编译项目') {
steps{
dotnetBuild configuration: 'Release', project: "${params.project_name}", showSdkInfo: true
}
}
stage('发布项目') {
steps{
dotnetPublish project: "${params.project_name}", selfContained: false, showSdkInfo: true
}
}
}
}
⑨、完整shell脚本构建发布脚本
pipeline{
agent any
tools{
dotnetsdk "dotnet"
}
parameters {
string(name: 'git_url', defaultValue: 'https://gitee.com/apricots/Apollo.Fast.git', description: '项目git地址')
string(name: 'project_name', defaultValue: 'Apollo.Fast', description: 'docker项目名称')
string(name: 'tag', defaultValue: 'latest', description: 'docker版本标签')
}
stages {
stage('拉取代码') {
steps{
echo "${params.git_url}"
checkout([$class: 'GitSCM', branches: [[name: '*/master']]
, extensions: [], userRemoteConfigs: [[credentialsId: 'a6900740-984b-4296-a3ca-26212fe4a210'
, url: 'https://gitee.com/apricots/Apollo.Fast.git']]])
}
}
stage('自动化测试') {
steps{
sh "dotnet test ${params.project_name}"
}
}
stage('编译项目') {
steps{
sh "dotnet build ${params.project_name}"
}
}
stage('发布项目') {
steps{
sh "dotnet publish ${params.project_name}"
}
}
}
}
⑩、构建项目
四、问题&处理
①、缺少ICU包
(1)、错误信息:
+ dotnet test apricot.net
Process terminated. Couldn't find a valid ICU package installed on the system. Please install libicu using your package manager and try again.
Alternatively you can set the configuration flag System.Globalization.Invariant to true if you want to run with no globalization support.
Please see https://aka.ms/dotnet-missing-libicu for more information.
at System.Environment.FailFast(System.String)
at System.Globalization.GlobalizationMode+Settings..cctor()
at System.Globalization.CultureData.CreateCultureWithInvariantData()
at System.Globalization.CultureData.get_Invariant()
at System.Globalization.CultureInfo..cctor()
at System.Globalization.CultureInfo.get_CurrentUICulture()
at System.TimeZoneInfo.GetUtcStandardDisplayName()
at System.TimeZoneInfo.CreateUtcTimeZone()
at System.TimeZoneInfo..cctor()
at System.DateTime.get_Now()
at Microsoft.DotNet.Cli.Program.Main(System.String[])
(2) 错误截图:
解决:
(1)、添加环境变量
#linux (2)、jenkins界面配置: (2)、项目文件配置: #Apollo.Fast.csproj 添加配置节点 ②、查看插件工具使用 ③、未配置插件【参考(一 -->①)】 五、参考 ①、项目地址 ②、zoukankan【ICU处理】
root@ecs-16640:~# export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
#jenkins 修改数据卷【对应容器:/var/jenkins_home/config.xml】
root@ecs-16640:~# cat /opt/jenkins/jenkins_home/config.xml
#找到节点
#添加节点
<string>DOTNET_SYSTEM_GLOBALIZATION_INVARIANTstring>
<string>1string>