阅读量:2
Debian 上 Jenkins 脚本编写与落地指南
一 环境准备与安装脚本
- 在 Debian 上,Jenkins 脚本通常包含两部分:系统侧的安装初始化脚本与代码库中的 Jenkinsfile(Pipeline 定义)。
- 系统初始化脚本(示例 install_jenkins.sh):
#!/usr/bin/env bash
set -e
# 1) 安装 Java
sudo apt update
sudo apt install -y openjdk-11-jdk
# 2) 添加 Jenkins 官方仓库密钥与源
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
echo "deb https://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list >/dev/null
# 3) 安装并启动 Jenkins
sudo apt update
sudo apt install -y jenkins
sudo systemctl enable --now jenkins
# 4) 输出初始解锁信息
echo "Jenkins 已安装并启动,访问: http://$(hostname -I | awk '{print $1}'):8080"
echo "初始管理员密码: $(sudo cat /var/lib/jenkins/secrets/initialAdminPassword 2>/dev/null || echo '请检查服务状态')"
- 执行与验证:
- 赋权并运行:chmod +x install_jenkins.sh && ./install_jenkins.sh
- 查看状态:sudo systemctl status jenkins
- 首次访问:打开浏览器进入 http://服务器IP:8080,使用上述初始密码解锁并完成插件安装与管理员设置。
二 Pipeline 脚本 Jenkinsfile 编写
- 将 CI/CD 流程写入代码库根目录的 Jenkinsfile,便于版本化管理与审计。
- 示例一 通用 Java + Maven 项目
pipeline {
agent any
tools { maven 'Maven-3' } // 需在 Jenkins 全局工具配置中预先定义
stages {
stage('Checkout') {
steps { git branch: 'main', url: 'git@github.com:org/repo.git' }
}
stage('Build') {
steps { sh 'mvn -B -DskipTests clean package' }
}
stage('Test') {
steps { sh 'mvn test' }
post {
always { junit 'target/surefire-reports/*.xml' }
}
}
stage('Archive') {
steps { archiveArtifacts artifacts: 'target/*.jar', fingerprint: true }
}
}
post {
success { echo '构建成功' }
failure { echo '构建失败' }
}
}
- 示例二 Python 项目
pipeline {
agent any
stages {
stage('Checkout') {
steps { git branch: 'main', url: 'git@github.com:org/repo.git' }
}
stage('Install deps') {
steps { sh 'pip install -r requirements.txt' }
}
stage('Test') {
steps { sh 'pytest --junitxml=reports/results.xml' }
post { always { junit 'reports/results.xml' } }
}
stage('Build') {
steps { sh 'python setup.py sdist bdist_wheel' }
}
}
}
- 要点:
- 使用 agent any 或更明确的 docker/label 指定执行环境。
- 测试阶段建议产出 JUnit XML,便于在 Jenkins 中展示报表与趋势。
三 在 Jenkins 中接入脚本
- 创建任务:New Item → 选择 Pipeline → 命名并保存。
- 定义来源:
- Inline:在页面中直接粘贴上述 Jenkinsfile 内容(适合演示或快速验证)。
- SCM:选择 Git,填写仓库 URL 与凭据;在 Build Configuration 选择 “Pipeline script from SCM”,指定脚本路径(如 Jenkinsfile 或 ci/Jenkinsfile)。
- 触发器(可选):
- 轮询:在 “Build Triggers” 勾选 “Poll SCM”,如 H/5 * * * *(每 5 分钟检查一次变更)。
- Webhook:在代码托管平台配置 GitHub/GitLab Webhook,指向 Jenkins 的 /github-webhook/ 或 /gitlab-webhook/(需安装对应插件并启用 CSRF 保护例外)。
四 安全与网络配置要点
- 防火墙放行:Jenkins 默认端口为 8080,代理端口常用 50000(如使用代理节点)。
- UFW 示例:sudo ufw allow 8080/tcp;sudo ufw allow 50000/tcp;sudo ufw reload
- 凭据管理:在 Manage Jenkins → Credentials 中配置 SSH 私钥、用户名/密码、Secret 文本 等,并在 Pipeline 中使用 withCredentials 绑定,避免明文出现在脚本中。
- 通知与告警:可结合插件实现构建结果邮件或企业微信/钉钉通知;示例(需 Email Extension 插件):
post {
failure {
emailext (
subject: "构建失败: ${env.JOB_NAME} #${env.BUILD_NUMBER}",
body: """构建失败,请查看: ${env.BUILD_URL}""",
to: 'team@example.com'
)
}
}
- 安全加固建议:
- 限制 /var/lib/jenkins 目录权限,仅允许 jenkins 用户访问。
- 开启 CSRF 保护 与 代理兼容;对外仅暴露必要端口,必要时通过 Nginx/Apache 反向代理 配置 HTTPS 与访问控制。
以上就是关于“Debian Jenkins配置中脚本编写”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm