day79 jenkins的实战操作(cicd)
day79 jenkins的实战操作(cicd)
1.jenkins结合gitlab ,实现ci,cd流水线(python)
开发 》 gitlab 》 运维 》 目标的服务器

1. 准备一个开发机器,写一个my-app.py
2.推送到gitlab仓库,gitlab新建一个项目
4.运维下载gitlab代码,写好Jenkins去调用脚本
运维 : Jenkins显示小红灯,查看控制台的日志的输出解决bug
显示小蓝灯,一切正常。
创建自由风格的job,能执行各种基本操作,执行shell的命令
创建远程项目,gitlab

如一个公司
一个开发的部门
chaoge 管理人员 有一个gitlab的账户
wenjie 员工 有一个gitlab的账户
生成了一个空仓库必须生成一个README.md的帮助手册
才可以有后续的操作

开发写代码,推送到目标的仓库
wenjie 就得用分支去推送代码
gitlab 仓库,默认master分支保护,文杰属于开发的权限。
完全的空的仓库 master
用管理员生成一些初始的数据,master分支
思路,用管理员账户,推送数据,生成master分支
管理员用户推送
ssh 把本地的公钥推过去

创建一个文件夹,创建一个文件写一些数据,把数据推送上去
1. mkdir yzk_python
2 git init .
3 git add .
4 git commit -m "master 提交了一个hello.md"
5 git remote add origin 0.0.9:yzk_linux/yzk_python.git
6 git push -u origin master
[root@jenkins yzk_pytho]# git push -u origin master
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (5/5), 594 bytes | 0 bytes/s, done.
Total 5 (delta 0), reused 0 (delta 0)
To git@10.0.0.9:yzk_linux/yzk_python.git
93bc44f..85716cf master -> master
Branch master set up to track remote branch master from origin.

2.开发写代码,推送到目标的服务器上
webjie分支去推代码
gitlab仓库,默认master分支保护,wenjie属于开发的权限
wenjie账户,去推送代码,到项目中
# 先创建开发的分支,
# 克隆远程的仓库,成为本地的仓库,提交版本
git clone git@10.0.0.9:yzk_linux/yzk_python.git
[root@db-51 ~]# cd yzk_python/
[root@db-51 yzk_python]# ll
total 8
-rw-r--r-- 1 root root 43 May 12 06:17 readme.md
-rw-r--r-- 1 root root 28 May 12 06:17 README.md
[root@db-51 yzk_python]# cat readme.md
今天是美好的一天,有点晚啦。
# 写代码然后发送
[root@db-51 yzk_python]# touch my_flask.py
[root@db-51 yzk_python]# vim my_flask.py
[root@db-51 yzk_python]# git add .
[root@db-51 yzk_python]# git commit -m "写了一个my_flask.py代码"
[master f0c8a0d] 写了一个my_flask.py代码
1 file changed, 11 insertions(+)
create mode 100644 my_flask.py
[root@db-51 yzk_python]#
[root@db-51 yzk_python]#
[root@db-51 yzk_python]# git checkout -b wenjie
Switched to a new branch 'wenjie'
[root@db-51 yzk_python]# git checkout wenjie
Already on 'wenjie'
[root@db-51 yzk_python]# git status
# On branch wenjie
nothing to commit, working directory clean
[root@db-51 yzk_python]#
---------------------------------------------------------------------
[root@db-51 ~/linux0224_python]#cat my_flask.py
# coding:utf-8
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '<h1> 测试jenkins 结合 gitlab 做python项目的更新,发版 -----v1 </h1>'
if __name__ == '__main__':
app.run(host="0.0.0.0")
-------------------------------------------------------
# 用wenjie分支推送代码到仓库
[root@db-51 yzk_python]# git remote -v
origin git@10.0.0.9:yzk_linux/yzk_python.git (fetch)
origin git@10.0.0.9:yzk_linux/yzk_python.git (push)
[root@db-51 yzk_python]# git push -u origin wenjie
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 552 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote:
remote: To create a merge request for wenjie, visit:
remote: http://10.0.0.9/yzk_linux/yzk_python/merge_requests/new?merge_request%5Bsource_branch%5D=wenjie
remote:
To git@10.0.0.9:yzk_linux/yzk_python.git
* [new branch] wenjie -> wenjie
Branch wenjie set up to track remote branch wenjie from origin.

注意细节,用wenjie账户去访问,merage请求





1. 确定用管理员合并代码
2. 在次确认master分支
开发就下场休息了。开始运维干活了
-------------太晚了,明天在干-------------------休息
小结
- 开发的代码的上传
- jenkins实现gitlab代码的下载
- 发布到目标机器上,运行(web7机器)测试运行
运维上场,设置jenkins,去下载gitlab的代码
1, 创建自由风格的job
yzk_linux_python
2. 配置job

频繁的点击立即的构建
再workspace生成太多的job
先看gitlab 账号密码的登录

这里添加gitlab的用户和密码
应该用运维的账户,去获取master代码

这里就看到了数据
再用gitlab用ssh-key的方式,代码的下载
jenkins机器的公钥
配置公钥到 gitlab的平台
1.添加jenkins的公钥到gitlab的平台上
2. 去jenkins的job中,添加密钥的认证的方式
【ssh username with private key 】
ssh的用户名,私钥

小结
- 开发的v1代码的上传了
- jenkins实现gitlab代码的下载
- 发布到目标机器上 运行(web-7)测试的运行
jinkens
1. git拉取代码
2. 自由的风格,执行shell的功能
优化脚本,实现更新功能
目前先完成简单的部署操作即可,先一切从简,完成发布即可
1. jenkins上的构建shell配置
# 1.进入job工作区,代码发过去
# 远程创建一个源码目录
ssh root@10.0.0.7 "mkdir -p /opt/linux0224_python"
# 进入job的工作区,把当前所有源码,发到目标机器的目录下
cd ${WORKSPACE} && scp ./* root@10.0.0.7:/opt/linux0224_python/
# 将部署脚本,发到远程机器上
scp /my_shell/run_python_web7.sh root@10.0.0.7:/opt/
# 远程执行命令,再web7机器,部署flask项目
ssh root@10.0.0.7 "bash /opt/run_python_web7.sh"
# 2.部署操作写成脚本,发给目标机器
#!/bin/bash
cd /opt/linux0224_python/
yum install python3-devel python3 python3-pip -y > /dev/null
pip3 install flask
# 重启逻辑
kill -9 $(ps -ef|grep my_flask.py|grep -v grep | awk '{print $2}')
nohup python3 my_flask.py >nohup.log 2>&1 &
# 查看进程id
echo "当前python进程是:$(ps -ef|grep my_flask.py|grep -v grep | awk '{print $2}')"
jenkins实现更新代码的流程结果
1. 模拟开发,改代码
2. 点击立即构建
2.1 看看反复更新,好使吗
3.看结果

🌸🌸🌸🌸完结撒花
浙公网安备 33010602011771号