基于Gitlab-runner+docker的CI/CD简单使用

一、Gitlab-Runner的安装

1、Linux直接安装Gitlab Runner

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
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash

报错–> useradd:无法打开 /etc/shadow

# 查看权限
lsattr /etc/passwd
# 去除i权限 i表示只读
chattr -i /etc/passwd
gitlab-runner register
1.解决gitlab-runner执行docker命令提示权限不足的问题
将gitlab-runner用户添加到docker组
sudo usermod -aG docker gitlab-runner
验证是否生效:
sudo -u gitlab-runner -H docker info
2.给gitlab-runner sudo权限
sudo vi /etc/sudoers
在root ALL=(ALL:ALL) ALL下增加gitlab-runner ALL=(ALL) NOPASSWD: ALL

2、Docker容器方式搭建Gitlab-Runner

【链接】Docker容器版的Gitlab-Runnner官方文档
按照以下方法搭建三个Gitlab-Runner
· build 用于项目编译,创建Docker镜像
· deploy 用于部署
· push-tags 部署成功,测试通过,则可以手动将镜像推送到镜像仓库,作为一个版本保存

(1) 安装注册Gitlab-Runner

# 启动
docker run -d --name gitlab-runner --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:latest
# 注册
docker exec -it gitlab-runner gitlab-runner register

注册需要设置的runner参数

$ docker exec -it gitlab-runner gitlab-runner register
Runtime platform arch=amd64 os=linux pid=21 revision=8925d9a0 version=14.1.0
Running in system-mode.                            
                                                  
Enter the GitLab instance URL (for example, https://gitlab.com/):
# 填写下图中的URL
Enter the registration token:
# 填写下图中的toekn
Enter a description for the runner:
[fbfd0390404c]: description # runner的备注或描述信息
Enter tags for the runner (comma-separated):
# Runner的标签,对应.gitlab-ci.yml设置的tag
Registering runner... succeeded                     runner=-zPT6d-G
Enter an executor: docker-ssh+machine, kubernetes, docker, docker-ssh, ssh, docker+machine, custom, parallels, shell, virtualbox:
docker #选择docker
Enter the default Docker image (for example, ruby:2.6):
docker:latest # 选择使用的Docker镜像
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

在这里插入图片描述

(2) 配置config.toml

重启生效

cd /srv/gitlab-runner/config
vi config.toml

在这里插入图片描述

#修改
privileged = true
volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock", "/builds/:/builds/"]
# 添加 不会每次都重新拉取新的镜像
pull_policy = ["if-not-present"]

(3)查看Runner注册情况

在这里插入图片描述

二、测试部署

准备:
- maven-jdk8:v1.0 镜像,用于编译打包项目
- Dockerfile
- .gitlab-ci.yml 存放与项目根目录
- 远程代码仓库,此处使用的是阿里云镜像仓库

项目结构:
在这里插入图片描述

准备 .gitlab-ci.yml

stages:
  - build
  - deploy
  - produce
build-smc:
  stage: build
  script:
    - echo "$PWD"
    - echo "$HOME"
    - echo "$CI_COMMIT_REF_NAME"
    - docker run --rm
      -v "$PWD":/app
      -v "$HOME/.m2":/root/.m2
      -w /app maven-jdk8:v1.0
      mvn clean install
    - cd $PWD/alibaba-basic-parent/alibaba-middle-ware
    - ls -l
    - docker build -t middle-server:$CI_COMMIT_REF_NAME .
  tags: # 与gitlab-runner注册设置的tag一致,表示所使用的Runner
    - build3
  only:
    - dev
    - tags

deploy_dev:
  stage: deploy
  script:
    - echo "$PWD"
    - docker images
    - ls -l
    - docker run -dit --name middle-server -p 10000:10000 middle-server:$CI_COMMIT_REF_NAME
  tags:
    - deploy
  only:
    - dev
    - tags
push_tags_harbor:
  stage: produce
  script:
    - docker ps
    - docker login --username=xxx --password=xxx registry.cn-chengdu.aliyuncs.com
    - docker tag middle-server:$CI_COMMIT_REF_NAME registry.cn-chengdu.aliyuncs.com/multi-config/base-repository:middle-server-v1.0
    - docker push registry.cn-chengdu.aliyuncs.com/multi-config/base-repository:middle-server-v1.0
  when: manual
  tags:
    - push-tags
  only:
    - tags

之后,只要向Gitlab提交新的代码,三个Gitlab-Runner便会自动触发,根据.gitlab-ci.yaml的配置执行相关命令,完成项目的打包、编译、部署等工作

待解决问题:

gitlab-runner运行docker-compose命令,提示没有docker-compose命令,因此没有使用docker-compose进行部署

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GitLab-RunnerGitLab提供的一个开源工具,可以用于在GitLab运行CI/CD任务。通过GitLab-Runner,可以方便地实现自动化的构建、测试、集成和部署等任务。 下面是一些使用GitLab-Runner打造锋利的CI/CD的方法: 1. GitLab-Runner安装和配置:首先需要安装GitLab-Runner,并将其配置到GitLab服务器上。可以通过Docker容器、二进制包或源码编译的方式安装GitLab-Runner,然后在GitLab服务器上注册Runner,并设置Runner的执行环境和权限等参数。 2. 编写CI/CD脚本:在GitLab上创建项目,并在项目中编写CI/CD脚本,定义任务的执行流程和步骤。可以使用GitLab提供的CI/CD工具和插件,也可以使用第三方工具和脚本库。 3. 构建、测试和集成:通过GitLab-Runner执行CI/CD任务,自动化构建、测试和集成代码,并生成测试报告和代码覆盖率报告等文档。可以使用各种编程语言和框架,如Java、Python、Ruby、Node.js等。 4. 部署和发布:通过GitLab-Runner将代码部署到目标服务器上,并执行自动化发布流程。可以使用容器化技术、配置管理工具、自动化部署工具等实现高效、可靠的部署和发布。 5. 监控和反馈:通过GitLab的监控和反馈机制,及时发现和解决CI/CD任务中的问题和错误,并持续优化任务的执行效率和稳定性。可以使用各种监控工具和日志分析工具,如Prometheus、Grafana、ELK等。 总之,使用GitLab-Runner打造锋利的CI/CD,可以提高开发和运维的效率和质量,降低项目的风险和成本,实现持续交付和快速迭代的目标。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值