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文件管理环境变量

posted @ 2018-11-30 00:19  Anliven  阅读(649)  评论(0编辑  收藏  举报