git + Jenkins + gitlab
安装Jenkins
yum install -y java-1.8.0-openjdk && \
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo && \
rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key &&\
yum clean all && yum makecache && \
yum install -y jenkins
启动Jenkins
systemctl start jenkins
修改源和端口号
[root@192 ~]# cd /var/lib/jenkins/
[root@192 jenkins]# vim hudson.model.UpdateCenter.xml
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
[root@192 users]# vim /etc/sysconfig/jenkins
JENKINS_PORT="8089"
systemctl restart jenkins
[root@192 ~]# ss -anlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 50 :::8089 :::*
LISTEN 0 128 :::22 :::*
[root@192 users]# cat /var/lib/jenkins/secrets/initialAdminPassword
54991d91cf534a67bb8991c937a0d7be
创建账户
代码流水线管理
创建一个任务
写一个脚本用来测试
[root@192 ~]# echo 'hello world' > demo.sh
[root@192 ~]# chmod +x demo.sh
选择shell
生秘钥,给权限
[root@192 .ssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:jSakoY2EPaoFb7rw5dIZ+88I22LxgPxI0Pf5pkg+Mmk root@192.168.30.244
The key's randomart image is:
+---[RSA 2048]----+
| |
| o |
|o.+ . . |
|.=.=.+ o |
|.o*oo...S . |
|.++ + oo |
|+. =+B . |
|.oE=O=.oo |
|...==+=+o |
+----[SHA256]-----+
[root@192 .ssh]# chmod 700 ~/.ssh
[root@192 .ssh]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[root@192 .ssh]# chmod 600 ~/.ssh/authorized_keys
[root@192 .ssh]# visudo
jenkins ALL=(ALL) NOPASSWD:/usr/bin/ssh
jenkins执行脚本
构建一下
输出查看结果
现在我们要将代码质量管理和测试部署连接起来。
这时候就用到了git钩子
我们需要安装jenkins插件parameterized
选择test001
再次点击项目设置的时候就会出现Trigger parameterized build on other projects
构建,测试一下
查看效果,增长了
这样我们每次点击test001 它就会在构建完成之后在对test002进行构建
下载pipeline。这样只需要构建一个项目,就会帮我们完成所有相关项目
搜索插件pipeline
新建一个试图
pipeline 配置
设置第一个构建的项目,从它开始,后面的项目都要跟它进行操作
点击RUN
我们下次还想看到试图,点击
Jenkins + gitlab集成
Jenkins + gitlab集成后,实现的功能是 开发写好代码提交至gitlab上,当时开始push到gitlab上之后,jenkins自动帮我们立即构建
这个项目我们需要安装一个gitlab钩子的脚本
提示: jenkins不论想实现什么功能,都需要安装插件!!
这里需要我们在服务器里面写一个令牌,在jenkins上也写一个令牌。这两个可以连接到一起就可以。
#因为用到了令牌我们还需要在安装一个插件,否则将无法使用。因为令牌是需要登录之后才会有,所以需要有一个管理的插件
插件搜索:Build Aut
[root@192 ~]# openssl rand -hex 10
fbc1a45fa29bffc506c6
然后我们点击保存即可
因为jenkins上也提示我们需要在gitlab上添加钩子脚本
先配置 gitlab秘钥,后面会用到
[root@192 ~]# cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC645pTZtG7lJYTtfjn/JoPan73KkYA9qtAamHy34Lyit5mrUKZ+lo2VqpEIMk2FyKkZ1c9KTFLT8qqiYyVx+fuqH77vbK1sbUIA+8oH/taGagyA8IWIsaEA+77CjP9+jDUvbq1xSZpY1m9vq8CmtkmNqxDB8ePR4riLqJbqH+daKm+j1P84DIlqIV4iNZ/YX+LuO4rsbscdGTZkR9RZ3LU3SYnu3dpHNljk4GvA12X3GpZLYBExeSRfXdPXY1ME/TfcpLGkhK6t2HSuPBFCbqnx7jXx1dh/frStQ9Qa9ZHS48c8o7pyNaQWvXFBt3PvsWO55sRmrn/N23eBbeJEWkT [email protected]
因为我这里Jenkins和gitlab在一台主机上,
所以我需要让钩子可以访问本主机
添加Webhooks
填上URL和密码
测试,可以成功
秘钥已经做过了
向git服务器提交代码,验证是否可以自动部署:
[root@192 ~]# echo 'test001' > index.html
[root@192 ~]# git add index.html
[root@192 ~]# git commit -m "text"
[root@192 ~]# git push origin master
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 265 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To git@192.168.30.244:zyy/test.git
94dd7e2..c47acb3 master -> master
代码已经传到仓库了
看一下Jenkins服务的日志
[root@192 ~]# tail -f /var/log/jenkins/jenkins.log
确实已经自动构建
[root@jenkins java]# mv /root/jdk-8u261-linux-x64.rpm .
[root@jenkins java]# ls
jdk-8u261-linux-x64 (1).rpm
[root@jenkins java]# chmod +x jdk-8u261-linux-x64.rpm
[root@jenkins java]# rpm -ivh jdk-8u261-linux-x64.rpm
[root@192 ~]# rpm -ivh jdk-8u261-linux-x64.rpm
[root@jenkins java]# vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_261-amd64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
[root@jenkins java]# java -version
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)
[root@192 ~]# source /etc/profile
[root@jenkins ~]# cd /var/lib/jenkins
[root@jenkins jenkins]# vim hudson.model.UpdateCenter.xml
http://mirror.xmission.com/jenkins/updates/update-center.json
[root@jenkins jenkins]# systemctl restart jenkins
[root@192 ~]# mkdir /opt/server/
[root@192 ~]# tar xf apache-maven-3.5.4-bin.tar.gz -C /opt/server/
export M2_HOME=/opt/server/apache-maven-3.5.4
export PATH=$PATH:$M2_HOME/bin
[root@192 ~]# source /etc/profile