Gitlab CI/CD的使用【简】

使用gitlab 的CI/CD流程

1.安装runner
2.注册runner
3.编写流水线脚本

一. 安装Runner (本文的安装方式)

Docker 上安装runner 文档地址:https://docs.gitlab.com/runner/install/docker.html

docker run -d --name gitlab-runner --restart always \
     -v /srv/gitlab-runner/config:/etc/gitlab-runner \
     -v /var/run/docker.sock:/var/run/docker.sock \
     --add-host=mygitlab.com:192.168.1.112 \
     gitlab/gitlab-runner:latest

如果在测试环境下需要指定域名host的可以加参数 --add-host=www.test.com:192.168.1.10,省去以后进了容器在手动修改的麻烦。
附:
Linux上直接安装runner

curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash
yum install gitlab-runner

二.注册Runner

容器启动后,进入到容器,输入命令:

gitlab-runner register

输入gitlab地址, token, 描述, tag, 用什么执行。


image.png

token的获取方法(gitlab-->管理中心-->概述-->runner)

image.png

添加成功。刷新页面


image.png

可进入到容器后免交互来注册:

root@c01b8d257966:/# gitlab-runner register \
 --non-interactive \
 --executor "shell" \
 --url "http://192.168.1.112:85" \
 --registration-token "WWmieRLSrNcs268VxQWe" \
 --description "252-runner" \
 --tag-list "ceshi" \
 --run-untagged="true" \
 --locked="false"
image.png

三.流水线脚本

dev分支创建一个.gitlab-ci.yml的文件,我这里已经创建好了


image.png

内容:
stages:内容的3个阶段
为了方便看,任务名我这里写的中文,不过不影响。
stage和 开始的stages里定义的是对应的。
tag: 这里写的是你注册git-runner的tag!!!!
only:只在dev触发的时候才运行。

stages:
- build
- test
- devploy
goujian:
  stage: build
  tags:
  - abc
  script:
  - echo "代码编译......"
  only:
    - dev
测试:
  stage: test
  tags: 
  - abc
  script:
  - echo "测试代码......"
  only:
    - dev
项目上线:
  stage: devploy
  tags:
  - abc
  script: 
  - echo "$USER 部署代码......"
  - scp index.html [email protected]:/var/www/html/
  only:
    - dev

。。。连着遇到3个问题:
1.出现找不到分支


7c4395846ebe591e154bdffc7e7922f.png

通过查看日志(gitlab-runner exec docker job_name),发现gitlab在被触发后拉取项目的时候采用的默认http协议的克隆地址,而我的http方式地址没有改过,还是默认容器的名字。 自己测了一下 手动克隆当然也是会失败。
解决方法:修改http:方式克隆地址为可用地址,成功!!

vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
gitlab-ctl restart
image.png

2.可以获取分支了,但是还是失败,如下


image.png

解决办法:
修改gitlab配置(设置--CI/CD,将Git strategy修改成git clone)


image.png

3.到最后一步部署文件到远程机器,出现没有权限


image.png

可以看到我在脚本这个步骤输出一个变量,结果为当前执行用户为gitlab-runner ,我们要做ssh免密通信要在
gitlab-runner这个用户去做。

su - gitlab-runner
ssh-keygen
一路回车
ssh-copy-id [email protected]
输一次密码,完成与远端机器免密通信

再次运行,成功。


image.png

image.png

你可能感兴趣的:(Gitlab CI/CD的使用【简】)