1. 系统环境

server: CentOS Linux release 8.1.1911 (Core)
    ip: 192.168.0.113
project: CentOS Linux release 8.1.1911 (Core)
    ip: 192.168.0.115

关闭Selinux
vim /etc/selinux/config
    SELINUX=disabled
关闭firewalld防火墙
[root@jekins01 ~]# systemctl stop firewalld.service 
[root@jekins01 ~]# systemctl disable firewalld.service 
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

2. GitLab安装部署

下载gitlab源:
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
使用dnf安装gitlab
[root@jekins01 ~]# dnf -y install gitlab-ce
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/8/gitlab-ce-12.8.6-ce.0.el8.x86_64.rpm/download.rpm

更改url访问地址

vim /etc/gitlab/gitlab.rb
external_url 'http://192.168.0.113'
gitlab-ctl reconfigure  # 更改了配置文件后需要重新生成配置

访问gitlabhttp://192.168.0.113

默认账号是root

3. GitLab备份

对gitlab进行备份将会创建一个包含所有库和附件的归档文件。对备份的恢复只能恢复到与备份时的gitlab相同的
版本。将gitlab迁移到另一台服务器上的最佳方法就是通过备份和还原。
gitlab提供了一个简单的命令行来备份整个gitlab,并且能灵活的满足需求。
备份文件将保存在配置文件中定义的backup_path中,文件名为TIMESTAMP_gitlab_backup.tar,TIMESTAMP为备
份时的时间戳。TIMESTAMP的格式为:EPOCH_YYYY_MM_DD_Gitlab‐version。
如果自定义备份目录需要赋予git权限
配置文件中加入 egrep -v "^#|^$" /etc/gitlab/gitlab.rb
external_url 'http://192.168.150.28'
unicorn['worker_timeout'] = 60
unicorn['worker_processes'] = 2
unicorn['worker_memory_limit_min'] = "200 * 1 << 20"
unicorn['worker_memory_limit_max'] = "300 * 1 << 20"
sidekiq['concurrency'] = 15
postgresql['shared_buffers'] = "256MB"
prometheus['enable'] = false
gitlab_rails['backup_path'] = '/data/backup/gitlab'
gitlab_rails['backup_keep_time'] = 604800 备份保留的时间(以秒为单位,这个是七天默认值),
mkdir /data/backup/gitlab
chown ‐R git.git /data/backup/gitlab
完成后执行gitlab‐ctl reconfigure

4. Jenkins

1.安装JDK运行环境和jenkins服务
上传JDK和jenkins rpm安装包,使用rpm ‐ivh进行安装,安装完JDK运维java测试是否安装成功
rpm ‐ivh jdk‐8u181‐linux‐x64.rpm
rpm ‐ivh jenkins-2.176.1-1.1.noarch.rpm

2. 配置jenkins
启动用户修改为root
[root@jekins01 ~]# vim /etc/sysconfig/jenkins
JENKINS_USER="root"
[root@jekins01 ~]# systemctl start jenkins
[root@jekins01 ~]# systemctl enable jenkins
访问页面进行配置
http://192.168.0.113:8080
3. 插件安装(跳过安装插件,直接上传插件到目录)和修改登录密码
    1.自动安装可选插件
    2.手动下载插件上传安装
    3.插件放入插件目录
4.jenkins主要的目录
/usr/lib/jenkins/:jenkins安装目录,WAR包会放在这里
/etc/sysconfig/jenkins:jenkins配置文件,“端口”,“JENKINS_HOME”等都可以在这里配置
/var/lib/jenkins/:默认的JENKINS_HOME
/var/log/jenkins/jenkins.log:Jenkins日志文件

5. 结合GitLab创建一个Jenkins项目

1. 访问gitlab,创建用户访问 token
    进入项目---> 点击右上角的用户头像--->settings--->Access Tokens
    把生成的Token暂时找个地方保存起来, 等会创建Jenkins任务的时候会用到
2. 创建Jenkins普通项目
    注意: 需要提前安装gitlab plugin, Gitlab API Plugin插件
    点击新建任务--->构建一个自由风格的项目--->源码管理--->Git--->Credentials--->添加--->需要填写name, ID(这里的id是在gitlab创建的token)
2.1 构建触发器
    勾选 Build when a change is pushed to GitLab. GitLab webhook URL: ---> 高级---》 Filter branches by name:master ---> Generate(保存生成的token)
2.2 构建环境
    点击构建 --->添加构建步骤---》执行shell: echo "test ok" ---> 保存
2.3 设置gitlab的推送触发
    进入gitlab项目---> Settings --->Integrations---> url: 刚刚Jenkins那里的GitLab webhook URL:后面的地址, Secret Token:刚刚Generate那里生成的token, 勾选Push events
2.4 测试Jenkins项目是否可以拉取gitlab上的项目
    进入Jenkins项目--->立即构建
    访问Jenkins的存储路径:
    [root@jekins01 ~]# ls /var/lib/jenkins/workspace/test01
    biubiubiu.txt  test.txt
3. 创建Jenkins Java项目
    注意:
        需要提前安装Maven Info Plugin Maven Release Plug-in Plug-in 插件
        需要安装maven   

3.1 安装Maven
    tar xf apache‐maven‐3.3.9‐bin.tar.gz
    mv apache‐maven‐3.3.9 /usr/local/
    ln ‐s /usr/local/apache‐maven‐3.3.9/ /usr/local/maven
    /usr/local/maven/bin/mvn ‐v
    编辑/etc/profile文件,在末尾添加
    export PATH=/usr/local/maven/bin:$PATH
    mvn ‐v 查看版本号

3.2 在Jenkins页面指定Maven包路径
    首页---> 系统管理--->全局工具配置--->Maven 安装
                                        --->新增Maven ---> Name: maven
                                                          MAVEN_HOME: /usr/local/maven/

3.3 点击新建任务---> 构建一个maven项目
    参数化构建过程---> 添加参数:
                        Git Parameter: 
                            Name:git_version 
                            Description:请输入需要发布的版本
                        选项参数:
                            名称:deploy_env
                            选项: 
                                deploy
                                rollback
    源码管理:
        Git:
            Repositories URL:[email protected]:root/java01.git
            Credentials: 跟之前添加账号的方式一样
            指定分支: ${git_version}
    Build:
        Root POM: pom.xml   
        Goals and options: clean package  # 先清除后打包

    Post Steps
        执行shell:
            sh /mnt/maven.sh  # maven.sh的脚本放在了最后面