GitLab Jenkins CI/CD 自动化部署

Posted doudio

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GitLab Jenkins CI/CD 自动化部署相关的知识,希望对你有一定的参考价值。

安装GitLab

sudo apt-get install curl openssh-server ca-certificates postfix
## *注意, 在安装 postfix 的时候, 选择"internet site"
## *然后, "system mail name" 服务器的IP地址/域名

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
sudo apt-get install gitlab-ee

# 4.修改相关配置
sudo vi /etc/gitlab/gitlab.rb
​```修改内容
## GitLab URL
##! URL on which GitLab will be reachable.
##! For more details on configuring external_url see:
##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
# external_url \'http://ubuntu\'
# 修改第一部分 http://<服务器IP>:<gitlab访问端口>
external_url \'http://192.168.6.132:11000\'

### Advanced settings
# unicorn[\'listen\'] = \'127.0.0.1\'
# unicorn[\'port\'] = 8080
# 修改第二部分
unicorn[\'port\'] = 11001

##! Advanced settings. Should be changed only if absolutely needed.
# prometheus[\'listen_address\'] = \'localhost:9090\'
# 修改第三部分
prometheus[\'listen_address\'] = \'localhost:11002\'
​```
# 重新加载GitLab配置
sudo gitlab-ctl reconfigure
# 其他选项
sudo gitlab-ctl `start`/`stop`/`restart`

安装 Jenkins

  • Jenkins 镜像下载 http://mirrors.jenkins-ci.org/

  • latest 地址 jenkins.war

  • 在安装好java环境时运行 jenkins.war

  • nohup java -jar jenkins.war --httpPort=12000 > jenkins.log &

  • 进入太慢可中途停止程序编辑 UpdateCenter 文件修改插件仓库地址

vim /root/.jenkins/hudson.model.UpdateCenter.xml

​```
<?xml version=\'1.1\' encoding=\'UTF-8\'?>
<sites>
  <site>
    <id>default</id>
    <!-- 默认配置 <url>https://updates.jenkins.io/update-center.json</url> -->
    <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
  </site>
</sites>
​```
  • 查看默认密码: cat /root/.jenkins/secrets/initialAdminPassword
  • 在选择初始安装的插件时选择:
    • Install suggested plugins 安装建议的插件, 安装jenkins社区认为最有用的插件。
  • 汉化 Jenkins

\'GitLab

  • Manage Jenkins > Configure System 配置 Publish over SSH , 如果配置中没有 Publish over SSH就安装插件, 插件名 Publish over SSH

\'GitLab

  • Manage Jenkins > Global Tool Configuration 配置编译工具
    \'GitLab

  • 创建一个item选择 Freestyle project

\'GitLab

  • 配置代码仓库地址
    \'GitLab

  • GitLab 账号密码

\'GitLab

  • 构建配置 (调用顶级maven目标)

\'GitLab

  • 构建后操作

\'GitLab

  • 目录结构
data/
├── code
│   └── target
│       └── gitlab-demo-0.0.1-SNAPSHOT.jar
├── log
│   ├── df-api-server-0.0.1-SNAPSHOT-20210128.log
│   ├── df-api-server-0.0.1-SNAPSHOT-20210129.log
│   └── df-api-server-0.0.1-SNAPSHOT-20210131.log
└── script
    ├── start.sh
    └── stop.sh
  • 启动/停止脚本内容
doudio@ubuntu:/data/script$ cat start.sh 
echo \'Start the program : gitlab-demo-0.0.1-SNAPSHOT.jar\'
chmod 777 /data/code/target/gitlab-demo-0.0.1-SNAPSHOT.jar
echo \'-------Starting-------\'
current_date=`date -d "-0 day" "+%Y%m%d"`
echo $current_date
cd /data/code/target/
nohup java -jar /data/code/target/gitlab-demo-0.0.1-SNAPSHOT.jar --server.port=8081 > /data/log/df-api-server-0.0.1-SNAPSHOT-$current_date.log 2>&1  &
echo \'start success\'
doudio@ubuntu:/data/script$ cat stop.sh 
#!/bin/bash
echo "Stop Procedure : gitlab-demo-0.0.1-SNAPSHOT.jar"
pid=`ps -ef |grep java|grep gitlab-demo-0.0.1-SNAPSHOT.jar|awk \'{print $2}\'`
echo \'old Procedure pid:\'$pid
if [ -n "$pid" ]
then
kill -9 $pid
fi
  • 到此已经可以实现登陆Jenkins点击部署了, 如果需要配置只要推送代码后就自动部署再来进行如下配置

  • 修改 Jenkins 全局安全配置

\'GitLab

  • 修改 itm 中的构建触发器, 如果触发器中没有 GitLab 就安装相关(Gitlab , Gitlab Hook) 插件

\'GitLab

  • 在GitLab中配置推送仓库后触发构建操作
    \'GitLab

  • 如果有如下报错需要修改 GitLab的 Admin area (管理中心) => Settings 配置

    • Urlis blocked: Requests to localhost are not allowed (URL被阻止:不允许对localhost的请求)

\'GitLab

 

以上是关于GitLab Jenkins CI/CD 自动化部署的主要内容,如果未能解决你的问题,请参考以下文章

还在用Jenkins?试试Gitlab的CI/CD功能吧

CI/CD之jenkins

CI/CD之jenkins

CI/CD技术专题「Jenkins实战系列」如何通过Gitlab对接Jenkins构建提交自动触发部署构建体系指南(上部)

Gitlab CI/CD自动部署方案探索

Gitlab CI/CD自动部署方案探索