jenkins pipeline 制品相关步骤
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jenkins pipeline 制品相关步骤相关的知识,希望对你有一定的参考价值。
参考技术A 保存临时文件。stash步骤可以将一些文件保存起来,以便被同一次构建的其他步骤或阶段使用。如果整个pipeline的所有阶段在同一台机器上执行,则stash步骤是多余的。所以,通常需要stash的文件都是要跨Jenkins node使用的。
stash步骤会将文件存储在tar文件中,对于大文件的stash操作将会消耗Jenkins master的计算资源。Jenkins官方文档推荐,当文件大小为5∼100MB时,应该考虑使用其他替代方案。
stash步骤的参数列表如下:
取出之前stash的文件。
unstash步骤只有一个name参数,即stash时的唯一标识。通常stash与unstash步骤同时使用。以下是完整示例。
参考文章:
https://www.ssgeek.com/post/jenkinspipeline-yu-fa-gai-yao/#422-%E5%88%B6%E5%93%81%E7%9B%B8%E5%85%B3%E6%AD%A5%E9%AA%A4
Jenkins-pipeline的实现步骤
jenkins实现持续集成
- 搭建jenkins环境,安装插件
- 建立pipeline公用类库,文件夹vars,默认的
- 添加.groovy文件,可以由以下几个类库组成
- dockerImageBuild 负责构建项目镜像
- dockerImageDeploy 负责将镜像推到仓库
- dockerServiceStart 负责启动docker服务
- gitCheckout 负责迁出项目源码
- servicePipeline 程序入口
- 根据项目添加对应的.jenkinsfile文件
- jenkins里建立文件夹,选择公用类库的仓库,起个名字
- 在文件夹里建立新的Job,然后选择对象的jenkinsfile文件
- 项目构建完成
相关源代码分享
- gitCheckout源代码
def call(body) {
def config = [:]
body.resolveStrategy = Closure.DELEGATE_FIRST
body.delegate = config
body()
echo 'Checking out code from "' + config.repoUrl + '" with credentialsId "' + config.credentialsId + '" ...'
checkout([$class: 'GitSCM', branches: [[name: config.branches]],
doGenerateSubmoduleConfigurations: false,
extensions: [],
submoduleCfg: [],
userRemoteConfigs: [[credentialsId: config.credentialsId, url: config.repoUrl]]])
}
- servicePipeline.groovy源码
def call(body) {
def config = [:]
body.resolveStrategy = Closure.DELEGATE_FIRST
body.delegate = config
body()
pipeline {
agent { label 'build-server' }
stages {
stage('Initialization') {
steps {
script {
echo "项目初始化"
}
}
}
stage('CI') {
steps{
script{
gitCheckout{
repoUrl = config.repoUrl
credentialsId = config.credentialsId
branches = config.branches
commit = config.commit
}
}
}
}
stage('Service') {
echo "启动dockder服务"
}
}
}
}
- lind.jenkinsfile项目部署源码
@Library("lind-library") _
servicePipeline ( {
repoUrl = "[email protected]:bfyxzls/LindDotNetCore.git"
credentialsId = "012f0d4e-47e2-48ce-8b9e-cd399e9b3d61"
branches = "dev"
})
事实上,上面的构建只是一个基础版本,当你的构建有多种语言组成时,你需要为他们分别写一个入口,如dotnet,nodejs,java,php,==它们有自己的入口==,然后再servicePipeline里去分别处理,前开发人员输入语言类型,然后统一进行处理。
以上是关于jenkins pipeline 制品相关步骤的主要内容,如果未能解决你的问题,请参考以下文章
kubernetes 基于jenkins spinnaker的ci/cd实践一增加制品镜像扫描
kubernetes 基于jenkins spinnaker的ci/cd实践一增加制品镜像扫描
kubernetes 基于jenkins spinnaker的ci/cd实践一增加制品镜像扫描