|
目录
一.安装gitlab
二.安装gitlab-runner
?三.gitlab-runner注册
四.配置SSH秘钥
服务器采用账号密码方式登录,请按照以下配置方式配置SSH
若服务器采用秘钥文件方式登录,请按照以下配置方式配置SSH
五.安装jdk和maven
六.编写gitlab-ci.yml文件
七.项目部署
一.安装gitlab
1.安装gitlab-ce (服务器系统为centos 7)
yum install gitlab-ce?
2.配置端口
vi /etc/gitlab/gitlab.rb
#修改gitlab的访问ip和端口,ip用本机
external_url 'http://192.168.3.166:8099'
重启gitlab
gitlab-ctl reconfigure
?
二.安装gitlab-runner
1.下载可执行文件
sudo wget -O/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账户
?useradd --comment 'GitLab Runner'--create-home gitlab-runner --shell /bin/bash
?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,下面注册使用。

?2.注册,在终端界面输入
sudo gitlab-runner register
输入你的 GitLab URL
Please enter the gitlab-ci coordinator URL(e.g. https://gitlab.com )
https://192.168.3.166:8099(输入上图的url)
输入 注册令牌 来注册 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公钥文件拷贝到生产环境服务器中。在终端输入
cd /home/gitlab-runner/.ssh
ssh-copy-id root@192.168.0.5(此IP为生产环境服务器IP)
5.测试是否可以免密登录
ssh root@192.168.0.5
?6.将私钥内容复制到gitlab中。在终端输入
cat ~/.ssh/id_rsa
?出现如下图所示:

拷贝一下红框里的内容。
进入gitlab想要部署的项目中(没有项目可自行创建一个测试项目)。选择用户设置->CI/CD->变量
?-》Add Variable ,将秘钥填入后,点击"Add Variable"按钮.如下图所示

至此,我们的配置就完成了。
-
若服务器采用秘钥文件方式登录,请按照以下配置方式配置SSH
1.将秘钥文件拷贝到gitlab所在服务器的/home/gitlab-runner/.ssh目录中即可。如图所示:

五.安装jdk和maven
1.请自行在gitlab所在服务器安装jdk和maven。因为这里主要讲如何配置gitlab-ci/cd,所以jdk及maven安装请自行百度,非常简单,在此略过。
六.编写gitlab-ci.yml文件
1.在自己的项目根目录创建文件"gitlab-ci.yml"。填写内容如下(没有项目的话,请自行使用IDEA创建SpringBoot项目)。
stages:
- build
build:
stage: build
variables:
docker_compose_name: control
package_name : control-0.0.1-SNAPSHOT.jar
server_username : root
server_ip : 59.110.0.91
server_path : /home/robot/robot2_control
before_script:
- echo "开始脚本1"
- echo "$SSH_KNOWN_HOSTS" >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
script:
- mvn -Dmaven.test.skip=true clean package
after_script:
#服务器为账号密码登录时,使用以下语句
- scp $(cd `dirname $0`; pwd)/target/${package_name} ${server_username}@${server_ip}:${server_path}/${package_name}
- ssh ${server_username}@${server_ip} "cd /home/robot; docker-compose stop $docker_compose_name; docker-compose --compatibility up -d $docker_compose_name; exit"
#服务器为秘钥文件登录时,使用以下语句
#- scp -i /home/gitlab-runner/.ssh/8.140.136.221_Key.pem $(cd `dirname $0`; pwd)/target/${package_name} ${server_username}@${server_ip}:${server_path}/${package_name}
#- ssh -i /home/gitlab-runner/.ssh/8.140.136.221_Key.pem ${server_username}@${server_ip} "cd /home/robot; docker-compose stop $docker_compose_name; docker-compose --compatibility up -d $docker_compose_name; exit"
说明:
- scp ?$(cd `dirname $0`; pwd)/target/${package_name} ${server_username}@${server_ip}:${server_path}/${package_name}? ? ?意思是将gitlab打包后的文件拷贝到生产环境服务器中。
?- ssh ?${server_username}@${server_ip} "cd /home/robot; docker-compose stop $docker_compose_name; docker-compose --compatibility up -d ?$docker_compose_name; exit"? ?意思是在服务器中重启我的项目。我用的是docker-compose方式部署的。如果读者用的是其他方式,那可以使用其他方式的命令来重启自己的项目。
七.项目部署
1.将项目传到gitlab中,进入gitlab自己的项目中,选择CI/CD。会看到如下图所示

?点对勾按钮->build,进入之后,如下图所示,会看到自己得项目已经热部署完毕。

?
|