jenkins+gitlab持续集成及持续部署

一、gitlab部署

安装gitlab

[root@node4 ~]# yum install -y vim gcc gcc-c++ wget net-tools lrzsz iotop lsof iotop bash-completion curl policycoreutils openssh-server openssh-clients postfix
[root@node4 ~]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-13.11.1-ce.0.el7.x86_64.rpm
[root@node4 ~]# yum install -y gitlab-ce-13.11.1-ce.0.el7.x86_64.rpm

#修改配置文件
[root@node4 ~]# vim /etc/gitlab/gitlab.rb
external_url 'http://172.20.21.175'   #修改此行

#修改配置文件要执行此操作,执行配置文件并启动服务
[root@node4 ~]# gitlab-ctl reconfigure

#验证gitlab启动完成
[root@node4 ~]# gitlab-ctl status
run: alertmanager: (pid 8477) 53347s; run: log: (pid 7584) 53455s
run: gitaly: (pid 8360) 53350s; run: log: (pid 6650) 53615s
run: gitlab-exporter: (pid 8369) 53349s; run: log: (pid 7418) 53473s
run: gitlab-workhorse: (pid 8326) 53351s; run: log: (pid 7261) 53493s
run: grafana: (pid 8499) 53346s; run: log: (pid 8107) 53394s
run: logrotate: (pid 39065) 3235s; run: log: (pid 6430) 53632s
run: nginx: (pid 7278) 53488s; run: log: (pid 7316) 53485s
run: node-exporter: (pid 8341) 53350s; run: log: (pid 7366) 53480s
run: postgres-exporter: (pid 8490) 53346s; run: log: (pid 7732) 53448s
run: postgresql: (pid 6741) 53608s; run: log: (pid 6766) 53605s
run: prometheus: (pid 8378) 53348s; run: log: (pid 7508) 53461s
run: puma: (pid 7141) 53506s; run: log: (pid 7148) 53505s
run: redis: (pid 6479) 53625s; run: log: (pid 6487) 53624s
run: redis-exporter: (pid 8371) 53349s; run: log: (pid 7467) 53467s
run: sidekiq: (pid 7169) 53500s; run: log: (pid 7180) 53499s


gitlab相关的目录:
/etc/gitlab  #配置文件目录
/run/gitlab  #运行pid文件目录
/opt/gitlab  #安装目录
/var/opt/gitlab  #数据目录
/var/log/gitlab  #日志目录

      
常用命令:
gitlab-rails #用于启动控制台进行特殊操作,如修改管理员密码、打开数据库控制台(gitlab-rails dbconsole)等
gitlab-psql  #数据库命令行
gitlab-rake  #数据备份恢复等数据操作

gitlab-ctl  #客户端命令行操作行
gitlab-ctl stop     #停止gitlab
gitlab-ctl start    #启动gitlab
gitlab-ctl restart  #重启gitlab
gitlab-ctl status   #查看组件运行状态
gitlab-ctl tail nginx #查看某个组件的日志


[root@node4 ~]# gitlab-psql
psql (12.6)
Type "help" for help.

gitlabhq_production=# help
You are using psql, the command-line interface to PostgreSQL.
Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit
gitlabhq_production=# \db
         List of tablespaces
    Name    |    Owner    | Location 
------------+-------------+----------
 pg_default | gitlab-psql | 
 pg_global  | gitlab-psql | 
(2 rows)

gitlabhq_production=# \q

登录web管理界面

首次登入gitlab web界面,浏览器访问:http://172.20.21.175;首次登录web页面,必须先设置密码密码要求最少8位;使用用户root和设置的密码登录;

关闭账号注册

创建组和项目

 

git常用命令

使用 git 命令下载代码与提交等操作

git config --global user.name "name" #设置全局用户名 
git config --global user.email xxx@yyy.com #设置全局邮箱
git config --global --list #列出用户全局设置,默认保存在~/.gitconfig文件中
git clone http://10.0.0.100/testgroup/testproject.git#git客户端测试clone项目
git add index.html / . #添加指定文件、目录或当前目录下所有数据到暂存区
git commit -m "comment" #提交文件到工作区
git status #查看工作区的状态
git push #将本地仓库提交代码到远程服务器
git pull #从服务器获取代码到本地仓库
git log #查看操作日志
vim .gitignore #定义忽略文件,即不放在仓库的文件
git reset --hard HEAD^^ #git版本回滚, HEAD为当前版本,加一个^为上一个,^^为上上一个版本
git reflog # #获取每次提交的ID,可以使用--hard根据提交的ID进行版本回退
git reset --hard 5ae4b06 #回退到指定id的版本

