ubuntu16.04部署gitlab-runner触发gitlab流水线

本文详细介绍了如何在Ubuntu16.04环境中配置GitLabRunner,包括下载安装、创建SSH密钥、设置免密登录、注册项目、编写触发脚本,以及在内网部署的注意事项。

环境:ubuntu16.04
gitlab服务器:192.168.1.12
runner服务器:192.168.1.11

1.下载

环境:192.168.1.11

cd /usr/local/src

wget https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_amd64.deb

sudo dpkg -i gitlab-runner_amd64.deb

2.使用gitlab-runner用户创建密钥

su gitlab-runner
ssh-keygen -t rsa

将生成的密钥保存在gitlab有所有项目权限的用户密钥中

3.使gitlab-runner登录其他服务器为免密登录

cd /home/gitlab-runner/.ssh/
scp id.rsa.pub www@192.168.1.12:/home/www/.ssh/id_rsa.pub_12
cat id_rsa.pub_12 >> authorized_keys

ssh-copy-id -i ~/.ssh/id_rsa.pub  www@192.168.1.12

4.注册项目

项目token地址:http://gitlab.xxx.com/root/docs/-/settings/ci_cd

gitlab-runner必须使用root权限来注册项目与gitlab关联,非root用户注册可使用sudo提权注册

root@gitlab-runner:/home/gitlab-runner/builds# gitlab-runner register
Enter the GitLab instance URL (for example, https://gitlab.com/):
http://gitlab.xxx.com/                 #输入gitlab地址
Enter the registration token:
SsDsdaCNqA8M9                           #输入要注册项目的token
Enter a description for the runner:
[gitlab-runner]: pro                    #输入gitlab-runner的描述
Enter tags for the runner (comma-separated):
pro                                     #输入gitlab-runner的tag
Registering runner... succeeded                     runner=SsDzsjjC
Enter an executor: ssh, docker-ssh+machine, virtualbox, docker+machine, kubernetes, custom, docker, docker-ssh, parallels, shell:
shell                                   #输入触发gitlab-runner后执行的方式
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! 

第一个参数输入gitlab地址
第二个参数输入要注册项目的token
第三个参数输入gitlab-runner的描述
第四个参数输入gitlab-runner的tag
第五个参数#输入触发gitlab-runner后执行的方式

注册成功以后gitlab-runner的状态会变成绿色,意为正在运行;
若为红色,意为停止运行

刚注册完,需等待1分钟左右才会变成绿色,变成绿色以后就可以编写触发脚本了

5.编写触发脚本

在gitlab项目的根目录添加.gitlab-ci.yml以及shell脚本

  • example for .gitlab-ci.yml
stages:
  - master
job 1:
  stage: master
  only:
    - master
  script:
    - whoami
    - ssh -tt www@192.168.1.12 bash /data/www/bin/deploy.sh
  tags:
    - pro

  • example for deploy.sh
#!/bin/bash
# script_name : deploy.sh
set -e
# 加载环境变量
source /etc/profile

# 进入目录,更新代码
cd  /data/www/website/
git pull origin master

# 安装依赖
yarn install

# 开始构建
yarn build

# 更新代码
rsync -zcav -e ssh dist/* server01:/data/www/website

流水线语法及CI模板详见官网

6.一些说明

第一次触发前,先手动在192.168.1.12上手动拉取代码

由于gitlab部署在内网,无公网ip,因此这里是将gitlab服务器【192.168.1.12】作为项目代码的中转,通过shell脚本同步代码到目标服务器上。

完整流程:
1.本地push代码到gitlab仓库master分支
2.根据gitlab-ci.yml触发runner执行master分支流水线
3.runner会ssh到代码中转服务器即gitlab服务器【192.168.1.12】执行shell脚本,进行拉取、构建、发布操作。
4.流水线任务结束。

也可将gitlab与gitlab-runner部署到同一台服务器上,这样gitlab-ci.yml文件中无需ssh命令到中转服务器上,直接进入到指定目录操作即可。

在使用docker-compose部署GitLabGitLab Runner时,yml文件配置是实现相应功能的关键。以下是相关配置及使用示例: ### 配置文件示例 创建一个`docker-compose.yml`文件,可参考以下内容: ```yaml version: '3' services: gitlab: image: gitlab/gitlab-ce:latest container_name: gitlab restart: always ports: - "80:80" - "443:443" - "22:22" volumes: - ./config:/etc/gitlab - ./data:/var/opt/gitlab - ./logs:/var/log/gitlab gitlab-runner: image: gitlab/gitlab-runner:latest container_name: gitlab-runner restart: always volumes: - /var/run/docker.sock:/var/run/docker.sock - ./runner-config:/etc/gitlab-runner ``` 此配置文件中,定义了两个服务:`gitlab`和`gitlab-runner`。`gitlab`服务使用`gitlab/gitlab-ce:latest`镜像,映射了`80`、`443`和`22`端口,同时挂载了配置、数据和日志目录。`gitlab-runner`服务使用`gitlab/gitlab-runner:latest`镜像,挂载了`/var/run/docker.sock`和`./runner-config`目录,以保证与Docker守护进程通信并存储Runner配置信息 [^1]。 ### 另一种runner配置示例 ```yaml gitlab-runner: image: gitlab-runner build: context: ./gitlab-runner container_name: gitlab-runner volumes: - ./gitlab-runner/deploy/publish.sh:/var/www/gitlab-runner/deploy/publish.sh:rw - ${DATA_PATH_HOST}/gitlab/runner:/etc/gitlab-runner - /var/run/docker.sock:/var/run/docker.sock:rw restart: always ``` 该示例中,使用了`build`指令,从`./gitlab-runner`目录构建镜像。同时挂载了脚本文件、Runner配置目录和Docker守护进程套接字,保证Runner能执行脚本并与Docker交互 [^2]。 ### 使用方法 在终端中,进入存放`docker-compose.yml`文件的文件夹,并运行以下命令启动GitLabGitLab Runner: ```bash docker-compose up -d ``` 此命令会让Docker自动下载GitLabGitLab Runner的镜像,并在后台运行两个容器 [^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值