jenkins job 触发部署
将 Jenkins 设置为 Spinnaker 中的持续集成 (CI) 系统可让您使用 Jenkins 触发管道、向管道添加 Jenkins 阶段或向管道添加脚本阶段。
前置要求:
启用 jenkins触发器
官方文档:https://spinnaker.io/docs/setup/other_config/ci/jenkins/
通过halyard修改spinnaker配置,启用jenkins
hal config ci jenkins enable
hal config ci jenkins master add my-jenkins-master-01
--address http://192.168.72.42:8080
--username admin
--password jenkins
hal config ci jenkins master edit my-jenkins-master-01 --csrf true
hal deploy apply
启用 http Artifact
hal config artifact http enable
使用 Jenkins 基本 URL 和有权访问构建工件的凭证为 Jenkins 创建 HTTP 文件工件帐户,用于通过http方式从 jenkins 下载构建物。
hal config artifact http account add my-http-artifact-account
--username admin
--password jenkins
hal deploy apply
创建jenkins流水线
本示例中的jenkins实例在ubuntu上以apt install方式进行部署。
Jenkins 能够将构建中的文件保存为构建工件。这些对象可以是已编译的二进制文件或 kubernetes 清单或作为构建过程的一部分创建的任何其他工件。
最佳实践表明,这些工件应上传到专用工件存储库,例如 GCR、DockerHub、Artifactory、Maven 等,但有时将工件存储为构建输出的一部分会更容易。
以下是一个完整的存储工件的 Jenkins 管道示例,为了简化流程,直接创建dist目录和yaml文件:
pipeline{
agent any
stages {
stage('Generate Kubernetes Manifests') {
steps {
sh '''
#npm install
#npm run import
#npm run build
echo "BUILD=${BUILD_NUMBER}" > build.properties
rm -rf dist && mkdir -p dist
cat >dist/nginx-demo.yaml<<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx-app
name: nginx-app
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: nginx-app
template:
metadata:
labels:
app: nginx-app
spec:
containers:
- image: docker.io/library/nginx:latest
name: nginx-app
ports:
- containerPort: 80
EOF
'''
}
}
}
post {
always {
archiveArtifacts artifacts: 'dist/*.yaml', fingerprint: true
archiveArtifacts artifacts: 'build.properties', fingerprint: true
}
}
}
该行echo "BUILD=${BUILD_NUMBER}" > build.properties
向 build.properties 添加了一个内部版本号字段,稍后可使用该字段生成用于使用 HTTP 下载工件的 URL。
配置spinnaker 触发器
官方文档:https://spinnaker.io/docs/guides/user/pipeline/triggers/jenkins/
创建PIPELINE
访问spinnaker,新建APPLICATION,点击PIPELINES,创建管道。
在新管道的配置阶段,添加触发器。从类型菜单中选择Jenkins,配置示例如下。
从Master下拉菜单中选择 Jenkins master ,然后从Job下拉菜单中选择一个作业。
如果需要,添加属性文件,build.properties 工件应该像上面这样添加到 Jenkins 触发器中。
点击Add stage,Type选择Deploy(Manifest),并配置k8s账号信息。
在最后部分,要将 Jenkins 构建工件添加为 Spinnaker 工件,请执行以下操作。
在jenkins中右键单击上面构建输出中显示的构建工件。这将为您提供构建工件的完整 URL – 类似这样
http://192.168.72.42:8080/job/nginx-demo/1/artifact/dist/nginx-demo.yaml
使用以下变量将新的 HTTP 文件工件添加到管道,将内部版本号替换为属性中的 BUILD 字段 -${trigger.properties[‘BUILD’]}如下所示
http://192.168.72.42:8080/job/nginx-demo/${trigger.properties['BUILD']}/artifact/dist/nginx-demo.yaml
测试jenkins job触发部署
连接到kubernetes确认部署的pods
root@node40:~# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-app-8494986646-57ssz 1/1 Running 0 17m
原文地址:https://blog.csdn.net/networken/article/details/134734083
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_24196.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!