首页 > 其他分享 >制作docker方式执行Gitlab Runner所需要的镜像

制作docker方式执行Gitlab Runner所需要的镜像

时间:2024-02-27 21:44:20浏览次数:28  
标签:RUN get Runner Gitlab apt echo install docker

背景知识

启动Gitlab Runner时,使用Gitlab提供的官方镜像gitlab/gitlab-runner:latest即可。
Runner以容器的方式启动以后,根据前文我们注册到Gitlab服务器,然后就可以等着执行“流水线”里面的“作业”了。

执行“作业”是要启动另外的容器的,在这个容器里面才能运行dotnet build、dotnet pack甚至docker build之类的命令的。“作业”结束,这个容器会自动销毁。

本文要制作的镜像,是给这一步的临时容器用的。

准备一个空白的制作镜像的目录

这个目录下,将会有3个文件。1个是Docker打包必须的Dockerfile文件,没有扩展名。另外两个是我们引入了微软的集中定义版本号的技术,所依赖的,我们放在镜像里,能让我们编写.gitlab-ci.yml的时候更加规范和便捷。

1、Dockerfile

from ubuntu:20.04
MAINTAINER [email protected]
RUN apt update && apt install -y libcurl4
RUN apt install wget -y
RUN apt install apt-utils -y
RUN ln -s /lib/x86_64-linux-gnu/libdl-2.24.so /lib/x86_64-linux-gnu/libdl.so
RUN wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
RUN dpkg -i packages-microsoft-prod.deb
RUN apt-get update
RUN apt-get install -y apt-transport-https
RUN apt-get update
RUN apt install net-tools -y
RUN apt install bind9-utils -y
RUN apt install vim -y
RUN apt install iputils-ping -y
RUN apt-get install -y dotnet-sdk-5.0
RUN apt-get install -y dotnet-sdk-6.0
RUN apt-get install -y dotnet-sdk-7.0
RUN apt-get install -y dotnet-sdk-8.0

RUN apt-get install docker.io -y

RUN mkdir /root/.ssh
RUN chmod -R 700 /root/.ssh

