11-DevOps-Jenkins Pipeline流水线作业

前面已经完成了,通过在Jenkins中创建自由风格的工程,在界面上的配置,完成了发布、构建的过程。

这种方式的缺点就是如果要在另一台机器上进行同样的配置,需要一项一项去填写,不方便迁移,操作比较麻烦。

解决这个问题,就要用到纯脚本方式的操作,即pipline流水线。

新建pipline工程

如果没有找到这个选项,则需要在Jenkins中安装pipline的插件。

配置pipline作业

配置参数化构建过程

勾选上添加参数,为了动态获取到GitLab中的tag版本。

生成模板脚本

在pipline脚本的地方,选择hello world,生成一个简单的脚本模板。

每一个stage代码块,就是一个操作步骤。

下面就是配置不同的操作步骤,当前,Jenkins提供了脚本生成工具,可以通过先在页面填写好配置参数(与自由风格相同的操作方式),然后点击生成脚本,就可以获取到当前步骤执行的脚本。

利用工具生成每个步骤脚本

具体操作方式如下:

在配置界面,找到流水线语法。

1.从GitLab中拉取代码

点击生成流水线脚本,下面就是生成的脚本。 

拷贝脚本放到pipline脚本文本框中。

下面的每一步都是这样操作,获取到每一步要执行的脚本。

2.程序打包

3.上传文件到Harbor所在服务器并完成镜像构建

4.目标服务器完成容器生成

通过上面一步步操作,最终生成的完整脚本如下:

pipeline {
    agent any

    stages {
        stage('Pull SourceCode') {
            steps {
                checkout scmGit(branches: [[name: '$tag']], extensions: [], userRemoteConfigs: [[url: 'http://192.168.1.10:83/root/myproject-ci']])
            }
        }
        stage('Maven Build') {
            steps {
                sh 'sh /usr/local/maven/bin/mvn package'
            }
        }
        stage('Publish Harbor Image') {
            steps {
                sshPublisher(publishers: [sshPublisherDesc(configName: 'Harbor-192.168.1.12', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: 'target', sourceFiles: 'target/*.jar'), sshTransfer(cleanRemote: false, excludes: '', execCommand: '''docker build -t 192.168.1.12:85/public/myproject:$tag /usr/local/
docker login -u admin -p Harbor12345 192.168.1.12:85
docker push 192.168.1.12:85/public/myproject:$tag''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: 'docker', sourceFiles: 'docker/*')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }
        }
         stage('Run Container') {
            steps {
                sshPublisher(publishers: [sshPublisherDesc(configName: 'Target-192.168.1.11', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''docker rm -f myproject
docker run -d -p 81:81 --name=myproject 192.168.1.12:85/public/myproject:$tag''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }
        }
    }
}

构建

选择一个需要的tag版本,点击构建。(注意:如果这里没有出现tag的版本号,也点击构建,构建成功后,第二次再构建就能看到版本号)

在状态栏,可以看到每个执行阶段的耗时情况。(需要安装插件:pipeline Stage View)

鼠标放上去,可以直接看日志。 

访问应用程序

http://192.168.1.11:81/

 到此,完成了使用pipline流水线作业的方式完成Jenkins的构建。

在 Kubernetes 环境中配置 Jenkins 实现 DevOps 自动化部署,主要涉及 Jenkins 的安装、与 Kubernetes 的集成、以及构建自动化流水线。以下是详细的配置步骤: ### 安装 Jenkins 1. **使用 Helm 安装 Jenkins** Jenkins 可以通过 Helm Chart 快速部署到 Kubernetes 集群中。Helm 是 Kubernetes 的包管理工具,可以简化 Jenkins 的安装和配置过程。 使用以下命令安装 Jenkins Helm Chart: ```bash helm repo add jenkins https://charts.jenkins.io helm repo update helm install jenkins jenkins/jenkins ``` 2. **持久化存储配置** Jenkins 需要持久化其配置和构建数据,因此建议在安装时配置持久卷(Persistent Volume)和持久卷声明(Persistent Volume Claim),以防止数据丢失。 3. **访问 Jenkins UI** 安装完成后,可以通过 Service 或 Ingress 暴露 Jenkins 的 Web 界面。如果集群中已部署了 Ingress 控制器(如 ingress-nginx),可以使用 Ingress 配置访问路径[^5]。 ### 配置 Jenkins 与 Kubernetes 集成 1. **安装 Kubernetes 插件** 在 Jenkins UI 中,进入“Manage Jenkins” > “Plugins” > “Available”,搜索并安装 `Kubernetes plugin`。该插件允许 Jenkins 在 Kubernetes 集群中动态创建 Jenkins Agent(即构建节点)[^2]。 2. **配置 Kubernetes 云环境** 在 Jenkins 的“Manage Jenkins” > “Nodes and Clouds”中添加 Kubernetes 云配置。需要提供 Kubernetes 集群的 API 地址、凭证(如 kubeconfig 文件)、以及 Jenkins Agent 的镜像等信息。 3. **配置 Jenkins Agent Pod 模板** 为 Jenkins Agent 定义 Pod 模板,指定所需的容器镜像(如带有 `kubectl` 和 `docker` 的自定义镜像)、卷挂载(如 `/var/run/docker.sock`)等。确保 Jenkins 用户有权限访问 Docker 套接字文件,并将 Jenkins 用户加入相应的用户组(如 `docker` 或 `daemon` 组)[^4]。 ### 构建 DevOps 自动化流水线 1. **创建 Jenkins Pipeline** 创建一个新的 Pipeline 项目,并在 `Jenkinsfile` 中定义构建、测试、部署等阶段。例如: ```groovy pipeline { agent { kubernetes { label 'my-agent' defaultContainer 'jnlp' yaml """ apiVersion: v1 kind: Pod metadata: labels: app: jenkins-agent spec: containers: - name: jnlp image: jenkins/inbound-agent:latest - name: docker image: docker:latest volumeMounts: - name: docker-socket mountPath: /var/run/docker.sock volumes: - name: docker-socket hostPath: path: /var/run/docker.sock """ } } stages { stage('Build') { steps { sh 'echo Building...' } } stage('Deploy') { steps { sh 'kubectl apply -f deployment.yaml' } } } } ``` 2. **使用 Kubernetes 命令部署应用** 在 Pipeline 的部署阶段,可以使用 `kubectl` 命令将应用部署到 Kubernetes 集群中。通常使用 `deployment.yaml` 文件定义应用的部署规范[^2]。 3. **自动化测试与回滚机制** 可以在 Pipeline 中集成自动化测试脚本,确保每次提交的代码都经过验证。若测试失败,可配置自动回滚策略,恢复到上一个稳定版本。 ### 验证与调试 - **查看 Jenkins Agent 状态**:确保 Jenkins Agent Pod 正常运行,并且能够访问 Kubernetes API。 - **日志分析**:通过 Jenkins 的构建日志分析部署过程中的问题。 - **权限问题排查**:若遇到权限问题,检查 Jenkins 用户是否加入正确的用户组,并确认 Docker 套接字文件的权限设置[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值