Jenkins如何自动化Ubuntu任务
导读:在 Ubuntu 上使用 Jenkins 实现自动化任务 一 环境准备与安装 安装 Java 11/17(Jenkins 运行依赖): sudo apt update && sudo apt install -y ope...
在 Ubuntu 上使用 Jenkins 实现自动化任务
一 环境准备与安装
- 安装 Java 11/17(Jenkins 运行依赖):
- sudo apt update & & sudo apt install -y openjdk-11-jdk 或 openjdk-17-jdk
- java -version 验证
- 安装 Jenkins(APT 方式,LTS 仓库):
- wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
- sudo sh -c ‘echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list’
- sudo apt update & & sudo apt install -y jenkins
- 启动与开机自启:
- sudo systemctl start jenkins & & sudo systemctl enable jenkins
- 访问与初始化:
- 浏览器打开 http://< 服务器IP> :8080
- 初始管理员密码:sudo cat /var/lib/jenkins/secrets/initialAdminPassword
- 按向导完成安装,建议先安装推荐插件(如 Git、Pipeline)
二 创建自动化任务
- 方式一 Freestyle 项目(适合简单任务)
- 新建任务 → 选择 Freestyle project
- 源码管理:选择 Git,填写仓库 URL 与凭据
- 构建触发器:可选 轮询 SCM(如 H/5 * * * * 每5分钟)或 GitHub/GitLab Webhook
- 构建步骤:Add build step → Execute shell,填入构建命令(如 mvn/测试/打包)
- 构建后操作:可发布测试报告、归档产物、发送通知等
- 方式二 Pipeline 项目(推荐,可版本化管理流程)
- 新建任务 → 选择 Pipeline
- 定义方式:选择 Pipeline script from SCM,指定仓库与 Jenkinsfile 路径
- 在代码库根目录放置 Jenkinsfile,用 Groovy 定义 stages/steps,便于团队协作与审计
三 触发器与 Webhook 配置
- 代码提交即触发(GitHub 示例)
- Jenkins 任务启用 GitHub hook trigger for GITScm polling
- GitHub 仓库 → Settings → Webhooks → Add webhook
- Payload URL: http://< JENKINS_URL> /github-webhook/
- Content type: application/json
- Events: 选择 Push events(可按需选择)
- 定时触发(SCM 轮询)
- 在 Freestyle 的“构建触发器”填入 **H/5 * * * ***(示例为每5分钟检查一次变更)
- GitLab 类似:在任务中选择 GitLab webhook,并在 GitLab 项目设置中配置 Webhook 指向 Jenkins
四 常见任务示例
- 示例一 构建与测试(Maven)
- Jenkinsfile
- pipeline { agent any tools { maven ‘Maven-3’ jdk ‘JDK-11’ } // 需在“全局工具配置”预先配置 stages { stage(‘Checkout’) { steps { git url: ‘git@github.com:org/repo.git’, branch: ‘main’ } } stage(‘Build’) { steps { sh ‘mvn -B -DskipTests clean package’ } } stage(‘Test’) { steps { sh ‘mvn test’ } } stage(‘Archive’) { steps { archiveArtifacts artifacts: ‘target/*.jar’, fingerprint: true } } } }
- Jenkinsfile
- 示例二 Docker 构建与运行(同一台 Ubuntu 主机)
- 赋予 Jenkins 使用 Docker 的权限:sudo usermod -aG docker jenkins & & sudo systemctl restart jenkins
- Jenkinsfile(片段)
- stage(‘Docker Build & Run’) { steps { sh ‘docker build -t demo-app:${ env.BUILD_ID} .’ sh ‘docker stop myapp || true’ sh ‘docker rm myapp || true’ sh “docker run -d --name myapp -p 8080:8080 demo-app:${ env.BUILD_ID} ” } }
- 示例三 通过 SSH 发布到远程服务器
- 安装并配置插件:Publish Over SSH
- Jenkins 系统配置中添加 SSH Server(名称、Host、凭证等)
- Jenkinsfile(片段)
- stage(‘Deploy via SSH’) { steps { sshPublisher( publishers: [ sshPublisherDesc( configName: ‘prod-server’, transfers: [ sshTransfer( sourceFiles: ‘target/*.jar’, removePrefix: ‘target’, remoteDirectory: ‘/opt/app’ ) ] ) ] ) } }
五 权限与安全加固
- 运行用户与权限
- 避免以 root 运行 Jenkins;如用到 Docker,务必将 jenkins 用户加入 docker 组并重启服务
- 凭据管理
- 使用 Jenkins 凭据 管理 SSH 私钥、Git 凭据、镜像仓库账号,避免明文写在脚本中
- 网络安全
- 仅开放必要端口(如 8080);生产环境建议前置 Nginx/Apache + HTTPS/反向代理,并限制来源 IP
- 防火墙
- 如使用 UFW:sudo ufw allow 8080;如需公网访问,务必配合安全组/防火墙策略
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Jenkins如何自动化Ubuntu任务
本文地址: https://pptw.com/jishu/759765.html
