近来闲着无事,于是就想在我的NAS上面装个Jenkins玩玩,然后再和各服务器之间通过Zerotier组个内网,就可以打通整个玩耍流程了。
于是乎,就开始了折腾之旅,整个过程比较费劲,因为我需要.NET Core 3.1.NET 5 的开发环境,但是这两个版本官方已经停止支持了,所以只能自己手动安装。

问题的出现和解决

  1. dotnet-sdk 下载速度巨慢
解决方法:手动到SDK下载页面,选择linux版下载,然后复制下载链接过来
如:https://download.visualstudio.microsoft.com/download/pr/dd7d2255-c9c1-4c6f-b8ad-6e853d6bb574/c8e1b5f47bf17b317a84487491915178/dotnet-sdk-6.0.408-linux-x64.tar.gz
  1. 默认拉取镜像 jenkins/jenkins:lastest 版本不合适
在安装插件时,某些插件提示至少需要版本xxx,首页可以看到jenkins的版本不是最新版本
解决方法:指定镜像版本,推荐LTS长期支持版本,如 jenkins/jenkins:2.387.3-lts-jdk11
  1. 构建镜像之后:在容器内打印dotnet --info提示缺少libicu依赖
解决方法,安装它 apt-get update && apt-get install -y libicu-dev
  1. 镜像内部没有sudocurlwget 等常用命令
解决方法:也是安装它 apt-get update && apt-get install -y wget curl sudo rsync

最终得到的 Dockerfile

FROM jenkins/jenkins:2.387.3-lts-jdk11

USER root

# Install libicu ...
RUN apt-get update && apt-get install -y wget curl sudo rsync \
    && apt-get install -y libicu-dev \
    && rm -rf /var/lib/apt/lists/*

# Install .NET 6 SDK
RUN curl -SL --output dotnet-sdk.tar.gz https://download.visualstudio.microsoft.com/download/pr/dd7d2255-c9c1-4c6f-b8ad-6e853d6bb574/c8e1b5f47bf17b317a84487491915178/dotnet-sdk-6.0.408-linux-x64.tar.gz \
    && mkdir -p /usr/share/dotnet \
    && tar -zxf dotnet-sdk.tar.gz -C /usr/share/dotnet \
    && ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet \
    && rm dotnet-sdk.tar.gz

# Install .NET Core 3.1 SDK
RUN curl -SL --output dotnet-sdk-3.1.tar.gz https://download.visualstudio.microsoft.com/download/pr/e89c4f00-5cbb-4810-897d-f5300165ee60/027ace0fdcfb834ae0a13469f0b1a4c8/dotnet-sdk-3.1.426-linux-x64.tar.gz \
    && mkdir -p /usr/share/dotnet \
    && tar -zxf dotnet-sdk-3.1.tar.gz -C /usr/share/dotnet \
    && ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet-sdk-3.1 \
    && rm dotnet-sdk-3.1.tar.gz

# Install .NET 5 SDK
RUN curl -SL --output dotnet-sdk-5.tar.gz https://download.visualstudio.microsoft.com/download/pr/904da7d0-ff02-49db-bd6b-5ea615cbdfc5/966690e36643662dcc65e3ca2423041e/dotnet-sdk-5.0.408-linux-x64.tar.gz \
    && mkdir -p /usr/share/dotnet \
    && tar -zxf dotnet-sdk-5.tar.gz -C /usr/share/dotnet \
    && ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet-sdk-5 \
    && rm dotnet-sdk-5.tar.gz

# Install Node.js
RUN curl -sL https://deb.nodesource.com/setup_lts.x | bash - && \
    apt-get install -y nodejs

USER jenkins

启动容器

  1. 首先来到Dockerfile所在目录,执行镜像构建
docker build -t jenkins-with-dotnet-nodejs:lts .
  1. 等待构建结束,启动容器
docker run -d -p 宿主机端口:8080 --restart always --name jenkins -v 宿主机目录:/var/jenkins_home jenkins-with-dotnet-nodejs:lts
  1. 然后访问 http://宿主机IP:宿主机端口,通过容器日志,可以拿到初始化密码,如果拿不到就进入容器内部到指定的目录下CV过来。
# 查看容器日志
docker logs jenkins

# 进入容器内部
docker exec -it jenkins /bin/bash

安装插件前的优化

总所周知,访问这些国外的网站,总会遇到速度贼慢的情况,一般情况下,我们需要使用国内的镜像加速。所以在安装插件之前,先给镜像加速搞好,可以提升安装体验。
打开前面挂载的宿主机目录,找到 hudson.model.UpdateCenter.xml文件,把其中的url替换一下,比如使用清华大学的镜像加速。

<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
  </site>
</sites>

结束

安装过程中尝试了蛮多操作的,只不过想不起来了,反正折腾么,多试试多学学吧就。

最后修改:2023 年 05 月 11 日
如果觉得我的文章对你有用,请随意赞赏