当前位置:   article > 正文

git 源代码自动检查_jenkins的部署、实现自动拉取gitlab仓库代码、实现项目中代码自动部署以及项目关联触发...

remote: enumerating objects: 18, done. remote: counting objects: 100% (18/18

jenkins主机内存和gitlab主机内存最好配置4G及以上,防止各自的web端打不开

1.配置JDK环境

1)jdk解压到此目录

[root@localhost src]# pwd /usr/local/src

[root@localhost src]# tar xvf jdk-8u211-linux-x64.tar.gz

2)创建jdk相关的软连接

[root@localhost src]# ln -sv jdk1.8.0_211/ jdk

[root@localhost src]# ln -sv /usr/local/src/jdk/bin/* /usr/bin/

3)配置jdk的环境变量

[root@localhost src]# vim /etc/profile

……

export JAVA_HOME=/usr/local/jdk

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

4)环境变量生效

[root@localhost src]# source /etc/profile

5)测试java命令并查看java的版本号

[root@localhost src]# java -version

java version "1.8.0_211"

Java(TM) SE Runtime Environment (build 1.8.0_211-b12)

Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)

2.安装并配置jenkins

1)下载rpm包并进行安装,可以看到jenkins的rpm包在安装时无依赖

[root@localhost rpm]# ls

jenkins-2.164.3-1.1.noarch.rpm

[root@localhost rpm]# rpm -ivh jenkins-2.164.3-1.1.noarch.rpm

warning: jenkins-2.164.3-1.1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID d50582e6: NOKEY

Preparing... ################################# [100%]

Updating / installing...

1:jenkins-2.164.3-1.1 ################################# [100%]

2)修改jenkins的配置文件

[root@localhost jenkins]# grep '^[a-Z]' /etc/sysconfig/jenkins

JENKINS_HOME="/var/lib/jenkins" #jenkins的家目录,保存着其构建的项目、安装的插件、

JENKINS_JAVA_CMD=""

JENKINS_USER="root" #默认是jenkins用户,这里将这里改为root用户,避免将来部署代码到后端服务因为权限问题导致部署失败

JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dcom.sun.management.jmxremote #options选项中开启监控功能,为zabbix等监控软件提供一个监控接口

-Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false

-Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname="192.168.1.15""

JENKINS_PORT="8080"

JENKINS_LISTEN_ADDRESS=""

JENKINS_HTTPS_PORT=""

JENKINS_HTTPS_KEYSTORE=""

JENKINS_HTTPS_KEYSTORE_PASSWORD=""

JENKINS_HTTPS_LISTEN_ADDRESS=""

JENKINS_DEBUG_LEVEL="5"

JENKINS_ENABLE_ACCESS_LOG="no"

JENKINS_HANDLER_MAX="100"

JENKINS_HANDLER_IDLE="20"

JENKINS_ARGS=""

3)启动jenkins服务

[root@localhost rpm]# systemctl start jenkins

4)查看jenkins服务监听的端口

[root@localhost rpm]# ss -tnlp

State Recv-Q Send-Q Local Address:Port Peer Address:Port

……

LISTEN 0 50 :::8080 :::*

users:(("java",pid=2739,fd=166))

……

3.浏览器访问jenkins的web端并登录

1)浏览器访问8080端口

2)服务器主机上查看此初始化管理员秘钥文件,并将秘钥输入登录jenkins的web端

[root@localhost rpm]# cat /var/lib/jenkins/secrets/initialAdminPassword

fb58302d30c34478b086244bd725bc68

3)安装默认推荐插件

4)创建一个管理员账号

5)进入jenkins主界面

4.安装gitlab和blue ocean相关必要插件

1)在插件管理中过滤出需要安装插件

2)正在安装gitlab相关的插件

3)安装一个blue ocean插件,是一个界面显示插件

4)安装角色权限插件

5.创建新用户和角色以及权限管理等

1)创建一个新用户

2)打开全局安全设置,将认证类型改为角色认证,默认的认证类型是登录用户可以做任何事

3)创建一个角色

