运行GitLab Runner容器

参考Run GitLab Runner in a container - Docker image installation and configuration

执行下述命令运行gitlab-runner容器。

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 \
gitlab/gitlab-runner:latest

# 注册GitLab Runner

参考Registering Runners

使用 docker exec -it gitlab-runner /bin/bash 命令进入 gitlab-runner 容器命令行环境。

执行 gitlab-runner register 命令开始注册一个 runner。

注册时只有输入共享Runner的注册令牌(token)才能注册为共享Runner。关于Runner executor的介绍可以查看 Executors

。Runner executor选择Docker时会要求填写要使用的默认docker镜像。

安全变量

GitLab CI/CD的安全变量有两种,群组安全变量和项目安全变量,群组安全变量可作用于当前群组下所有项目以及子群组项目,递归继承;项目安全变量只作用当前项目。

实际项目配置的群组变量有:CI_REGISTRY(本地Docker Registry的地址),项目变量有:CI_REGISTRY_IMAGE(项目构建的docker镜像名称)

# Dockerfile

FROM java:8-jre

ADD target/discovery-server-1.0.0.jar app.jar

RUN bash -c 'touch /app.jar'

EXPOSE 10030

ENTRYPOINT ["java", "-Djava.security.edg=file:/dev/./urandom", "-Duser.timezone=Asia/Shanghai", "-Xmx128m", "-Xms64m", "-jar", "/app.jar"]

# .gitlab-ci.yml

.gitlab-ci.yml文件可以使用的变量除了手动配置的安全变量外,默认还可以使用预定义变量(详情见GitLab CI/CD Variables

)。

示例:

image: docker:latest

