jenkins+gitlab+ansible-tower实现发布

news/2024/9/23 3:21:24/

前提准备:
gitlab中上传相应的jenkinsfile文件和源码。
安装和破解ansible-tower。
安装jenkins
大致流程:从gitlab中拉取文件,存放到windows机器上,使用nuget等进行打包到windows中,使用sshPublisher语句传输到远程ansible-tower的机器上,打包传输完成后,使用ansible-tower进行发布。
机器分布:
jenkins:192.168.50.155 gitlab:192.168.50.156 ansible-tower:192.168.50.157
后端服务器:192.168.50.154 192.168.50.155
1.jenkins中的配置
第一步:配置gitlab的用户名和密码
在这里插入图片描述
在这里插入图片描述
第二步:新建项目item
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第三步:得到的界面
在这里插入图片描述
2.配置Nodes.配置window机器将项目打包
在这里插入图片描述
配置好后,还需要在节点windows服务器中执行相关的命令,才能建立连接。参考
https://blog.csdn.net/weixin_41238626/article/details/137828742
3.配置远端ansible-tower服务器相关
参考 https://blog.csdn.net/qq_25646191/article/details/109103252
需要安装Publish over SSH插件。输入密码后可以点击右下角进行测试 test configuration
在这里插入图片描述
4 在打包机器上安装dotnet版本
需要安装dotnet环境
https://download.visualstudio.microsoft.com/download/pr 需要配置环境变量
安装 nuget 需要配置环境变量
安装vs https://c2rsetup.officeapps.live.com/ 工作负载选择ASP.NET和Web开发、.NET桌面开发
参考:https://www.cnblogs.com/sgxw/p/15607574.html
proget 8624端口部署–》安装
参考: https://www.cnblogs.com/zerodai/p/10796535.html
5 测试查看是否能够打包已经是否能够传输到ansible-tower中
在这里插入图片描述
在这里插入图片描述
Jenkinsfile文件内容

