首页主机资讯Jenkins在Ubuntu中如何实现自动化

Jenkins在Ubuntu中如何实现自动化

时间2026-01-22 00:08:03发布访客分类主机资讯浏览795
导读:在 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。
    • 生产环境建议使用 Kubernetesdocker-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
Ubuntu上Jenkins如何进行权限管理 ubuntu spool是什么文件

游客 回复需填写必要信息