services:
- name: docker:dind
command: ["--insecure-registry=172.17.0.1:5000"] # 将本地Docker Registry私服设置为insecure,避免registry默认需要https才能访问 stages:
- package
- build
- deploy maven-package:
image: maven:3.5-jdk-8-alpine
tags:
- maven
stage: package
script:
- mvn clean install -Dmaven.test.skip=true
artifacts:
paths:
- target/*.jar # 将maven构建成功的jar包作为构建产出导出,可在下一个stage的任务中使用 build-master:
tags:
- docker
stage: build
script:
- docker build --pull -t "$CI_REGISTRY/$CI_REGISTRY_IMAGE" .
- docker push "$CI_REGISTRY/$CI_REGISTRY_IMAGE"
only:
- master build:
tags:
- docker
stage: build
script:
- docker build --pull -t "$CI_REGISTRY/$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" .
- docker push "$CI_REGISTRY/$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"
except:
- master

# Runner容器的配置

将maven构建runner容器使用的maven仓库使用数据卷方式进行共享,解决容器每次构建时都要重新下载依赖的问题。具体方法为使用 docker exec -it gitlab-runner /bin/bash 进入gitlab-runner容器,编辑 /etc/gitlab-runner/config.toml 文件,在maven构建runner下的volumes加上 /root/.m2 本地仓库的数据卷映射关系。

docker构建runner的privileged设置为true,以root用户身份进入容器进行构建任务,避免了由于权限不足无法访问/var/run/docker.sock的问题。

concurrent = 6
check_interval = 0 [[runners]]
name = "public docker runner"
url = "http://172.17.0.1:800/"
token = "5223e807ba2c42b18e2aadeceb0e0b"
executor = "docker"
[runners.docker]
registry_mirrors = ["https://ub9x5g6o.mirror.aliyuncs.com/"]
extra_hosts = ["git.yupaits.com:172.17.0.1"]
tls_verify = false
image = "docker:latest"
privileged = true
disable_cache = false
volumes = ["/cache"]
shm_size = 0
[runners.cache] [[runners]]
name = "public maven runner"
url = "http://172.17.0.1:800/"
token = "b97734914a435c7f3409bea71e122a"
executor = "docker"
[runners.docker]
extra_hosts = ["git.yupaits.com:172.17.0.1"]
tls_verify = false
image = "maven:3.5-jdk-8-alpine"
privileged = true
disable_cache = false
volumes = ["/cache", "/home/maven/.m2:/root/.m2"]
pull_policy = "if-not-present"
shm_size = 0
[runners.cache] [[runners]]
name = "public node runner"
url = "http://172.17.0.1:800/"
token = "e0dea1b0cb42a8d2e1df94ee442b82"
executor = "docker"
[runners.docker]
extra_hosts = ["git.yupaits.com:172.17.0.1"]
tls_verify = false
image = "node:8-alpine"
privileged = true
disable_cache = false
volumes = ["/cache"]
shm_size = 0
[runners.cache] [[runners]]
name = "public ssh runner"
url = "http://172.17.0.1:800/"
token = "266dc28d04f012a5ead3987c1f004e"
executor = "ssh"
[runners.ssh]
user = "root"
password = "password"
host = "172.17.0.1"
port = "22"
identity_file = "/root/.ssh/id_rsa"
[runners.cache]

SpringBoot项目的CI配置 # 安全变量的更多相关文章

  1. spring-boot项目的docker集成化部署(一)

    目录 spring-boot项目的docker集成化部署 前言 基本思路与方案 基本步骤 准备源码 服务器和基础环境 结语 1. 本文总结: 2. 后期优化: spring-boot项目的docker ...

  2. SpringBoot项目的parent依赖和配置文件*.properties、*.yml详解

    1.idea创建SpringBoot项目 idea创建SpringBoot项目应该对很多人来说已经是菜到不能到菜的操作了,但是对于初学者小白来说,还是要讲解一下的.打开idea,然后选择Spring ...

  3. 使用 vue-cli-service inspect 来查看一个 Vue CLI 3 项目的 webpack 配置信息(包括:development、production)

    使用 vue-cli-service inspect 来查看一个 Vue CLI 3 项目的 webpack 配置信息(包括:development.production) --mode 指定环境模式 ...

  4. 关于springboot项目的jar和war两种打包方式部署的区别

    关于springboot项目的jar和war两种打包方式部署的区别 关于springboot项目的jar和war两种打包方式部署的区别? https://bbs.csdn.net/topics/392 ...

  5. springboot项目的maven的pom.xml文件第一行报错 Unknown Error

    springboot项目的maven的pom.xml文件第一行报错 Unknown Error https://blog.csdn.net/mini_jike/article/details/9239 ...

  6. docker-compose如何动态配置springboot项目的application.yml的配置

    假如我们再springboot的工程中有配置文件 方式1: application.properties里面存在环境变量: #配置数据库链接 spring.datasource.url = jdbc: ...

  7. 构建Springboot项目的3种方式

    一.自己创建: 1.创建maven项目 2.pom.xml添加如下内容: <!--1.指定依赖都由springboot管理--> <parent> <groupId> ...

  8. java web项目的https配置

    1.进入到jdk下的bin目录 keytool -v -genkey -alias tomcat -keyalg RSA -keystore d:/tomcat.keystore -validity ...

  9. 基于SpringBoot项目的https

    在spring中配置项目运行的端口很简单. 在application.properties中 server.port: 这样配置后,spring boot内嵌的tomcat服务器就是跑在8080端口启 ...

随机推荐

  1. 基于 Rainbond 部署 DolphinScheduler 高可用集群

    本文描述通过 Rainbond 云原生应用管理平台 一键部署高可用的 DolphinScheduler 集群,这种方式适合给不太了解 Kubernetes.容器化等复杂技术的用户使用,降低了在 Kub ...

  2. ooday01类_对象_访问成员

    笔记: 什么是类?什么是对象? 现实生活中是由很多很多对象组成的,基于对象抽出了类 对象:软件中真实存在的单个个体/东西 类:类别/类型,代表一类个体 类是对象的模子,对象是类的具体的实例 类中可以包 ...

  3. 什么新东西值得学「GitHub 热点速览 v.22.29」

    上周 18k+ 的项目 bun 这周又获得 7k+ star,是时候了解下它背后的编程语言 zig 了,它并不是一门新的语言,伴随着 bun 的风靡,zig 本周也上了 GitHub 热榜.同样,可以 ...

  4. 我的sql没问题为什么还是这么慢|MySQL加锁规则

    前言 前阵子参与了字节跳动后端青训营,其中大项目编写涉及到数据持久化一般选择使用MySQL.由于时间原因,数据库使用我选择了无脑三板斧:1. 建立了索引加速查询.2. 关闭自动提交事务.3. 在需要确 ...

  5. 如何在Excel批量查询电话号码归属地?

    手机号码归属地的重要性大家应该都清楚,如果取消或者更改手机号码归属地,那么一会增加用户的被诈骗风险;二是对套餐资费会产生影响,加剧企业间的竞争,加剧数字鸿沟;三是企业运营管理需要投入大量人力物力,是个 ...

  6. mysql8.0二进制安装遇到的问题

    公司新项目需要用CentOS8.0以上的系统和mysql8.0:于是在虚拟机上开始操作测试: 一实验环境 1.系统版本:CentOS8.32.数据库版本:mysql-8.0.233.数据库下载链接:h ...

  7. .Net CLR GC 动态加载短暂堆阈值的计算及阈值超量的计算

    前言: 很多书籍或者很多文章,对于CLR或者GC这块只限于长篇大论的理论性概念,对于里面的如何运作模式,却几乎一无所知.高达近百万行的CPP文件,毕竟读懂的没有几个.以下取自CLR.Net 6 Pre ...

  8. Nginx 目录结构、Nginx服务控制命令

    # Nginx目录结构 # 首先推荐一个查看目录结构的工具 tree # yum install -y tree # sudo apt-get install -y tree ubuntu # 查看n ...

  9. 一个非常简单用.NET操作RabbitMQ的方法

    RabbitMQ作为一款主流的消息队列工具早已广受欢迎.相比于其它的MQ工具,RabbitMQ支持的语言更多.功能更完善. 本文提供一种市面上最/极简单的使用RabbitMQ的方式(支持.NET/.N ...

  10. SpringBoot RabbitMQ 注解版 基本概念与基本案例

    前言 人间清醒 目录 前言 Windows安装RabbitMQ 环境工具下载 Erlang环境安装 RabbitMQ安装 RabbitMQ Web管理端安裝 RabbitMQ新增超级管理员 Rabbi ...