RUN mkdir /home/public
COPY download-directory-builds-props.sh /home/public
COPY update-remote-version-number.sh /home/public
RUN chmod +x /home/public/*.sh

#现在用docker build会收到警告,要求使用docker buildx
#下边语句来源于https://github.com/docker/buildx?tab=readme-ov-file#dockerfile
COPY --from=docker/buildx-bin /buildx /usr/libexec/docker/cli-plugins/docker-buildx

2、download-directory-builds-props.sh

#!/bin/bash
echo off
rm -vf Directory.*.props

# 文件名
file="urls.txt"
# 检查文件是否存在
if [ ! -f $file ]; then
echo "$file 不存在"
exit 1
fi
# 循环读取文件内容
while IFS= read -r line; do
# echo "$line"
wget -nv -x -nH $line --content-disposition
done < "$file"

# 可以清理nuget的缓存,目前看起来不需要
# 不清理可以节省打包的时间
# dotnet nuget locals plugins-cache --clear

3、update-remote-version-number.sh

#!/bin/bash

echo "登入远程服务器的linux账户名称" S1
echo "分发版本号的http服务器名称或IP" $2
echo "网站根目录的文件夹名称" $3
echo "文件名:" $4
echo "新的版本号" $5

ssh $1@${2} <<EOF
cd /www/wwwroot/$3/version-numbers
sed -i "s/\([0-9\.]\{2,20\}\)/$5/g" $4

构建和推送镜像到仓库

docker build

docker build -t docker.amihome.cn/amihome/gitlab/docker-linux-dotnet8.0:20240227005 .

docker push

docker push docker.amihome.cn/amihome/gitlab/docker-linux-dotnet8.0:20240227005

如果没有登入docker仓库,必须先执行docker login username

标签:RUN,get,Runner,Gitlab,apt,echo,install,docker
From: https://www.cnblogs.com/amisoft/p/18038433

相关文章

  • docker基础概念
    一:docker介绍Docker借鉴集装箱装运货物的思想,让开发人员将应用程序及其依赖打包到一个轻量级、可移植的容器中,然后发布到任何运行Docker容器引擎的环境中,以容器方式来运行该应用程序。-软件从开发到部署到测试到上线,往往会准备三套环境:开发环境、测试环境、生产环境。反复......
  • RunnerGo UI自动化测试脚本如何配置
    RunnerGo提供从API管理到API性能再到可视化的API自动化、UI自动化测试功能模块,覆盖了整个产品测试周期。RunnerGoUI自动化基于Selenium浏览器自动化方案构建,内嵌高度可复用的测试脚本,测试团队无需复杂的代码编写即可开展低代码的自动化测试。 以一条简单的搜索场景为例,本文......
  • 如果正确清理docker可用回收资源
    正确清理Docker可用回收资源必须条件docker.service正常运行执行dockersystemprune,如下<root@DEV-K8S-WN4~>#dockersystempruneWARNING!Thiswillremove:-allstoppedcontainers-allnetworksnotusedbyatleastonecontainer-alldanglingimage......
  • Docker-Overlay2磁盘空间爆满清理方法
    Docker-Overlay2磁盘空间爆满清理方法在日常线上环境中,我们通常会来做利用Docker来做容器化管理,通过运行容器来执行任务等。但是,随着业务量的不断增大,容器的不断启动,往往会出现磁盘空间不足,1、第一种情况:是因为docker中部署的系统中日志内容的不断扩大。这种情况下,我们可手动,或定......
  • Docker_学习记录2
    本篇随笔为Docker学习记录(2),所有内容均参考尚硅谷Docker实战教程以及云原生开发安装mysql主从复制新建主服务器容器实例3307dockerrun-p3307:3306\ --namemysql-master\ --privileged=true\ -v/yiran/mysql-master/log:/var/log/mysql\ -v/yir......
  • Docker部署达梦数据库
    下载下载地址安装#导入镜像dockerload-idm8_20230808_rev197096_x86_rh6_64_single.tar#运行容器dockerrun-d-p5236:5236--namedm8--privileged=true-eCASE_SENSITIVE=N-ePAGE_SIZE=16-eLD_LIBRARY_PATH=/opt/dmdbms/bin-eEXTENT_SIZE=32-eBLANK_......
  • Docker
    docker总结和实例常用命令镜像管理镜像搜索dockerseartch镜像名或者关键词镜像拉取dockerpull镜像名:标签镜像罗列dockerimages镜像删除dockerrmi镜像id或者镜像名:标签镜像导出dockersave-o文件名.tar镜像名:标签镜像导入dockerload......
  • Docker环境安装细步骤
    如果之前已有安装有docker需要重新安装,先进行卸载,如果没安装忽略此步骤yumremovedockerdocker-clientdocker-client-latestdocker-commondocker-latestdocker-latest-logrotatedocker-logrotatedocker-engine安装Docker服务安装yum-utils安装所需的依赖组件软件包,执......
  • Gitlab 16.9.0 用Access Token注册Gitlab Runner
    升级到当前最新版Gitlab之后在“管理中心”的“CI/CD”--“Runners”下,提示以前的那种注册令牌的方式已经过时了。点击右上角按钮后,弹出对话框如下:上图画红框的信息,deprecated是不赞成,反对的意思。就是说注册令牌已经被放弃了,未来将会不支持。暂时还是可以用。点击蓝色按钮:N......
  • Dockerfile构建出错:Error response from daemon: pull access denied for hwjdk, rep
    原因:FROMhwjdk这样写,其实默认查找的是hwjdk:latest,而如果你的image里hwjdk镜像版本不是latest就会报这个错误解决方法:写上版本号即可: FROMhwjdk:1.19.1参考文章:Errorresponsefromdaemon:pullaccessdeniedforjdk,repositorydoesnotexistormayrequire......