4)只给此角色分配一个读权限

5)将新创建的用户服务common角色

6)利用新创建的用户登录jenkins客户端

7)可以看到此时的普通用户登录后没看到系统管理这个选项,普通用户无权限,设置了只有读权限

8)此时创建一个job

9)可以看到没有权限创建job

6.配置管理员邮箱

1)进入系统管理选择系统设置,填写管理员的邮箱配置

2)邮箱测试

7.通过ssh_key自动拉取gitlab中的代码

在gitlab的web端

1)点击用户里面的setting并找到ssh keys选项

2)再将jenkeys的服务器的公钥添加到gitlab服务器

在jenkins服务端

1)此时可在命令行直接拉取gitlab的代码

[root@jenkins ~]# git clone git@192.168.1.30:jie/web-page.git

Cloning into 'web-page'...

remote: Enumerating objects: 3, done.

remote: Counting objects: 100% (3/3), done.

remote: Total 3 (delta 0), reused 0 (delta 0)

Receiving objects: 100% (3/3), 244 bytes | 0 bytes/s, done.

2)查看拉取的代码目录

[root@jenkins ~]# ls

anaconda-ks.cfg dump.rdb sentinel_26379.log web-page

3)进入目录查看代码内容,实现了在命令行直接拉取gitlab代码

[root@jenkins ~]# cat web-page/index.html

welcom to my gitlab page!

4)给jenkins的web端添加上自己的私钥,实现在jenkins的web端直接拉取代码

5)在构建一个项目工程

6)在点击源码管理选项进行连接gitlab的仓库地址配置、认证方式选择为私钥

7)点击立即构建

8)查看最近一次构建

9)查看控制台输出(console output)

10)jenkins的服务端验证所拉取的gitlab数据

[root@jenkins ~]# ls -a /var/lib/jenkins/workspace/website-html

. .. .git index.html

8.jenkins的web服务端通过shell脚本自动部署代码到后端服务

1)在jenkins服务端将免密认证文件发送到后端服务nginx的www用户的家目录下

[root@jenkins ~]# ssh-copy-id www@192.168.1.31

2)指定gitlab仓库连接url、认证类型

3)在构建环境中选择构建项目之前删除工作区间,编写构建中的shell脚本,再保存

4)在立即构建项目,并查看控制台输出的状态如下

5)在jenkins的服务端检查代码是否部署到本地

[root@jenkins ~]# ll /var/lib/jenkins/workspace/website-html/

total 16

-rw-r--r-- 1 root root 34 Jul 23 00:20 index.html

-rw-r--r-- 1 root root 10240 Jul 23 00:20 index.tar.gz

6)在后端服务nginx检查代码是否部署成功

[root@localhost html]# ll

total 16

-rw-r--r-- 1 www www 34 Jul 23 00:20 index.html

-rw-r--r-- 1 www www 10240 Jul 23 00:20 index.tar.gz

7)浏览器访问后端服务nginx

9.构建触发器,实现当一提交代码到gitlab仓库就触发jenkins自动部署代码到后端服务

gitlab服务

1)在一个项目里,点击Branch

2)创建一个开发新分支

jenkins服务端

1)点击系统管理,再找到全局安全设置

2)选择登录用户可以做任何事、取消"防止跨站点请求伪造”

3)安装这两插件

4)新建一个job

5)配置项目的源码管理,指定其gitlab仓库的url、认证类型、开发分支等

6)生成一个认证秘钥随机数

[root@jenkins ~]# openssl rand -hex 16

2fc11d619fe0c21facf6ddf71504a08e

7)将以上生成的随机数作为构建触发器认证的token

8)构建简单的测试命令

9)检查本地的项目配置文件保存的构建触发器的远程认证秘钥、执行的shell命令

10)访问url测试自否自动触发立即构建项目

或者直接curl

[root@jenkins ~]# curl http://192.168.1.15:8080/job/develop/build?token=2fc11d619fe0c21facf6ddf71504a08e

11)发现当访问文url时会自动触发构建项目

