Net微服务实战之CI/CD( 三 )


源码构建,填写您要自动发布的项目的源码地址,并输入账号密码 。

Net微服务实战之CI/CD

文章插图
 
构建触发器,这里勾选Build when a chenge ……,把URL 复制记录下来,等下在Gitlab需要使用到 。这里就是与Gitlab webhook做了联动,可以理解成Jenkins开放了一个接口,让Gitlab被push代码后会主动告诉Jenkins做一次自动化构建 。
Net微服务实战之CI/CD

文章插图
 
构建,这里其实就是执行shell脚本完成发布 。这里得注意下我是用ssh,因为我的Jenkins是使用了docker安装的,如果我使用了【构建】模块里的【执行shell】就会在Jenkins环境里进行编译、打包,同时也需要安装相应的环境 例如dotnet sdk等 。我的环境都是装在了Server B这个宿主环境,因此通过目录挂载与SSH完成了这一次构建 。
当然有同学想在Jenkins环境先打包然后通过SSH的Transfers模块进行文件传也是可以的 。
Net微服务实战之CI/CD

文章插图
 
构建脚本这个是工具库发布到私有Nuget的脚本
【Net微服务实战之CI/CD】#脚本开始执行echo '脚本开始执行'base_path=/root/jenkins/jenkins_home/workspace/TestNugetnuget_url=http://192.168.88.139:8081/nuget_api_key=chengongproject_path=$base_path/TestNugetpackage_path=$project_path/bin/Debugcd $project_pathrm -rf $package_path/*.nupkgdotnet pack $project_path &&dotnet nuget push --source $nuget_url -k $nuget_api_key $package_path/*.nupkg >/dev/nullif [ $? -eq 0 ]; thenecho '发布成功:'$project_path''elseecho '发布失败:'$project_path''fiecho '脚本执行结束'下面这个是Web应用发布到单台服务器的脚本
#!/bin/bashecho '脚本开始执行'base_path=/root/jenkins/jenkins_home/workspace/TestDockerSwarmproject_name=testdockerswarmproject_path=$base_path/TestDockerSwarmpublish_path=$project_path/bin/Release/netcoreapp2.2/publishcd $project_pathrm -rf $project_path/bindotnet publish -c Release && (cd $publish_path &&docker stop $project_namedocker rm $project_namedocker image rm $project_namedocker build -t $project_name . &&docker run -d -p 5000:80 -e ASPNETCORE_ENVIRONMENT="Development" --name $project_name $project_name &&echo '发布成功:'$project_path'' ||echo '发布失败:'$project_path'') || echo '发布失败:'$project_path''echo '脚本执行结束'下面这个是通过Docker Swarm把Web应用发布到多台服务器
#!/bin/bashecho '脚本开始执行'base_path=/root/jenkins/jenkins_home/workspace/TestDockerSwarmproject_name=testdockerswarmproject_path=$base_path/TestDockerSwarmpublish_path=$project_path/bin/Release/netcoreapp2.2/publishprivate_registry_url=192.168.88.141:6000version=`date "+%Y%m%d%H%M%S"`cd $project_pathrm -rf $project_path/bindotnet publish -c Release && ((cd $publish_pathdocker service rm testdockerswarmdocker images | grep $private_registry_url/$project_name | awk '{print $3}' | xargs docker rmidocker build -t $private_registry_url/$project_name:$version ./docker push $private_registry_url/$project_name:$version) &&docker service create -d -p 5000:80 --replicas 2 -e ASPNETCORE_ENVIRONMENT="Development"--constraint=" node.role==worker"--name $project_name $private_registry_url/$project_name:$version &&echo '发布成功:'$project_path'' ||echo '发布失败:'$project_path'') || echo '发布失败:'$project_path''echo '脚本执行结束'上面脚本有一处地址得注意下我指定了


推荐阅读