Jenkins在Ubuntu中如何实现自动化
导读:在 Ubuntu 上落地 Jenkins 自动化的关键步骤 一 环境准备与安装 安装 Java 11/17(Jenkins 2.361+ 建议使用 JDK 17): sudo apt update && sudo ap...
在 Ubuntu 上落地 Jenkins 自动化的关键步骤
一 环境准备与安装
- 安装 Java 11/17(Jenkins 2.361+ 建议使用 JDK 17):
- sudo apt update & & sudo apt install -y openjdk-17-jdk
- java -version
- 安装 Jenkins(APT 方式):
- curl -fsSL https://pkg.jenkins.io/debian/jenkins.io.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
- echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
- sudo apt update & & sudo apt install -y jenkins
- sudo systemctl start jenkins & & sudo systemctl enable jenkins
- 访问 http://< 服务器IP> :8080,完成解锁(查看初始密码)与插件安装。
- 可选:安装 Docker(用于镜像构建与部署)
- sudo apt-get update & & sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- sudo add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable”
- sudo apt-get update & & sudo apt-get install -y docker-ce docker-ce-cli containerd.io
- sudo systemctl start docker & & sudo systemctl enable docker
- sudo docker run --rm hello-world
二 创建自动化流水线
- 在 Jenkins 中新建任务,选择 Pipeline,在 “Pipeline” 配置里选择 Pipeline script from SCM,指定 Git 仓库与分支,脚本路径为 Jenkinsfile(置于项目根目录)。
- 示例 Jenkinsfile(声明式,Maven + Docker 场景): pipeline { agent any environment { IMAGE = “your-registry/your-app:${ env.BUILD_NUMBER} ” REGISTRY = “https://index.docker.io/v1/” } stages { stage(‘Checkout’) { steps { git branch: ‘main’, url: ‘git@github.com:your-org/your-app.git’ } } stage(‘Build’) { steps { sh ‘mvn -B -DskipTests clean package’ } } stage(‘Docker Build’) { steps { script { docker.build(IMAGE, “-f Dockerfile .”) } } } stage(‘Docker Push’) { steps { withCredentials([usernamePassword(credentialsId: ‘docker-hub-creds’, usernameVariable: ‘DOCKER_USER’, passwordVariable: ‘DOCKER_PASS’)]) { sh “echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin $REGISTRY” sh “docker push $IMAGE” } } } stage(‘Deploy’) { steps { sh ‘’’ docker rm -f app || true docker run -d --name app -p 8080:8080 $IMAGE ‘’’ } } } }
- 说明:
- 将 docker-hub-creds 替换为你的 Docker Hub/私有仓库凭证 ID。
- 生产环境建议使用 Kubernetes 或 docker-compose 替代裸 run,并加入健康检查与回滚策略。
三 触发与集成
- 代码变更自动触发:在 GitHub/GitLab 创建 Webhook,Payload URL 为 http://< JENKINS_URL> /github-webhook/(或 GitLab 等效路径),选择 Push events / Merge requests 等事件;Jenkins 任务需勾选 “GitHub hook trigger for GITScm polling”。
- 定时触发(夜间构建示例):在 “Build Triggers” 勾选 “Build periodically”,日程表达式填写 H 2 * * 1-5(工作日 02:00 左右执行)。
- 代码质量与安全:
- 集成 SonarQube(SonarScanner 步骤)、单元测试报告(JUnit XML)、代码覆盖率(Jacoco)。
- 关键阶段失败即阻断(如测试、镜像扫描),保障质量门禁。
四 安全与运维要点
- 访问与端口:
- 开放 8080(Web)与 50000(Agent 通信);如经 Apache/Nginx 反向代理,可对外仅暴露 80/443,并在代理层配置 HTTPS 与必要的头部转发。
- 凭据管理:
- 使用 Jenkins Credentials 存储 SSH 私钥、Docker 仓库账号、服务器 SSH Key 等,避免在脚本中明文存放。
- 权限与审计:
- 禁用匿名访问,按团队划分 Item 权限,启用 Audit Log 与必要的 CSRF 防护。
- 代理与镜像加速:
- 插件更新或下载依赖慢时,可在 “Manage Jenkins → Manage Plugins → Advanced” 配置 Update Site 为国内镜像(如清华源)以加速。
五 Docker 方式运行 Jenkins(可选)
- 适用于希望快速起步或做环境隔离的场景。
- 启动示例(挂载 Docker 套接字,容器可直接使用宿主机 Docker):
- mkdir -p /opt/jenkins_home & & chown -R 1000:1000 /opt/jenkins_home
- 使用 docker-compose.yml: version: ‘3.8’ services: jenkins: image: jenkins/jenkins:lts-jdk17 container_name: jenkins restart: always ports: - “8080:8080” - “50000:50000” volumes: - /opt/jenkins_home:/var/jenkins_home - /usr/bin/docker:/usr/bin/docker - /var/run/docker.sock:/var/run/docker.sock environment: - JAVA_OPTS=-Djenkins.install.runSetupWizard=false
- 首次登录密码:docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
- 注意:挂载 /var/run/docker.sock 带来高权限,务必配合严格的访问控制与最小权限原则。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Jenkins在Ubuntu中如何实现自动化
本文地址: https://pptw.com/jishu/789278.html
