docker run -d --name runner --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /data/site/docker/runner:/etc/gitlab-runner gitlab/gitlab-runner:latest register --non-interactive --executor "docker" --docker-image alpine:latest --url "https://git.qianbitou.cn/" --registration-token "21xm8JfRyKW9r5pg9ReH" --description "docker-runner" --tag-list "docker,aws" --run-untagged="false" --locked="false" --access-level="not_protected"
chmod -R 777 /data/site/docker/data/runner
docker exec -it runner /bin/bash
# settings>CI/CD>Runners
curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
chmod +x /usr/local/bin/gitlab-runner
useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
gitlab-runner install --user=gitlab-runner --working-directory=/data/site/gitlab-runner
gitlab-runner stop
gitlab-runner start
gitlab-runner register --url https://git.qianbitou.cn/ --registration-token 21xm8JfRyKW9r5pg9ReH
-c value, --config value 指定配置文件
--template-config value 指定模板配置文件
--tag-list value 指定runner的标签列表,逗号分隔
-n, --non-interactive 无交互进行runner注册
--leave-runner 如果注册失败,不用删除runner
-r value, --registration-token value runner的注册token
--run-untagged 注册运行未加标签的构建,默认当标签列表为空时值为true
--locked 锁定runner 默认true
--access-level value 设置访问等级 not_protected or ref_protected; 默认 not_protected
--maximum-timeout value 为作业设置最大运行超时时间 默认零 单位秒
--paused 设置runner为 paused,默认 'false'
--name value, --description value Runner 名称
--limit value 程序处理的最大构建数量default: "0"
--output-limit value 最大的构建大小单位kb default: "0"
--request-concurrency value 作业请求的最大并发数 default: "0"
-u value, --url value GitlabCI服务器地址
-t value, --token value GitlabCI服务器token
# 添加yml
我们需要在项目的主目录下添加一个名为.gitlab-ci.yml的配置文件,这个文件用来告诉gitlab-runner要做些什么操作,这样我们提交变更之后,就可以触发CI/CD操作,这里附上一份前端项目的配置文件供参考,执行了简单命令,所做的事情也比较简单,就是执行构建命令,然后将代码打包,发布到远程主机的目录,然后解压.
gitlab-ci.yml
image:
name: node:14
stages:
# 构建
- build
# # 部署
- deploy
# # 部署生产
# - deploy:release
# 构建产物
build:app:
stage: build
artifacts:
expire_in: 1 day
paths:
- dist/
- package.json
tags:
- message
script:
- echo '开始打包'
- yarn
- yarn build
- echo '打包结束'
# 发布(apt-get update,apt-get install sshpass更新后安装sshpass,用于自动登录,-o StrictHostKeyChecking=no用于防止Host key verification failed报错)
deploy:app:
stage: deploy
tags:
- message
script:
- echo '开始发布'
- echo '检测到以下产物:'
- ls
- echo '检测结束'
- apt-get update
- apt-get install sshpass
- tar -cvf dist.tar dist
- sshpass -p 123456 scp -P 6022 -o StrictHostKeyChecking=no dist.tar test@166.66.66.666:/var/www/pump_sm
- sshpass -p 123456 ssh -p 6022 -o StrictHostKeyChecking=no test@166.66.66.666 tar -xvf /var/www/pump_sm/dist.tar -C /var/www/pump_sm
至此,我们完成了所有的内容,当我们提交代码到git,就会触发yml中配置的操作,实现流程自动化,我们可以在我们项目的CI/CD窗口中看到对应的流水线
#
1、Enter the GitLab instance URL(输入当前gitlab的访问地址)
2、Enter the registration token(输入我们上一步复制的token)
3、Enter a description for the runner(这一步可以理解为对这个runner实例的描述)
4、Enter optional maintenance note for the runner(可选项,可以直接回车)
5、Enter tags for the runner (comma-separated)(runner的标签,这个需要留意一下,输入一个特定的标签,这个在后面gitlab的yml文件中的tags中需要输入这个值)
6、Enter an executor(这里我们选docker,表示使用docker镜像来执行gitlab-ci.yml文件内部script命令)
7、Enter the default Docker image(表示默认的镜像,由于我是前端项目,所以这里使用node)
#
这一部分开始实现持续集成(CI)和持续交付 (CD),CI是当我们的代码提交之后,触发自动检测、构建和测试这一类操作,CD则是在CI的基础上,将集成后的代码自动化部署到各个环境