虚拟机准备:

软件包准备:

git分布式版本控制系统,也就是开发会去⽤,进⾏代码管理,当然运维也会进⾏配置⽂件管理等,git是个神器。
1.git安装
windows:https://git-scm.com/download/win
Centos:yum install git -y
2.git⾝份设置
既然已经在系统上安装了 Git,你会想要做⼏件事来定制你的 Git 环境。
每台计算机上只需要配置⼀次,程序升级时会保留配置信息。 你可以在
任何时候再次通过运⾏命令来修改它们。
git config --global user.name "xuyuhan"
git config --global user.email "xuyuhan@qq.com"
git config --global color.ui true
git config --list #查看git当前身份设置
3.模拟开发,编写如flask代码,⼀个python主流的web框架
在想要创建代码的位置右键选择 git bash here
cat > my_flask.py << EOF
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '我左手一式太极拳,右手一剑刺身前,扫腿这招叫清雪,破轻功飞燕~
'
if __name__ == '__main__':
app.run(host = '0.0.0.0', port = 7777, debug = True )
EOF

4.删除文件
1、如果只想从暂存区删除文件,本地工作区不做出改变,可以:
git rm --cached <file>
2、被提交到仓库的某个文件需要删除,可以使用 git rm 命令:
git rm <file> # 从工作区和暂存区删除某个文件
git commit -m "" # 再次提交到仓库
3、如果在工作区不小心删错了某个文件,可以用 git checkout 将暂存区的文件覆盖工作区的文件,从而把误删的文件恢复:
git checkout -- <file>
4、用 git rm 删除文件,同时还会将这个删除操作记录下来;
用 rm 删除文件,删除的仅仅是本地物理文件,没有将其从 git 的记录中剔除。
5、git add 和 git rm 有相似的功能,
但 git add 仅能记录添加、改动的动作,删除的动作需靠 git rm 来完成。

git status #git status命令用于显示工作目录和暂存区的状态。使用此命令能看到那些修改被暂存到了, 哪些没有, 哪些文件没有被Git tracked到。git status不显示已经commit到项目历史中去的信息。看项目历史的信息要使用git log .

[root@release opt]# yum localinstall gitlab-ce-12.0.3-ce.0.el7.x86_64.rpm

gitlab启停相关命令:
查看gitlab相关命令: gitlab-ctl --help
启动:gitlab-ctl start
重启:gitlab-ctl restart #每次修改配置文件后需要重启服务,从而使得配置生效
停止:gitlab-ctl stop
修改gitlab url
[root@release opt]# vim /etc/gitlab/gitlab.rb
external_url 'http://192.168.230.111'

gitlab-ctl reconfigure #会比较久

gitlab-ctl start

gitlab-ctl sttatus

设置新密码

默认账号为:root



5、


如果你clone下来一个别人的仓库,在此基础上完成你的代码,推送到自己的仓库可能遇到如下问题:
error: remote origin already exists.表示远程仓库已存在。
因此你要进行以下操作:
1、先输入git remote rm origin 删除关联的origin的远程库
2、关联自己的仓库 git remote add origin https://gitee.com/xxxxxx.git
3、最后git push origin master,这样就推送到自己的仓库了。
正确添加以后:
git remmote -v #查看版本


cat ~/.ssh/id_rsa.pub #查看本地公钥,复制


基于git协议复制










因为jenkins是JAVA写的,所以需要安装jdk依赖
[root@release opt]# rpm -ivh jdk-8u181-linux-x64.rpm

既然有了JAVA环境,就可以安装jenkins了
[root@release opt]# yum localinstall jenkins-2.190.1-1.1.noarch.rpm #或者用rpm -ivh 安装都可以

[root@release opt]# vim /etc/sysconfig/jenkins #修改运行用户以及jenkins运行端口

[root@release opt]# systemctl start jenkins #启动jenkins
[root@release opt]# yum install net-tools -y
[root@release opt]# netstat -tunlp | grep 18080 #查看18080端口

打开网页 http://192.168.230.111:18080/
[root@release opt]# cat /var/lib/jenkins/secrets/initialAdminPassword
6f1827645cda468092ebac236ff29aa9


先改个密码

先更新下系统时间
[root@release opt]# yum install ntpdate
[root@release opt]# ntpdate -u ntp.aliyun.com
[root@release opt]# tar -zxvf jenkins_plugins.tar.gz


[root@release opt]# cd plugins/
[root@release plugins]# mv ./* /var/lib/jenkins/plugins #移动解压出来的插件到jenkins插件目录下
[root@release plugins]# systemctl restart jenkins 重启jenkins
包含汉化插件:






yum install git -y



这里引用下老师的图哈,ip地址请忽略


[root@release ~]# yum install sshpass -y #在jenkins机子上安装免密工具
[root@release opt]# ssh-keygen #生成公钥

编写免密脚本
for ip in 112 113
do
sshpass -p 'xuyuhan' ssh-copy-id 192.168.230.${ip} -o StrictHostKeyChecking=no
> /tmp/create_ssh.log 2>&1
echo "正在验证免密登录结果中...."
echo "远程获取到主机名: $(ssh 192.168.230.${ip} hostname)"
done
#非交互式分发公钥命令需要用sshpass指定密码,通过-o StrictHostKeyChecking=no #跳过ssh连接确认信息
很顺利啊兄弟们,测试登录112这台机子免密了~

脚本失败可手动免密:
ssh-copy-id root@免密机子ip
下边的操作逻辑


for i in 112 113
do
#本机拷贝代码到远程机
cd /var/lib/jenkins/workspace/flask_python && scp my_flask.py root@192.168.230.$i:/opt/
#到远程机安装Python运行依赖
ssh root@192.168.230.$i "yum install python3 python3-devel python3-pip -y >/dev/null 2>&1
pip3 install flask >/dev/null 2>&1 "
#到远程机先杀掉Python进程,然后后台运⾏代码
ssh root@192.168.230.$i "pkill python3
nohup /usr/bin/python3 /opt/my_flask.py >/dev/null 2>&1 & "
done
翻车,构建失败,构架过程可查看控制台输出,可以拿shell脚本到目标机器是手动测试,排除脚本问题~


脚本格式要注意下哦兄弟们,基础不扎实呀,总算成功了~









我这里给机子装了ansible,111这台机子做主控端,远程查看两台web机子的7777端口(源代码里对外暴露的端口)是否起来~
[root@release workspace]# ansible xuyuhan -m shell -a 'netstat -tunlp | grep 7777'




复制下来
http://192.168.230.111:18080/project/flask_python
e12e87f4a10c21574be56b158adef32b










