ARM64适配系列文章
第一章 arm64环境上kubesphere和k8s的部署
第二章 arm64环境上nfs-subdir-external-provisioner的部署
第三章 arm64环境上mariadb的部署
第四章 arm64环境上nacos的部署
第五章 arm64环境上redis的部署
第六章 arm64环境上rabbitmq-management的部署
第七章 arm64环境上minio的部署
第八章 arm64环境上seata的部署
第九章 arm64环境上sentinel的部署
第九章 arm64环境上jenkins的部署
第十章 arm64环境上jenkins的部署
文章目录
前言
手里运维的业务平台要部署到用户环境,对方是华为910B的机器,单位目前没有,只有老的arm64架构的机器,反正先适配着,防止后续现抓麻爪了。
这一章记录jenkins的适配步骤。现在也有buildx的方案进行跨架构的编译,但是我现在手里有机器,就不值得用那个方案了,而且jenkins会用一段时间,开发同事那边也方便操作,所以就放弃了buildx的方案。
一、机器信息获取
1.1 芯片信息
lscpu
Architecture: aarch64
Byte Order: Little Endian
CPU(s): 40
On-line CPU(s) list: 0-39
Thread(s) per core: 1
Core(s) per socket: 40
Socket(s): 1
NUMA node(s): 1
Model: 1
CPU max MHz: 2500.0000
CPU min MHz: 600.0000
BogoMIPS: 40.00
L1d cache: unknown size
L1i cache: unknown size
L2 cache: unknown size
L3 cache: unknown size
NUMA node0 CPU(s): 0-39
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid asimdrdm
1.2 操作系统版本信息
hostnamectl
Static hostname: datax3
Icon name: computer-server
Chassis: server
Machine ID: 570e6fdcda17439886d6364f7a3ba217
Boot ID: c6b431eb288d4de4b62a823a7f383e7b
Operating System: CentOS Linux 7 (AltArch)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 4.14.0-115.el7a.0.1.aarch64
Architecture: arm64
二、版本获取
之前使用的是jenkins/jenkins:2.462.2-lts版本
通过dockerhub发现jenkins/jenkins:2.462.3-lts版本有支持arm的,尝试下载进行使用
# dockerpull.cn是国内加速源
docker pull image.cloudlayer.icu/jenkins/jenkins:2.462.3-lts
# 查看架构支持信息
docker inspect image.cloudlayer.icu/jenkins/jenkins:2.462.3-lts |grep Arch
"Architecture": "arm64",
# run一下试试
docker run -it image.cloudlayer.icu/jenkins/jenkins:2.462.3-lts /bin/bash
# 运行正常
三、准备工作
3.1 docker-compose安装
wget https://github.com/docker/compose/releases/download/v2.35.0/docker-compose-linux-aarch64
chmod +x /usr/local/bin/docker-compose-linux-aarch64
ln -s /usr/local/bin/docker-compose-linux-aarch64 /usr/bin/docker-compose
3.2 nodejs准备
wget https://registry.npmmirror.com/-/binary/node/latest-v16.x/node-v16.20.2-linux-arm64.tar.gz;
3.3 jdk准备
是从bell-sw下载的,这里的422版本是项目后端服务上指定的
wget https://download.bell-sw.com/java/8u422+6/bellsoft-jdk8u422+6-linux-aarch64.tar.gz
3.4 maven准备
经过查询arm64和x86兼容,不需要单独下载新的arm版包
3.5 容器内apt源文件的准备
容器内是debian12的操作系统,要使用DEB822 格式的才行
debian.sources
Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/debian
Suites: bookworm bookworm-updates bookworm-backports
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Types: deb
URIs: https://security.debian.org/debian-security
Suites: bookworm-security
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
这里的源使用的是清华源的
地址:https://mirrors.tuna.tsinghua.edu.cn/help/debian/
3.6 容器内dns文件的准备
resolv.conf
# Generated by Docker Engine.
# This file can be edited; Docker Engine will not make further changes once it
# has been modified.
nameserver 127.0.0.11
nameserver 8.8.8.8
nameserver 114.114.114.114
options ndots:0
# Based on host file: '/etc/resolv.conf' (internal resolver)
# Overrides: [nameservers]
# Option ndots from: internal
四、jenkins的yaml文件
version : '3'
services:
jenkins:
user: root
restart: always
privileged: true
image: image.cloudlayer.icu/jenkins/jenkins:2.462.3-lts
container_name: jenkins-arm
ports:
- 8081:8080
- 50002:50000
environment:
TZ: 'Asia/Shanghai'
volumes:
- /home/jenkins-arm/jenkins_home:/var/jenkins_home/
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
- /home/jenkins-arm/apache-maven-3.9.9:/usr/local/maven/apache-maven-3.9.9
- /home/jenkins-arm/jdk8u422:/usr/local/java/jdk8u422
- /home/jenkins-arm/node-v16.20.2-linux-arm64:/usr/local/nodejs/node-v16.20.2-linux-arm64
- /etc/docker/daemon.json:/etc/docker/daemon.json
- /home/jenkins-arm/debian.sources:/etc/apt/sources.list.d/debian.sources
- /home/jenkins-arm/resolv.conf:/etc/resolv.conf
五、运行测试
可以正常运行,没有问题