git branch #查看当前所处的分支
git checkout -b develop #创建并切换到一个新分支
git checkout  develop #切换分支


# git clone http://172.20.22.14/root/testprojet.git
# git config --global user.email "git@example.com"
# git config --global user.name "git"
# git add .
# git commit -m "v1"
# git push
# git pull
# git log

二、部署Jenkins

安装Jenkins

环境配置:Jenkins基于JAVA实现,安装前需要安装JDK

[root@node2 ~]# yum install -y java-1.8.0-openjdk
[root@node2 ~]# java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)

[root@node2 ~]# wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.280-1.1.noarch.rpm
[root@node2 ~]# yum install jenkins-2.280-1.1.noarch.rpm

[root@node2 ~]# rpm -qa | grep jenkins
jenkins-2.280-1.1.noarch
[root@node2 ~]# rpm -ql jenkins
/etc/init.d/jenkins
/etc/logrotate.d/jenkins
/etc/sysconfig/jenkins
/usr/lib/jenkins
/usr/lib/jenkins/jenkins.war
/usr/sbin/rcjenkins
/var/cache/jenkins
/var/lib/jenkins
/var/log/jenkins

[root@node2 ~]# grep -v "#" /etc/sysconfig/jenkins | grep -v "^$"
JENKINS_HOME="/var/lib/jenkins"
JENKINS_JAVA_CMD=""
JENKINS_USER="root"
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
JENKINS_PORT="8080"
JENKINS_LISTEN_ADDRESS=""
JENKINS_HTTPS_PORT=""
JENKINS_HTTPS_KEYSTORE=""
JENKINS_HTTPS_KEYSTORE_PASSWORD=""
JENKINS_HTTPS_LISTEN_ADDRESS=""
JENKINS_HTTP2_PORT=""
JENKINS_HTTP2_LISTEN_ADDRESS=""
JENKINS_DEBUG_LEVEL="5"
JENKINS_ENABLE_ACCESS_LOG="no"
JENKINS_HANDLER_MAX="100"
JENKINS_HANDLER_IDLE="20"
JENKINS_EXTRA_LIB_FOLDER=""
JENKINS_ARGS=""

[root@node2 ~]# systemctl start jenkins

登录Jenkins web管理界面

浏览器访问:
http://172.20.21.172:8080

[root@node2 ~]# cat /var/lib/jenkins/secrets/initialAdminPassword 
5f752eed3086455bb6440fbd4322bca9

选择安装jenkins插件

 

插件安装目录

插件目录/var/lib/jenkins/plugins/

安装和gitlab(和gitlab相连)和Blue Ocean(显示信息)的相关插件并安装

 

三、配置jenkins到gitlab非交互式拉取代码

jenkins服务器添加凭据:jenkins-凭据-jenkins-全局凭据-添加凭据

添加Jenkins服务器root用户的私钥

配置gitlib项目地址和用户,添加完成的证书没有报错表示认证通过

测试构建项目,点击立即构建

验证构建结果

  

四、创建pipeline项目实现自动构建并部署

master节点:172.20.21.172,agent节点:172.20.21.129,gitlab节点:172.20.22.14,后端web节点:172.20.22.170

添加Jenkins agent节点 

添加agent节点:172.20.21.129,agent节点要与后端web服务器做免密钥认证

[root@agent ~]# yum install -y java-1.8.0-openjdk
[root@agent ~]# mkdir /var/lib/jenkins/
[root@agent ~]# yum install -y git

[root@agent ~]# ssh-keygen -t rsa -P ''
[root@agent ~]# ssh-copy-id root@172.20.21.170

系统管理-节点管理-新建节点

输入节点相关信息 

输入节点的用户密码

确认节点状态

git节点添加对应的项目

添加用户   -->   添加组  -->   将添加的用户加到新添加的组  -->  创建项目

创建pipline

流水线定义pipline script

生成git流水线语法

点击构建,查看输出结果


版权声明:本文为u010864567原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。