first commit
This commit is contained in:
245
install_jenkins.sh
Normal file
245
install_jenkins.sh
Normal file
@@ -0,0 +1,245 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Jenkins 安装脚本(与 Gerrit 集成)
|
||||
# 支持 CentOS/RHEL 系统
|
||||
|
||||
set -e
|
||||
|
||||
# 颜色输出
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 配置变量
|
||||
JENKINS_PORT="${JENKINS_PORT:-8081}" # 避免与 Gerrit 8080 冲突
|
||||
GERRIT_HOST="${GERRIT_HOST:-101.43.95.130}"
|
||||
GERRIT_PORT="${GERRIT_PORT:-8080}"
|
||||
GERRIT_SSH_PORT="${GERRIT_SSH_PORT:-29418}"
|
||||
JENKINS_HOME="/opt/jenkins"
|
||||
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
echo -e "${GREEN}Jenkins 自动化安装脚本${NC}"
|
||||
echo -e "${GREEN}(与 Gerrit 集成)${NC}"
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
|
||||
# 检测系统类型
|
||||
detect_os() {
|
||||
if [ -f /etc/redhat-release ]; then
|
||||
OS="rhel"
|
||||
OS_VERSION=$(cat /etc/redhat-release | sed 's/.*release \([0-9]\+\).*/\1/')
|
||||
else
|
||||
echo -e "${RED}当前脚本仅支持 CentOS/RHEL${NC}"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "${YELLOW}检测到系统: ${OS} ${OS_VERSION}${NC}"
|
||||
}
|
||||
|
||||
# 检查 Java
|
||||
check_java() {
|
||||
echo -e "${GREEN}检查 Java 环境...${NC}"
|
||||
if ! command -v java &> /dev/null; then
|
||||
echo -e "${RED}未检测到 Java,请先安装 Java 17${NC}"
|
||||
echo -e "${YELLOW}运行: bash install_java17.sh${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
JAVA_VERSION=$(java -version 2>&1 | head -1 | cut -d'"' -f2 | sed '/^1\./s///' | cut -d'.' -f1)
|
||||
if [ "$JAVA_VERSION" -lt 11 ]; then
|
||||
echo -e "${RED}需要 Java 11 或更高版本,当前版本: $JAVA_VERSION${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -e "${GREEN}Java 版本: $(java -version 2>&1 | head -1)${NC}"
|
||||
}
|
||||
|
||||
# 安装 Jenkins
|
||||
install_jenkins() {
|
||||
echo -e "${GREEN}安装 Jenkins...${NC}"
|
||||
|
||||
# 添加 Jenkins 仓库
|
||||
sudo wget -O /etc/yum.repos.d/jenkins.repo \
|
||||
https://pkg.jenkins.io/redhat-stable/jenkins.repo
|
||||
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
|
||||
|
||||
# 安装 Jenkins
|
||||
sudo yum install -y jenkins
|
||||
|
||||
echo -e "${GREEN}Jenkins 安装完成${NC}"
|
||||
}
|
||||
|
||||
# 配置 Jenkins 端口
|
||||
configure_jenkins() {
|
||||
echo -e "${GREEN}配置 Jenkins 端口为 ${JENKINS_PORT}...${NC}"
|
||||
|
||||
# 修改 Jenkins 端口(避免与 Gerrit 冲突)
|
||||
sudo sed -i "s/JENKINS_PORT=.*/JENKINS_PORT=${JENKINS_PORT}/" /etc/sysconfig/jenkins
|
||||
|
||||
# 设置 Jenkins 用户
|
||||
sudo usermod -aG docker jenkins 2>/dev/null || true
|
||||
|
||||
echo -e "${GREEN}配置完成${NC}"
|
||||
}
|
||||
|
||||
# 启动 Jenkins
|
||||
start_jenkins() {
|
||||
echo -e "${GREEN}启动 Jenkins 服务...${NC}"
|
||||
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl start jenkins
|
||||
sudo systemctl enable jenkins
|
||||
|
||||
# 等待 Jenkins 启动
|
||||
echo -e "${YELLOW}等待 Jenkins 启动(约 30 秒)...${NC}"
|
||||
sleep 30
|
||||
|
||||
# 检查状态
|
||||
if sudo systemctl is-active --quiet jenkins; then
|
||||
echo -e "${GREEN}Jenkins 服务启动成功!${NC}"
|
||||
else
|
||||
echo -e "${RED}Jenkins 服务启动失败,请检查日志${NC}"
|
||||
echo -e "${YELLOW}查看日志: sudo journalctl -u jenkins -f${NC}"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 获取初始密码
|
||||
get_initial_password() {
|
||||
echo -e "${GREEN}获取 Jenkins 初始管理员密码...${NC}"
|
||||
|
||||
if [ -f /var/lib/jenkins/secrets/initialAdminPassword ]; then
|
||||
INITIAL_PASSWORD=$(sudo cat /var/lib/jenkins/secrets/initialAdminPassword)
|
||||
echo -e "${YELLOW}初始管理员密码: ${INITIAL_PASSWORD}${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}未找到初始密码文件,可能已初始化${NC}"
|
||||
fi
|
||||
}
|
||||
|
||||
# 安装 Gerrit Trigger 插件(通过 CLI)
|
||||
install_gerrit_plugin() {
|
||||
echo -e "${GREEN}准备安装 Gerrit Trigger 插件...${NC}"
|
||||
echo -e "${YELLOW}注意: 插件需要在 Jenkins Web 界面中安装${NC}"
|
||||
echo -e "${YELLOW}或使用以下命令(需要 Jenkins 已初始化):${NC}"
|
||||
echo -e "${YELLOW} java -jar /var/lib/jenkins/war/WEB-INF/jenkins-cli.jar -s http://localhost:${JENKINS_PORT} install-plugin gerrit-trigger${NC}"
|
||||
}
|
||||
|
||||
# 创建 Gerrit 集成配置示例
|
||||
create_gerrit_config_example() {
|
||||
echo -e "${GREEN}创建 Gerrit 集成配置示例...${NC}"
|
||||
|
||||
cat > /tmp/gerrit_integration_guide.txt << EOF
|
||||
========================================
|
||||
Gerrit 与 Jenkins 集成配置指南
|
||||
========================================
|
||||
|
||||
1. 访问 Jenkins Web 界面
|
||||
URL: http://${GERRIT_HOST}:${JENKINS_PORT}
|
||||
|
||||
2. 使用初始密码登录(见上方输出)
|
||||
|
||||
3. 安装 Gerrit Trigger 插件
|
||||
- 管理 Jenkins → 插件管理 → 可用插件
|
||||
- 搜索 "Gerrit Trigger"
|
||||
- 安装并重启 Jenkins
|
||||
|
||||
4. 配置 Gerrit Server
|
||||
- 管理 Jenkins → 系统配置 → Gerrit Trigger
|
||||
- 添加 Gerrit Server:
|
||||
* Name: Gerrit-Server
|
||||
* Frontend URL: http://${GERRIT_HOST}:${GERRIT_PORT}
|
||||
* SSH Port: ${GERRIT_SSH_PORT}
|
||||
* Username: admin(或您的 Gerrit 用户名)
|
||||
* SSH Keyfile: /var/lib/jenkins/.ssh/id_rsa
|
||||
|
||||
5. 配置 SSH 密钥
|
||||
- 确保 Jenkins 用户有访问 Gerrit 的 SSH 密钥
|
||||
- 将您的 SSH 私钥复制到: /var/lib/jenkins/.ssh/id_rsa
|
||||
- 设置权限: sudo chown jenkins:jenkins /var/lib/jenkins/.ssh/id_rsa
|
||||
- 设置权限: sudo chmod 600 /var/lib/jenkins/.ssh/id_rsa
|
||||
|
||||
6. 测试连接
|
||||
- 在 Gerrit Trigger 配置中点击 "Test Connection"
|
||||
- 如果成功,会显示 Gerrit 版本信息
|
||||
|
||||
7. 创建流水线任务
|
||||
- 新建任务 → 流水线
|
||||
- 在 Pipeline 脚本中配置 Gerrit Trigger
|
||||
|
||||
示例 Pipeline 脚本:
|
||||
pipeline {
|
||||
agent any
|
||||
triggers {
|
||||
gerrit(
|
||||
serverName: 'Gerrit-Server',
|
||||
events: [changeMerged(), patchsetCreated()],
|
||||
project: 'plain:.*',
|
||||
branch: 'plain:.*'
|
||||
)
|
||||
}
|
||||
stages {
|
||||
stage('构建') {
|
||||
steps {
|
||||
sh 'echo "开始构建..."'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
========================================
|
||||
EOF
|
||||
|
||||
echo -e "${GREEN}配置指南已保存到: /tmp/gerrit_integration_guide.txt${NC}"
|
||||
}
|
||||
|
||||
# 输出访问信息
|
||||
print_info() {
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
echo -e "${GREEN}Jenkins 安装完成!${NC}"
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
echo -e "${YELLOW}访问地址:${NC}"
|
||||
echo -e " Jenkins Web 界面: http://${GERRIT_HOST}:${JENKINS_PORT}"
|
||||
echo -e " Gerrit Web 界面: http://${GERRIT_HOST}:${GERRIT_PORT}"
|
||||
echo -e ""
|
||||
echo -e "${YELLOW}初始管理员密码:${NC}"
|
||||
if [ -f /var/lib/jenkins/secrets/initialAdminPassword ]; then
|
||||
INITIAL_PASSWORD=$(sudo cat /var/lib/jenkins/secrets/initialAdminPassword)
|
||||
echo -e " ${INITIAL_PASSWORD}"
|
||||
else
|
||||
echo -e " (未找到,可能已初始化)"
|
||||
fi
|
||||
echo -e ""
|
||||
echo -e "${YELLOW}常用命令:${NC}"
|
||||
echo -e " 启动: sudo systemctl start jenkins"
|
||||
echo -e " 停止: sudo systemctl stop jenkins"
|
||||
echo -e " 重启: sudo systemctl restart jenkins"
|
||||
echo -e " 状态: sudo systemctl status jenkins"
|
||||
echo -e " 日志: sudo journalctl -u jenkins -f"
|
||||
echo -e ""
|
||||
echo -e "${YELLOW}配置文件位置:${NC}"
|
||||
echo -e " Jenkins 配置: /var/lib/jenkins/config.xml"
|
||||
echo -e " Jenkins 端口: /etc/sysconfig/jenkins"
|
||||
echo -e ""
|
||||
echo -e "${YELLOW}下一步:${NC}"
|
||||
echo -e " 1. 访问 http://${GERRIT_HOST}:${JENKINS_PORT}"
|
||||
echo -e " 2. 使用初始密码登录"
|
||||
echo -e " 3. 安装 Gerrit Trigger 插件"
|
||||
echo -e " 4. 配置 Gerrit 连接"
|
||||
echo -e " 5. 查看配置指南: cat /tmp/gerrit_integration_guide.txt"
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
}
|
||||
|
||||
# 主函数
|
||||
main() {
|
||||
detect_os
|
||||
check_java
|
||||
install_jenkins
|
||||
configure_jenkins
|
||||
start_jenkins
|
||||
get_initial_password
|
||||
create_gerrit_config_example
|
||||
print_info
|
||||
}
|
||||
|
||||
# 执行主函数
|
||||
main
|
||||
|
||||
Reference in New Issue
Block a user