SpringBoot项目的CI配置 # 安全变量
运行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
使用 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配置 # 安全变量的更多相关文章
- spring-boot项目的docker集成化部署(一)
目录 spring-boot项目的docker集成化部署 前言 基本思路与方案 基本步骤 准备源码 服务器和基础环境 结语 1. 本文总结: 2. 后期优化: spring-boot项目的docker ...
- SpringBoot项目的parent依赖和配置文件*.properties、*.yml详解
1.idea创建SpringBoot项目 idea创建SpringBoot项目应该对很多人来说已经是菜到不能到菜的操作了,但是对于初学者小白来说,还是要讲解一下的.打开idea,然后选择Spring ...
- 使用 vue-cli-service inspect 来查看一个 Vue CLI 3 项目的 webpack 配置信息(包括:development、production)
使用 vue-cli-service inspect 来查看一个 Vue CLI 3 项目的 webpack 配置信息(包括:development.production) --mode 指定环境模式 ...
- 关于springboot项目的jar和war两种打包方式部署的区别
关于springboot项目的jar和war两种打包方式部署的区别 关于springboot项目的jar和war两种打包方式部署的区别? https://bbs.csdn.net/topics/392 ...
- springboot项目的maven的pom.xml文件第一行报错 Unknown Error
springboot项目的maven的pom.xml文件第一行报错 Unknown Error https://blog.csdn.net/mini_jike/article/details/9239 ...
- docker-compose如何动态配置springboot项目的application.yml的配置
假如我们再springboot的工程中有配置文件 方式1: application.properties里面存在环境变量: #配置数据库链接 spring.datasource.url = jdbc: ...
- 构建Springboot项目的3种方式
一.自己创建: 1.创建maven项目 2.pom.xml添加如下内容: <!--1.指定依赖都由springboot管理--> <parent> <groupId> ...
- java web项目的https配置
1.进入到jdk下的bin目录 keytool -v -genkey -alias tomcat -keyalg RSA -keystore d:/tomcat.keystore -validity ...
- 基于SpringBoot项目的https
在spring中配置项目运行的端口很简单. 在application.properties中 server.port: 这样配置后,spring boot内嵌的tomcat服务器就是跑在8080端口启 ...
随机推荐
- Spring知识点详解
1.Spring 概述 1.1.Spring 的概念和特点 Spring 是一个轻量级的控制反转(IoC)和面向切面(AOP)的开源容器框架,它是由 Rod Johnson(音乐学博士)所创建,其核心 ...
- Solution -「Local 11145」诗意狗
0x01 前置芝士 树形结构?贪心?思维?眼睛? 好有趣... link 0x02 题目大意:给你一颗有 \(n\) 个节点的树,你需要尽可能多的删掉边,使得剩下的图中有 \(k\) 个点满足互相能走 ...
- 使用Huggingface在矩池云快速加载预训练模型和数据集
作为NLP领域的著名框架,Huggingface(HF)为社区提供了众多好用的预训练模型和数据集.本文介绍了如何在矩池云使用Huggingface快速加载预训练模型和数据集. 1.环境 HF支持Pyt ...
- Canal实时解析mysql binlog数据实战
一.说明 通过canal实时监听mysql binlog日志文件的变化,并将数据解析出来 二.环境准备 1.创建maven项目并修改pom.xml配置文件 <dependencies> & ...
- 面试突击73:IoC 和 DI 有什么区别?
IoC 和 DI 都是 Spring 框架中的重要概念,就像玫瑰花与爱情一样,IoC 和 DI 通常情况下也是成对出现的.那 IoC 和 DI 什么关系和区别呢?接下来,我们一起来看. 1.IoC 介 ...
- vscode 源代码不能自动stage change
前言 vscode的强大不用赘述了,当你开始使用自然就会爱上他.围绕着IDE的编写体验,有很多强大的自带或者第三方插件,可以做到,编码,git管理,甚至部署一条龙[我司就有这样的插件],让大家沉迷其中 ...
- Linux 07 用户组文件
参考源 https://www.bilibili.com/video/BV187411y7hF?spm_id_from=333.999.0.0 版本 本文章基于 CentOS 7.6 概述 用户组的所 ...
- java学习第二天面向对象.day07
变量的生命周期 成员变量:存储在堆内存中,随着对象的销毁而销毁 局部变量:存储在栈内存中,随着所定义方法的调用结束而销毁 局部变量存储在方法中,每次调用方法都会在栈空间开辟一块内存空间--栈帧,方法调 ...
- postgresql用户与权限管理
pg使用角色的概念管理数据库访问权限,角色是一系列相关权限的集合.为了管理方便,通常把一系列先关的权限赋予给一个角色,如果哪个用户需要这些权限,就把这些角色赋予给响应的用户. 由于用户也拥有一系列的相 ...
- Word 脚注和尾注是什么?怎么设置?
描述 脚注一般位于页面的底部,作为文档某处内容的注释.尾注一般位于文档的末尾,列出引文的出处等. 设置脚注和尾注 将光标移动到要插入脚注或尾注的地方,然后点击"引用"选项卡. 左边 ...