gitlab之cicd的gitlab-runner集成-dockerfile构建环境

news2024/11/24 5:02:20

目录

  • 概述
  • 离线资源
  • docker-compose
    • 问题
  • docker-compose
    • 问题1
    • 问题2
  • gitlab-runner集成gitlab

概述

  cicd引文目录是想通过dockerfile构建 maven、jdk、docker环境的 gitlab-runner 运行环境。但docker最后测试的时候有点问题,且最后使用 kubectl 时有麻烦,所以放弃。但有参考意义,记录一下,后续有时间完善。
  gitlab-runner使用 rpm 离线安装的方式来进行 CICD 实现,相关文章参考 此篇文章
  cicd完成以下目标

  • 所有环境和代码使用同一个仓库,将软件包纳入版本管理
  • 团队共同决定发布流程
  • 保持 DEV、TEST、PRODUCTION 环境的一致性
  • 自动化回归测试,回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
  • 小步提交,每日部署;而不是一次部署大量变更
  • 更快、更频繁发布

离线资源

  gitlab-runner可以去 hub 上拉取最新版本,想自制离线安装镜像,请稳步参考 docker镜像的导入导出 ,无兴趣的直接使用在此提供离线资源 百度网盘。

docker-compose

FROM gitlab/gitlab-runner:v11.11.2
MAINTAINER Lusifer <632105841@qq.com>

# 修改软件源
RUN echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse' > /etc/apt/sources.list && \
    echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse' >> /etc/apt/sources.list && \
    echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse' >> /etc/apt/sources.list && \
    echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse' >> /etc/apt/sources.list && \
    apt-get update -y && \
    apt-get clean

# 安装 Docker
RUN apt-get -y install apt-transport-https ca-certificates curl software-properties-common && \
    curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add - && \
    add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" && \
    apt-get update -y && \
    apt-get install -y docker-ce
COPY daemon.json /etc/docker/daemon.json

# 安装 Docker Compose
WORKDIR /usr/local/bin
RUN wget https://raw.githubusercontent.com/topsale/resources/master/docker/docker-compose
RUN chmod +x docker-compose

# 安装 Java
RUN mkdir -p /usr/local/java
WORKDIR /usr/local/java
COPY jdk1.8.0_261.tar.gz /usr/local/java
RUN tar -zxvf jdk1.8.0_261.tar.gz && \
    rm -fr jdk1.8.0_261.tar.gz

# 安装 Maven
RUN mkdir -p /usr/local/maven
WORKDIR /usr/local/maven
#RUN wget https://raw.githubusercontent.com/topsale/resources/master/maven/apache-maven-3.5.3-bin.tar.gz
COPY apache-maven-3.8.1-bin.tar.gz /usr/local/maven
RUN tar -zxvf apache-maven-3.8.1-bin.tar.gz && \
    rm -fr apache-maven-3.8.1-bin.tar.gz
COPY settings.xml /usr/local/maven/apache-maven-3.8.1/conf/settings.xml

# 配置环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_261
ENV MAVEN_HOME /usr/local/maven/apache-maven-3.8.1
ENV PATH $PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin

# 解决 非 root 用户时,环境变量找不到
RUN echo export JAVA_HOME=/usr/local/java/jdk1.8.0_261 >> /etc/profile
RUN echo export PATH=$PATH:$JAVA_HOME/bin >> /etc/profile
RUN echo export MAVEN_HOME=/usr/local/maven/apache-maven-3.8.1 >> /etc/profile
RUN echo export PATH=$PATH:$MAVEN_HOME/bin >> /etc/profile


WORKDIR /

问题

  在构建镜像的时候,发现 mvn 命令不能找到,但执行 docker exec 的时候是可以的,后经测试发现,使用 gitlab-runner 用户来操作 gitlab-runner。

解决方案

# 解决 非 root 用户时,环境变量找不到
RUN echo export JAVA_HOME=/usr/local/java/jdk1.8.0_261 >> /etc/profile
RUN echo export PATH=$PATH:$JAVA_HOME/bin >> /etc/profile
RUN echo export MAVEN_HOME=/usr/local/maven/apache-maven-3.8.1 >> /etc/profile
RUN echo export PATH=$PATH:$MAVEN_HOME/bin >> /etc/profile

docker-compose

docker-compose.yml

# 直接启动
version: '3.1'
services:
  gitlab-runner:
    restart: always
    image: gitlab/gitlab-runner:v11.11.2.2
    privileged: true
    volumes:
      - /usr/local/docker/runner/config:/etc/gitlab-runner
      - /var/run/docker.sock:/var/run/docker.soc
      - /root/gitlab-runner/settings.xml:/usr/local/maven/apache-maven-3.8.1/conf/settings.xml

