gitlab CI/CD 的使用
我将使用 gitlab 的流水线自动实现 hugo blog 文章的自动发布。
一、基础知识
二、安装过程
1.安装 gitlab runner
首先需要安装 gitlab runner 进入服务器 A
安装方法:
容器部署
手动二进制文件部署
通过 rpm/deb 包部署
docker 方式安装
安装文档:https://docs.gitlab.com/runne…
1 docker run -dit \
2 --name gitlab-runner \
3 --restart always \
4 -v /srv/gitlab-runner/config:/etc/gitlab-runner \
5 -v /var/run/docker.sock:/var/run/docker.sock \
6 gitlab/gitlab-runner
1.1 设置信息
docker exec -it gitlab-runner gitlab-runner register
- 非 docker 方式安装
2.1 安装 GitLab Runner
安装环境:Linux
其他环境参考:https://docs.gitlab.com/runne…
下载
1 curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
添加权限
1 chmod +x /usr/local/bin/gitlab-runner
新建 gitlab-runner 用户
1 sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
安装
安装时需要指定我们上面新建的用户
1 gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
启动
1 gitlab-runner start
1# Download the binary for your system
2sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
3
4# Give it permissions to execute
5sudo chmod +x /usr/local/bin/gitlab-runner
6
7# Create a GitLab CI user
8sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
9
10# Install and run as service
11sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
12sudo gitlab-runner start
2.配置 docker shell 链接
1 ssh-keygen -t rsa
2 cd .ssh/
3 cat id_rsa.pub >>authorized_keys
4 docker cp id_rsa gitlab-runner:/root
5 docker exec -it gitlab-runner /bin/bash
6 chmod 600 /root/id_rsa
7
8
9 vim /etc/systemd/system/gitlab-runner.service
10
11 "--syslog" "--user" "root" #修改为root
12 wq保存退出
13
14 systemctl daemon-reload
15 systemctl restart gitlab-runner
3.配置.gitlab-ci.yml 文件
1 vim .gitlab-ci.yml
2
3 stages:
4 - build
5 - test
6 - deploy
7
8 build-job:
9 stage: build
10 script:
11 - echo "上传代码"
12 - echo "上传完成."
13
14 unit-test-job:
15 stage: test
16 script:
17 - echo
18 - sleep 60
19 - echo "Code coverage is 90%"
20
21 lint-test-job:
22 stage: test
23 script:
24 - echo "Linting code... This will take about 10 seconds."
25 - sleep 10
26 - echo "No lint issues found."
27
28 deploy-job:
29 stage: deploy
30 script:
31 - echo "Deploying application..."
32 - echo "Application successfully deployed."