jenkins做cicd
时间: 2025-02-08 07:03:17 浏览: 30
### 如何使用 Jenkins 实现 CI/CD 流水线
#### 安装与配置 Jenkins 环境
为了实现持续集成和持续交付 (CI/CD),首先需要安装并配置 Jenkins 环境。通过 Docker 来部署 Jenkins 是一种高效的方法,可以快速启动 Jenkins 并简化环境管理[^1]。
```bash
docker run -d -p 8080:8080 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts
```
这一步骤会拉取官方的 Jenkins LTS 版本镜像,并将其运行在一个容器内,同时映射端口和服务数据卷。
#### 初始设置 Jenkins
初次访问 Jenkins Web UI 后,需完成基础的安全性和插件配置:
- 解锁 Jenkins:输入初始管理员密码。
- 自定义安装推荐插件集。
- 创建第一个管理员账户。
这些操作可以通过浏览器界面中的提示逐步完成。
#### 构建 Maven 项目
对于基于 Java 的应用程序来说,通常采用 Apache Maven 进行依赖管理和构建过程自动化。在 Jenkins 中创建一个新的自由风格软件项目来处理 Maven 工程是一个常见做法[^2]。
进入 **Dashboard -> New Item** 页面选择 "Freestyle project" 或者 Pipeline 类型的任务模板;接着指定源码仓库地址以及分支信息,在 Build 触发器部分设定轮询 SCM 时间间隔或其他触发条件;最后添加执行 `mvn clean package` 命令作为主要编译动作之一。
#### 推送镜像至 Harbor 私有库
当应用被打包成功之后,下一步就是制作相应的 Docker 镜像并将它们推送到私有的 Harbor 注册表中去。此过程中涉及到编写合适的 Dockerfile 文件描述目标服务所需的操作系统环境及其组件版本等内容[^3]。
假设已经准备好了一个名为 my-jenkins-slave 的自定义 Slave 节点镜像,则推送命令如下所示:
```bash
[root@longxi-01 new]# docker tag my-jenkins-slave:v5 harbor.yuanlinux.com/library/my-jenkins-slave:v5
[root@longxi-01 new]# docker push harbor.yuanlinux.com/library/my-jenkins-slave:v5
```
上述指令先给本地镜像打标签以便于识别,再利用 `docker push` 将其上传到远程仓库。
#### 编写 Jenkinsfile 描述流水线逻辑
现代 DevOps 实践提倡声明式的管道脚本来表达整个开发周期内的各个阶段活动。可以在项目的根目录下放置一个叫做 Jenkinsfile 的文本文件用于记录具体的任务流程控制语句。
下面给出一段简单的 Groovy DSL 形式的例子展示如何串联起前面提到过的几个关键环节:
```groovy
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git 'https://github.com/user/repo.git'
}
}
stage('Build') {
steps {
sh 'mvn clean install'
}
}
stage('Test') {
parallel {
stage('Unit Tests') { ... }
stage('Integration Tests') { ... }
}
}
stage('Deploy Image') {
steps {
script {
withDockerRegistry([credentialsId: 'harbor', url: '']) {
sh '''
docker build -t ${IMAGE_NAME}:${BUILD_NUMBER} .
docker push ${IMAGE_NAME}:${BUILD_NUMBER}
'''
}
}
}
}
// 更多后续发布、通知等步骤...
}
post {
always {
junit '**/target/surefire-reports/*.xml'
archiveArtifacts artifacts: '**/target/*.jar,**/target/*.war', onlyIfSuccessful: true
}
}
}
```
这段代码片段展示了从检出源码、执行构建测试直至最终打包成 Docker 映像并向 Harbor 发布的一系列连续化作业安排。
阅读全文
相关推荐