pipeline{parameters {string defaultValue: '', description: 'tag', name: 'Tag', trim: falsechoice choices: ['class-assistant-linux-pr', 'class-assistant-linux'], description: '', name: 'TARGET_HOST'choice choices: ['Release', 'Publish', 'Alpha', 'Debug'], description: '', name: 'Configuration'
}agent nonestages{stage("build"){agent {label "win-110-88"}steps("first steps"){bat 'nuget.exe restore .\\src\\ClassAssistant.sln -Source http://192.168.60.216:8624/nuget/Proget/'bat 'dotnet publish .\\src\\ClassAssistant.Apis\\ClassAssistant.Apis.csproj --force -o ./publish/publish --configuration %Configuration%'powershell 'Get-ChildItem -Path $ENV:WORKSPACE/publish/publish/* -Include appsettings.*,log4net.config -Recurse | Remove-Item'bat '''cd %WORKSPACE%\\publish\\publish\\"C:\\Program Files\\7-Zip\\7z.exe" a   ..\\latest.zip .'''archiveArtifacts '/publish/*.zip'}}stage("sendfile and ansible job"){agent {label "win-110-88"}steps("sendfile steps"){sshPublisher(publishers: [sshPublisherDesc(configName: 'ansible-50.157', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/${TARGET_HOST}/', remoteDirectorySDF: false, removePrefix: '/publish', sourceFiles: '/publish/*.zip')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])}}}
}

6 ansible-tower中中进行相关配置配置发布
参考:https://blog.csdn.net/qq_48736646/article/details/137777740
ansible剧本内容

class-test.yaml
---
- name: iis pull latest.zip and updatehosts: class-assistant-linuxgather_facts: falsemax_fail_percentage: 100serial: 2vars:PATH: class-assistant-linux#group "group:" 重启group需要加:  program program重启单个项目直接写项目名称AppPool: core-class-assistant-linuxvars_files:- ./extend_vars.yamlroles:- update
extend_vars.yaml
iis_path:class-assistant-linux:192.168.50.154:- "/opt/class-assistant-linux"192.168.50.155:- "/opt/class-assistant-linux"
hosts:
[class-assistant-linux]
192.168.50.154
192.168.50.155update/tasks/main.yml
---
- name: url get fileshell: scp -o StrictHostKeyChecking=no root@192.168.50.157:/data/win_iis/{ PATH }/latest.zip /tmp/{{ PATH }}_latest.ziptags: update
- name: unzip fileshell: sudo unzip  -q -o /tmp/{{ PATH }}_latest.zip -d {{ item }}with_items: "{{ iis_path[PATH][inventory_hostname] }}"tags: update
- name: restart webapppoolshell: sudo supervisorctl restart {{AppPool}}- name: Remove a file, if presentshell: rm -f /tmp/{{ PATH }}_latest.ziptags: update

7 结果
在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/1457427.html

相关文章

[力扣题解]40. 组合总和 II

题目&#xff1a;40. 组合总和 II 思路 回溯法 &#xff08;回溯还是很难的&#xff0c;递归不好理解&#xff0c;看着代码很少吧。。。&#xff09; 代码 class Solution { public:vector<vector<int>> result;vector<int> path;void function(vector&l…

【数据结构】顺序表专题详解(带图解析)

最好的时光&#xff0c;在路上;最好的生活&#xff0c;在别处。独自上路去看看这个世界&#xff0c;你终将与最好的自己相遇。&#x1f493;&#x1f493;&#x1f493; 目录 •&#x1f319;说在前面 &#x1f34b;知识点一&#xff1a;什么是数据结构 • &#x1f330;1.什…

AI烟雾监测识别摄像机:智能化安全防范的新利器

随着现代社会的不断发展&#xff0c;人们对于安全问题的关注日益增加&#xff0c;尤其是在日常生活和工作中&#xff0c;对火灾等意外事件的预防成为了一项重要任务。为了更好地应对火灾风险&#xff0c;近年来&#xff0c;AI烟雾监测识别摄像机应运而生&#xff0c;成为智能化…

视频素材哪个app好?8个视频素材库免费使用

视频内容已成为现代传播中不可或缺的一部分&#xff0c;具备卓越的视频素材对于提升任何媒体作品的质量和吸引力尤为关键。这里列举的一系列精挑细选的全球视频素材网站&#xff0c;旨在为您的商业广告、社交媒体更新或任何其他类型的视觉项目提供最佳支持。 1. 蛙学府&#x…

python from import 有这个文件但找不到路径

可能的问题&#xff1a; 模块文件路径不在Python解释器的搜索路径中 解决办法&#xff1a; 如果模块文件路径/path/abc.py不在Python解释器的搜索路径中&#xff0c;Python解释器会报错ModuleNotFoundError: No module named ‘abc’。这时候我们需要将模块文件路径添加到Pyth…

Springboot 集成 Consul 实现服务注册中心-05

因为后续很多模块都要用到注册中心&#xff0c;所以此处先实现此模块。 Consul简介 Consul是一个开源的服务发现和配置管理工具&#xff0c;具有跨平台、运行高效等特点。它由HashiCorp公司开发&#xff0c;并使用Go语言编写。Consul主要用于实现分布式系统中的服务发现、健康…

python中如何遍历字典

1. 遍历字典的键key ① >>> d{list:[1, 2, 3],1:123,111:python3,tuple:(4, 5, 6)} >>> for key in d:print(str(key):str(d[key])) list:[1, 2, 3] 1:123 111:python3 tuple:(4, 5, 6) ② >>> d{list:[1, 2, 3],1:123,111:python3,tuple:(4, 5, 6…

快速找出存(不存在)在某个(或多个)文件的文件夹

首先&#xff0c;需要用到的这个工具&#xff1a; 度娘网盘 提取码&#xff1a;qwu2 蓝奏云 提取码&#xff1a;2r1z 想要找出有下面这个文件存在的文件夹 切换到批量文件复制版块&#xff0c;快捷键Ctrl5 右侧&#xff0c;搜索添加 选定范围&#xff0c;勾选搜索文件夹、包…