问题1

定制镜像的时候,maven源是不固定的,所以写死不好,改成动态配置。

方案如下

 - /root/gitlab-runner/settings.xml:/usr/local/maven/apache-maven-3.8.1/conf/settings.xml

问题2

  错误日志如下,后续注册至 gitlab 会自动生成

ERROR: Failed to load config stat /etc/gitlab-runner/config.toml: no such file or directory  builds=0

gitlab-runner集成gitlab

在这里插入图片描述
执行如下命令

# 操作
# 进入容器交互
[root@hadoop01 gitlab-runner]# docker exec -it gitlab-runner-gitlab-runner-1 /bin/bash
# 开始注册
root@1cdd1fbf2a66:/# gitlab-runner register
Runtime platform                                    arch=amd64 os=linux pid=65 revision=ac2a293c version=11.11.2
Running in system-mode.                            
                                                   
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://10.32.36.142:8088/
Please enter the gitlab-ci token for this runner:
zTmKegWEfStFWa5hCbhR
Please enter the gitlab-ci description for this runner:
[1cdd1fbf2a66]: 测试
Please enter the gitlab-ci tags for this runner (comma separated):
test,dev,prod
Registering runner... succeeded                     runner=zTmKegWE
Please enter the executor: parallels, shell, ssh, virtualbox, docker+machine, docker-ssh+machine, kubernetes, docker, docker-ssh:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! 

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1794778.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Facechain系列: 通过代码进行推理

进行推理时&#xff0c;需要编辑run_inference.py中的代码。为了避免人物肖像的版权问题&#xff0c;文章中使用的图片不是由FaceChain实际生成的图片&#xff0c;特此说明。 1. 以下代码适用于Linux系统&#xff0c;如果希望在Windows系统中运行&#xff0c; folder_path f…

新加坡裸机云站群服务器稳定性怎么样

新加坡裸机云站群服务器的稳定性在云计算领域备受关注&#xff0c;这得益于其卓越的硬件配置、先进的数据中心设计、优质的网络连接以及严格的管理措施。以下是对新加坡裸机云站群服务器稳定性的详细科普&#xff1a; 一、硬件与配置 新加坡裸机云站群服务器通常采用高性能的物…

matrix-breakout-2-morpheus vulnhub靶场

端口扫描 80 81 需要用户名密码登录 目录扫描 robots.txt 妹用 找不到利用点&#xff0c;换个扫描器再扫 发现新的文件 graffiti.txt graffiti.php 输入的数据Post后会回显到页面上 抓包看看&#xff0c;居然直接传文件路径 发现我们post的数据被写入了graffiti.…

搜维尔科技:【研究】Xsens Link对跑步运动学的可靠性

内容类型&#xff1a;客户案例 产品&#xff1a;MVN Link 产品用例&#xff1a;教育科研 应用领域&#xff1a;运动分析 在实验室环境之外分析现实环境中人体运动的能力正变得越来越重要。各个学科的研究人员&#xff0c;尤其是运动科学和生物力学的研究人员&a…

根据PDF模版填充数据并生成新的PDF

准备模版 使用 福昕高级PDF编辑器 &#xff08;本人用的这个&#xff0c;其他的也行&#xff0c;能作模版就行&#xff09;打开PDF文件点击 表单 选项&#xff0c;点击 文本域在需要填充数据的位置设计文本域设置 名称、提示名称相当于 属性名&#xff0c;提示就是提示&#x…

伽马校正技术在AI绘画中的作用

随着人工智能技术的飞速发展&#xff0c;AI绘画已经成为了艺术创作领域的一股新兴力量。在这个数字化时代&#xff0c;计算机图形学和机器学习的结合为我们带来了前所未有的创作工具。然而&#xff0c;为了实现更加真实和自然的色彩表现&#xff0c;伽马校正技术在其中扮演着至…

python怎么下载numpy

安装Python step1&#xff1a;官网下载安装包&#xff1b; https://www.python.org/ 我下载的是python-3.4.4.msi step2&#xff1a;python环境变量配置&#xff1b; 计算机-属性-高级系统设置-环境变量-系统变量 找到PATH&#xff0c;点击编辑&#xff0c;加英文分号;在…

Qt——升级系列(Level Two):Hello Qt 程序实现、项目文件解析、Qt 编程注意事项

Hello Qt 程序实现 使用“按钮”实现 纯代码方式实现&#xff1a; // Widget构造函数的实现 Widget::Widget(QWidget *parent): QWidget(parent) // 使用父类构造函数初始化QWidget&#xff0c;传入父窗口指针, ui(new Ui::Widget) // 创建Ui::Widget类的实例&#xff0c;并…

【自定义View】Android圆饼进度条

