一.安装gitlab
1.安装gitlab-ce (服务器系统为centos 7)
yum install gitlab-ce
2.配置IP地址
vi /etc/gitlab/gitlab.rb
#修改gitlab的访问ip,ip用本机(若服务器分为内网IP和外网IP,则使用内网IP)
external_url 'http://192.168.64.151'
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.xml
## GitLab settings
gitlab:
## Web server settings (note: host is the FQDN, do not include http://)
#设置gitlab SSH和http克隆代码的地址(若服务器分为内网IP和外网IP,则使用内网IP)
host: 192.168.64.151
port: 80
https: false
保存,重启gitlab
gitlab-ctl reconfigure
二.安装gitlab-runner
1.下载可执行文件
sudo wget /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
2.设置执行权限
sudo chmod +x /usr/local/bin/gitlab-runner
3.创建GitLab CI账户并分到root组
useradd --comment 'GitLab Runner'--create-home gitlab-runner --shell /bin/bash
usermod -g root gitlab-runner
4.运行服务
gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
gitlab-runner start
三.gitlab-runner注册
1.打开 gitlab 项目 -> Settings -> CI / CD -> Runners settings。记下url和token(也就是图片中涂黑的部分),若服务器分为内网IP和外网IP,则url为服务器的内网IP地址。下面注册使用。
2.注册,登录gitlab所在服务器,在终端界面输入
sudo gitlab-runner register
(第一次注册可能需要输入服务器密码进行验证)
输入你的 GitLab URL
Please enter the gitlab-ci coordinator URL(e.g. https://gitlab.com )
https://192.168.6.151(输入上图的url,若服务器分为内网IP和外网IP,则url为服务器的内网IP地址)
输入 注册令牌 来注册 Runner
Please enter the gitlab-ci token forthis runner
xxx(输入上图的token)
输入 Runner 说明
Please enter the gitlab-ci description forthis runner
my-runner
输入 Runner 的 tags
Please enter the gitlab-ci tags forthisrunner(comma separated):
my-tag
输入 Runner 执行方式,这里选择shell
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
shell
到这一步gitlab和gitlab-runner就配置好了
四.配置SSH秘钥
服务器采用账号密码方式登录,请按照以下配置方式配置SSH
1.配置ssh,便于远程生产环境服务器部署项目。在终端界面输入。(切换以gitlab-runner身份登录)
sudo su - gitlab-runner
2.生成秘钥,在终端继续输入,然后一直按回车即可。不要输入密码。
ssh-keygen -t rsa
3.到gitlab所在服务器的/home/gitlab-runner/.ssh/目录会看到生成的秘钥对如图所示
4.将id_rsa.pub公钥文件拷贝到生产环境服务器/root/.ssh/authorized_keys 中。在终端输入
vim /root/.ssh/authorized_keys
5.测试是否可以免密登录
ssh root@192.168.64.234(ip)
6.将私钥内容复制到gitlab中。在终端输入
cat ~/.ssh/id_rsa
如图所示:
拷贝一下红框里的内容。
进入gitlab想要部署的项目中(没有项目可自行创建一个测试项目)。选择用户设置->CI/CD->变量
-》Add Variable ,将秘钥填入后,点击"Add Variable"按钮.如下图所示
至此,我们的配置就完成了。
五.编写gitlab-ci.yml文件
stages:
- build
- deploy-test
build:
stage: build
script:
- mvn clean
deploy-test:
stage: deploy-test
environment: test
only:
refs:
# 只有 分支触发此任务
- /^feature/.*$/
# changes:
# 指定或目录变更时触发
# - .test.sh
# - src/**
# - pom.xml
# - .gitlab-ci.yml
when: manual
script:
- mvn clean package -Dmaven.test.skip=true
- scp -r -P 22 target/demo-0.0.1-SNAPSHOT.jar root@192.168.64.151:/data/peafowl-mall
- ssh -p 22 root@192.168.64.151 "cd /data/peafowl-mall/; source /etc/profile; sh demo.sh"
demo.sh文件
#! /bin/sh
ID=`ps -ef | grep demo-0.0.1-SNAPSHOT.jar | grep -v grep |awk '{print $2}'`
echo "Pid: " $ID
echo "------kill demo ---------"
for id in $ID
do
kill -9 $ID
echo "killed " $ID
done
echo "------start demo ---------"
nohup java -jar demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=test >/dev/null 2>&1 &
echo "---------end---------------"
六.项目部署
gitee项目地址: