首页 > 其他分享 >gitlab之cicd的gitlab-runner集成-dockerfile构建环境

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

时间:2024-05-31 11:34:29浏览次数:21  
标签:runner cicd gitlab maven usr docker local

目录

概述

  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 <[email protected]>

# 修改软件源
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! 

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

标签:runner,cicd,gitlab,maven,usr,docker,local
From: https://blog.csdn.net/2301_79691134/article/details/139276592

相关文章

  • gitlab备份方法
    工具:gitlab社区版 一、修改配置文件 /etc/gitlab/gitlab.rb开启备份功能二、创建备份脚本backup.sh文件,内容如下,并给执行权限###backupgitlabgitlab-rakegitlab:backup:create>/dev/null2>&1if[$?-ne0];thenecho'Backupgitlabdataerror!'>/home......
  • git detected dubious ownership in repository(idea gitlab不能使用账户密码登录)
    1.情景展示如上图所示,当我在idea当中commit时,报错信息如下:Errorupdatingchanges:detecteddubiousownershipinrepositoryat'D:/workspace-idea2024/dc''D:/workspace-idea2024/dc'isownedby:(inconvertible)(S-1-5-21-269100500-990079634-2360623121-1000......
  • Docker安装Gitlab教程
     1、Gitlab介绍GitLab是一个用于代码仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务平台,GitLab比较适合公司内部的项目管理,用来管理项目成员、代码提交、项目运维。分为社区免费版和企业收费版,针对中小型公司推荐使用社区免费版,功能就够用了......
  • RunnerGo V4.6.0 新增功能介绍
    RunnerGo最新V4.6.0版本不仅对原有功能进行了深度优化和改进,还新增了一些新功能。 UI插件:浮窗升级,优化浏览体验此次更新UI插件全新升级至V2.1版本。新版取消了页面内右下角按钮的设计,在浏览器右侧开启了浮窗,从而更方便客户操作浏览器界面。 RunnerGoUI插件本次升级前&后......
  • 基于.NET Framework 4.8.1的ASP.NET Web用Gitlab Runner调用MSBuild之后没有bin\rosl
    摘要基于.NETFramework4.8.1的传统ASP.NETWeb程序,使用GitlabRunner自动集成,在发布的网站目录下,没有bin\Roslyn文件夹。这里涉及到容易被忽视的Roslyn编译器的知识点。Roslyn是什么?在我们的ASP.NETWeb项目源代码中有什么体现?1、web.config下有配置节点一般在web.config末......
  • 使用docker安装gitlab
    Version:gitlab-ce:16.2.4-ce.0简介Gitlab是一个开源的Git代码仓库系统,可以实现自托管的Github项目,即用于构建私有的代码托管平台和项目管理系统。系统基于RubyonRails开发,速度快、安全稳定。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团......
  • 让Gitlab禁用SSL
    摘要Gitlab运行在Nginx反向代理之后,Gitlab本身不再自身提供https访问了。本文介绍如何给Docker中的Gitlab禁用SSL。来自阿里通义的回答,亲测可用我的Gitlab版本是17.0.0。要让GitLab只监听HTTP端口,你需要调整GitLab的配置以禁用HTTPS并仅使用HTTP。这通常涉及到修改GitLab的web......
  • 如何从0-1了解 熟悉 精通gitlab
    加入gitlab团队项目:打开其他用户极狐邀请邮件;点击接受紫色邀请按钮“acceptinvitation”;选择免费试用90天saas服务;使用邮箱注册进行邮箱验证【验证方式:邮箱验证码方式验证】;绑定手机号码【验证手机号真实属于个人方式:10分钟有效期短信验证码】; 填写一些git......
  • GitLab安装
    GitLab安装官方网站:https://about.gitlab.com/安装所需最小配置内存至少4G:https://docs.gitlab.cn/jh/install/requirements.html在ssh下安装官方安装文档:https://gitlab.cn/install/?version=ce1安装依赖sudoyuminstall-ycurlpolicycoreutils-pythonopenssh-server......
  • 【工具使用】【Shell脚本】【gitlab】下拉所有的仓库代码
    1 前言电脑重置了或者新的项目代码,仓库里二三十个,一个一个拉属实有点拉跨,今儿空了整了个脚本,可以拉下所有的仓库代码。2 前置需要装一个解析json的,windows的话可以直接下载:下载,mac的话可以再官网下载:官网地址。然后加入到PATH下,效果如下:git上新建个access_token,下......