源码 自定义属性 <?xml version"1.0" encoding"utf-8"?> <resources><declare-styleable name"ArcProgressView"><attr name"android:textSize" /><attr name"bgBorderWidth" format"d…

短视频竖屏:成都鼎茂宏升文化传媒公司

短视频竖屏&#xff1a;重塑视觉体验与社交传播的新潮流 随着移动互联网的迅猛发展和智能手机的普及&#xff0c;短视频已经成为了人们日常生活中不可或缺的一部分。而在短视频的众多形式中&#xff0c;竖屏短视频以其独特的视角和便捷的传播方式&#xff0c;正逐渐崭露头角&a…

Qt绘图(2D)讲解

一、绘图基础 2D 绘图系统如下: 2D 绘图主要是 QPainter、QPaintDevice、QPaintEngine 三个类,主要类的作用(其关系见图示) QPainter(绘制器)是用来执行绘图的操作,用于描述需要绘制的图形,比如需要绘制线、矩形、圆形等。QPaintDevice(绘图设备)是抽象出来的需要绘制的绘…

uni微信小程序editor富文本组件如何插入图片

需求 在editor中插入图片&#xff0c;并对图片进行编辑&#xff0c;简略看一下组件的属性&#xff0c;官网editor 组件 | uni-app官网 解决方案 首先要使用到ready这个属性&#xff0c;然后官网有给代码粘过来&#xff0c;简单解释一下这段代码的意思&#xff08;作用是在不同…

linux实验报告

实验一&#xff1a;Linux操作系统的安装与配置 实验目的&#xff1a; 1.掌握虚拟机技术&#xff1b; 2.掌握Linux的安装步骤&#xff1b; 3.掌握安装过程中的基本配置要求。 4.掌握正确启动Linux的方法&#xff1b; 5.掌握正确退出Linux的方法&#xff1b; 6.熟悉已安装…

Oracle存储过程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、前置准备1.创建表空间2.创建用户3.赋权 二、存储过程1.创建数据表2.创建存储过程3.执行存储过程4.带参执行5.控制语句 总结 前言 这段时间实习&#xff0c…

.NET AI如何从0开始?

你是否在思考如何利用AI为您公司的产品增加智能方向的业务扩展&#xff1f; 或者你是否有思考过怎么去利用AI减少部分工作量&#xff1f; 如果你有类似于上面的问题&#xff0c;想要学习AI&#xff0c;并且您是一名.NET开发工程师&#xff0c;或您是一名弃暗投明的Java转.NET…

六月的魔力:揭秘2024年加密市场与Reflection的创新与收益

回想过去加密货币市场的沉浮&#xff0c;一年中市场的阶段性牛市大多发生在下半年&#xff0c;六月似乎是一个神奇的时间节点。每年六月一到&#xff0c;加密货币市场仿佛突然被按下启动按钮&#xff0c;沉寂的土狗开始扶苏&#xff0c;经过半年准备的各大项目方开始蠢蠢欲动。…

城市之旅:使用 LLM 和 Elasticsearch 简化地理空间搜索(一)

作者&#xff1a;来自 Elastic Philipp Kahr, Valentin Crettaz 这篇博文的本地部署实践 Jupyter notebook 请详细阅读文章 “城市之旅&#xff1a;使用 LLM 和 Elasticsearch 简化地理空间搜索&#xff08;二&#xff09;”。 探索如何从自然语言提问创建地理空间搜索。在下…

15- Redis 中的 整数集合 数据结构

整数集合是 Set 对象的底层实现之一。当一个 Set 对象只包含整数值元素&#xff0c;并且元素数量不大时&#xff0c;就会使用整数集合这个数据结构作为底层实现。 1. 整数集合结构设计 整数集合本质上是一块连续内存空间&#xff0c;它的结构定义如下&#xff1a; typedef s…

​在 The Sandbox 元宇宙的 CU 超商中寻找Milk币!

CU&#xff08;韩国领先的便利店&#xff09;和 MiL.k&#xff08;基于区块链的忠诚度整合平台&#xff09;合作在 The Sandbox 推出了首款元宇宙游戏&#xff0c;通过独家活动在 Web2 和 Web3 之间建立联系。 在元宇宙中玩转 “Play CU X MiL.k” 体验 通过引人入胜的游戏内容…

uniapp小程序多线程 Worker 实战【2024】

需求 最近遇到个小程序异步解码的需求&#xff0c;采用了WebAssembly&#xff0c;涉及大量的计算。由于小程序的双线程模型只有一个线程处理数据&#xff0c;因此智能寻求其它的解决方案。查看小程序的文档&#xff0c;发现小程序还提供一个异步线程的Worker方案&#xff0c;可…