12)再修改为正式的构建shell远程执行命令,当一提交代码到gitlab仓库会自动触发将代码部署到nginx服务器

gitlab服务端

1)找到system hooks系统钩子,点击系统钩子进行配置

2)输入jenkins中的认证url,其他选项保持默认,点击add system hook添加系统钩子

3)点击测试系统钩子的可用性

4)出现201代码,建立连接成功,检测成功

在nginx服务端,克隆gitlab仓库代码,预先安装好git工具

1)指定从develop分支克隆代码,并填写登录用户名及密码

[root@nginx ~]# git clone -b develop http://192.168.1.30/jie/web-page.git

Cloning into 'web-page'...

Username for 'http://192.168.1.30': jie

Password for 'http://jie@192.168.1.30':

remote: Enumerating objects: 18, done.

remote: Counting objects: 100% (18/18), done.

remote: Compressing objects: 100% (9/9), done.

remote: Total 18 (delta 2), reused 0 (delta 0)

Unpacking objects: 100% (18/18), done.

2)查看克隆下来的代码环境

[root@nginx ~]# cd web-page/

[root@nginx web-page]# ls -a

. .. .git index.html

3)查看代码内容,并将代码修改

[root@nginx web-page]# cat index.html

welcom to my develop page

[root@nginx web-page]# vim index.html

welcom to my develop page
welcom to my develop page
welcom to my develop page
welcom to my develop page

4)将修改好的代码添加到本地暂存区

[root@nginx web-page]# git add index.html

5)再将代码提交到工作区

[root@nginx web-page]# git commit -m 'audi_q7'

[develop b560fe3] audi_q7

1 file changed, 3 insertions(+), 1 deletion(-)

6)最后再提交到gitlab代码库

[root@nginx web-page]# git push

Username for 'http://192.168.1.30': jie

Password for 'http://jie@192.168.1.30':

Counting objects: 5, done.

Delta compression using up to 2 threads.

Compressing objects: 100% (2/2), done.

Writing objects: 100% (3/3), 280 bytes | 0 bytes/s, done.

Total 3 (delta 0), reused 0 (delta 0)

remote:

remote: To create a merge request for develop, visit:

remote: http://192.168.1.30/jie/web-page/merge_requests/new?merge_request%5Bsource_branch%5D=develop

remote:

To http://192.168.1.30/jie/web-page.git

de793ac..b560fe3 develop -> develop

7)在jenkins服务器上查看,可以看到自动触发构建

8)查看jenkins的控制台输出信息,代码部署到nginx服务成功

9)查看代码是否部署到nginx服务器

root@nginx ~]# ll /usr/share/nginx/html/

total 16

-rw-r--r-- 1 www www 140 Jul 24 19:51 index.html

-rw-r--r-- 1 www www 10240 Jul 24 19:51 index.tar.gz

10)查看nginx服务是否正常启动

[root@nginx ~]# systemctl status nginx

● nginx.service - The nginx HTTP and reverse proxy server

Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)

Active: active (running) since Wed 2019-07-24 19:51:12 CST; 4min 38s ago

Process: 7582 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)

Process: 7580 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)

Process: 7578 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)

Main PID: 7584 (nginx)

CGroup: /system.slice/nginx.service

├─7584 nginx: master process /usr/sbin/nginx

├─7585 nginx: worker process

└─7586 nginx: worker process

11)浏览器访问nginx服务器,代码自动部署成功

12)在gitlab服务中若需要合并代码,点create merge request 创建合并请求,待上级确定后在执行合并到master分支上

10.实现项目job关联,即当一个项目执行完成会自动触发另一个项目执行

1)在jenkins中添加构建后放入执行动作,触发时必须上一个项目构建稳定、每次构建不稳定或有故障发送邮件通知

2)点击立即构建项目

3)构建后会立即触发下一个项目的构建

4)查看被触发的项目

总结:这种项目关联适用于将一个项目拆成多个小项目,例如其中一个项目job负责代码测试,另一个job负责代码打包

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/192966
推荐阅读
相关标签
  

闽ICP备14008679号