主要更新: - 使用SSH私钥认证替代用户名密码认证 - 配置deploy-server-ssh-key凭据ID - 修复Jenkinsfile格式和缩进问题 - 添加SSH配置指南和企业级部署文档 技术改进: - 使用sshagent进行安全的SSH连接 - 移除sshpass依赖,提升安全性 - 统一使用root@116.62.163.84进行部署 - 优化Docker镜像传输和部署流程 新增文档: - SSH_CONFIG_GUIDE.md - SSH私钥配置指南 - ENTERPRISE_JENKINS_GUIDE.md - 企业级Jenkins部署 - jenkins-docker/ - Jenkins Docker化部署方案
103 lines
3.0 KiB
Docker
103 lines
3.0 KiB
Docker
# 基于官方Jenkins镜像
|
||
FROM jenkins/jenkins:2.426.1-lts
|
||
|
||
# 切换到root用户安装软件
|
||
USER root
|
||
|
||
# 设置时区
|
||
ENV TZ=Asia/Shanghai
|
||
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
||
|
||
# 更新包管理器并安装必要工具
|
||
RUN apt-get update && apt-get install -y \
|
||
openjdk-17-jdk \
|
||
maven \
|
||
curl \
|
||
wget \
|
||
git \
|
||
sshpass \
|
||
vim \
|
||
unzip \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
|
||
# 设置JDK环境变量
|
||
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
|
||
ENV PATH=$JAVA_HOME/bin:$PATH
|
||
|
||
# 配置Maven镜像加速(使用阿里云镜像)
|
||
RUN mkdir -p /root/.m2 && \
|
||
echo '<?xml version="1.0" encoding="UTF-8"?>' > /root/.m2/settings.xml && \
|
||
echo '<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"' >> /root/.m2/settings.xml && \
|
||
echo ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' >> /root/.m2/settings.xml && \
|
||
echo ' xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">' >> /root/.m2/settings.xml && \
|
||
echo ' <mirrors>' >> /root/.m2/settings.xml && \
|
||
echo ' <mirror>' >> /root/.m2/settings.xml && \
|
||
echo ' <id>aliyunmaven</id>' >> /root/.m2/settings.xml && \
|
||
echo ' <mirrorOf>*</mirrorOf>' >> /root/.m2/settings.xml && \
|
||
echo ' <name>阿里云公共仓库</name>' >> /root/.m2/settings.xml && \
|
||
echo ' <url>https://maven.aliyun.com/repository/public</url>' >> /root/.m2/settings.xml && \
|
||
echo ' </mirror>' >> /root/.m2/settings.xml && \
|
||
echo ' </mirrors>' >> /root/.m2/settings.xml && \
|
||
echo '</settings>' >> /root/.m2/settings.xml
|
||
|
||
# 验证Java和Maven安装
|
||
RUN java -version && mvn -version
|
||
|
||
# 安装Docker CLI(用于Docker in Docker)
|
||
RUN curl -fsSL https://get.docker.com -o get-docker.sh && \
|
||
sh get-docker.sh && \
|
||
rm get-docker.sh
|
||
|
||
# 将jenkins用户添加到docker组
|
||
RUN usermod -aG docker jenkins
|
||
|
||
# 创建jenkins用户的Maven配置
|
||
RUN mkdir -p /var/jenkins_home/.m2 && \
|
||
cp /root/.m2/settings.xml /var/jenkins_home/.m2/ && \
|
||
chown -R jenkins:jenkins /var/jenkins_home/.m2
|
||
|
||
# 切换回jenkins用户
|
||
USER jenkins
|
||
|
||
# 预安装核心插件(企业级CI/CD必备)
|
||
RUN jenkins-plugin-cli --plugins \
|
||
maven-integration-plugin \
|
||
jacoco \
|
||
sonar \
|
||
docker-workflow \
|
||
docker-plugin \
|
||
ssh-agent \
|
||
credentials-binding \
|
||
git \
|
||
github \
|
||
workflow-aggregator \
|
||
pipeline-stage-view \
|
||
blueocean \
|
||
build-timeout \
|
||
timestamper \
|
||
ws-cleanup \
|
||
ant \
|
||
gradle \
|
||
nodejs \
|
||
publish-over-ssh \
|
||
email-ext \
|
||
slack \
|
||
build-monitor-plugin \
|
||
role-strategy \
|
||
ldap \
|
||
matrix-auth \
|
||
configuration-as-code \
|
||
job-dsl
|
||
|
||
# 复制预配置文件
|
||
COPY jenkins-config/ /var/jenkins_home/
|
||
|
||
# 设置Jenkins启动选项
|
||
ENV JAVA_OPTS="-Djenkins.install.runSetupWizard=false -Xmx2048m -Duser.timezone=Asia/Shanghai"
|
||
ENV JENKINS_OPTS="--httpPort=8080"
|
||
|
||
# 设置Jenkins配置文件权限
|
||
USER root
|
||
RUN chown -R jenkins:jenkins /var/jenkins_home/
|
||
USER jenkins
|