CI - 使用Docker快速安装CI环境(Jenkins-GitLab-Sonar-Nexus3)
创建DevOps测试环境
- 使用 Docker 安装便于快速部署和测试
- 在生产环境应通过 RPM 包或者基于 Kubernetes 部署的方式,使数据库与容器分离
系统环境信息
# uname -a
Linux node100 5.14.0-427.31.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Aug 14 16:15:25 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
#
# cat /etc/system-release
Rocky Linux release 9.4 (Blue Onyx)
#
# java --version
openjdk 17.0.12 2024-07-16 LTS
OpenJDK Runtime Environment (Red_Hat-17.0.12.0.7-1) (build 17.0.12+7-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-17.0.12.0.7-1) (build 17.0.12+7-LTS, mixed mode, sharing)
#
# docker version
Client: Docker Engine - Community
Version: 27.2.1
API version: 1.47
Go version: go1.22.7
Git commit: 9e34c9b
Built: Fri Sep 6 12:09:42 2024
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 27.2.1
API version: 1.47 (minimum version 1.24)
Go version: go1.22.7
Git commit: 8b539b8
Built: Fri Sep 6 12:07:57 2024
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.7.22
GitCommit: 7f7fdf5fed64eb6a7caf99b3e12efcf9d60e311c
runc:
Version: 1.1.14
GitCommit: v1.1.14-0-g2c9f560
docker-init:
Version: 0.19.0
GitCommit: de40ad0
#
Jenkins
# 下载镜像
docker pull docker.m.daocloud.io/jenkins/jenkins:lts-jdk17
# 创建用于容器挂载的数据持久化目录
mkdir -p /opt/jenkins-docker
chmod 777 /opt/jenkins-docker
# 运行
docker run -itd --name jenkins \
-p 8080:8080 -p 50000:50000 \
--restart always \
-v /opt/jenkins-docker:/var/jenkins_home \
-v /etc/localtime:/etc/localtime \
-v /usr/bin/docker:/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock \
docker.m.daocloud.io/jenkins/jenkins:lts-jdk17
# 获取登录密码
docker logs -f jenkins
# 登录页面 http://localhost:8080
# 查看详细信息
docker inspect jenkins
GitLab
# 创建用于容器挂载的数据持久化目录
mkdir -p /data/devops/gitlab/{config,logs,data}
chmod +x -R /data/devops/gitlab/
# 下载并启动
docker run -itd --name gitlab \
-p 443:443 -p 80:80 -p 2222:22 \
--restart always \
--hostname 192.168.16.200 \
-v /data/devops/gitlab/config:/etc/gitlab \
-v /data/devops/gitlab/logs:/var/log/gitlab \
-v /data/devops/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce
# 查看容器日志
docker logs -f gitlab
# 获取root账号的密码
docker exec -i gitlab cat /etc/gitlab/initial_root_password
# 登录页面 http://主机IP:80
# 查看详细信息
docker inspect gitlab
SonarQube
# 创建用于容器挂载的数据持久化目录
mkdir -p /data/devops/sonarqube/{sonarqube_conf,sonarqube_extensions}
mkdir -p /data/devops/sonarqube/{sonarqube_logs,sonarqube_data}
chmod 777 -R /data/devops/sonarqube/
# 下载并启动
docker run -itd --name sonarqube \
-p 9000:9000 \
--restart always \
-v /data/devops/sonarqube/sonarqube_conf:/opt/sonarqube/conf \
-v /data/devops/sonarqube/sonarqube_extensions:/opt/sonarqube/extensions \
-v /data/devops/sonarqube/sonarqube_logs:/opt/sonarqube/logs \
-v /data/devops/sonarqube/sonarqube_data:/opt/sonarqube/data \
sonarqube:lts-community
# 登录页面 http://主机IP:9000 默认账号为admin, 密码为admin
# 查看详细信息
docker inspect sonarqube
Nexus3
# 创建用于容器挂载的数据持久化目录
mkdir -p /data/devops/nexus3/data
chmod 777 -R /data/devops/nexus3/
# 启动容器
docker run -itd --name nexus3 \
-p 8081:8081 \
--restart always \
-v /data/devops/nexus3/data:/nexus-data \
sonatype/nexus3
# 查看容器日志确认 Nexus3 状态
docker logs -f nexus3
# 获取默认admin账号的密码
docker exec -i nexus3 cat /nexus-data/admin.password
# 登录页面 http://主机IP:8081
# 查看详细信息
docker inspect nexus3
项目构建工具
安装配置Maven
# 解压
tar -xzvf apache-maven-3.9.9-bin.tar.gz -C /opt
ln -s /opt/apache-maven-3.9.9 /opt/maven
# 环境变量
echo "export M2_HOME=/opt/maven" >> /etc/profile
echo "export MAVEN_HOME=/opt/maven" >> /etc/profile
echo -e "export PATH=\${M2_HOME}/bin:\${PATH}" >> /etc/profile
source /etc/profile
# 确认版本
mvn --version
mvn --help
另一种创建环境变量文件方式
cat >> /etc/profile << \EOF
{
export M2_HOME=/opt/maven
export MAVEN_HOME=/opt/maven
export PATH=${M2_HOME}/bin:${PATH}
}
EOF
安装配置Gradle
# 解压
unzip -d /opt gradle-8.10.1-bin.zip
ln -s /opt/gradle-8.10.1 /opt/gradle
# 环境变量
cat >> /etc/profile << \EOF
{
export GRADLE_HOME=/opt/gradle
export PATH=${PATH}:${GRADLE_HOME}/bin
}
EOF
source /etc/profile
# 确认版本
gradle --version
gredle --help
安装配置NPM
# 解压
tar -Jxvf node-v20.17.0-linux-x64.tar.xz -C /opt
ln -s /opt/node-v20.17.0-linux-x64 /opt/node
# 环境变量
echo "export NODE_HOME=/opt/node" >> /etc/profile
echo -e "export PATH=\${NODE_HOME}/bin:\${PATH}" >> /etc/profile
source /etc/profile
# 确认版本
node --version
npm --version
# 设置和查看镜像源,根据需要使用一个即可
npm config set registry https://registry.npmmirror.com/
npm config set registry http://mirrors.cloud.tencent.com/npm/
npm config set registry https://mirrors.huaweicloud.com/repository/npm/
npm config get registry
# 根据需要安装前端JavaScript框架
npm install -g @vue/cli
vue --version
npm install -g @angular/cli
ng version
部署Harbor镜像仓库
一些说明
- Rocky Linux 通过使用
/etc/profile
和~/.bash_profile
文件管理环境变量
行动是绝望的解药!
欢迎转载和引用,但请在明显处保留原文链接和原作者信息!
本博客内容多为个人工作与学习的记录,少数内容来自于网络并略有修改,已尽力标明原文链接和转载说明。如有冒犯,即刻删除!
以所舍,求所得,有所获,方所成。