- 定义变量
environment {
APP_NAME="gateway"
ENV="dev"
CREDENTIALS_ID="k8s-dev"
NAMESPACE="default"
API_URL='https://10.10.10.10:6443'
}
2. try catch
- 忽略错误
stage( 'Preview' ) {
sh """
sed -i 's@IMAGE-TAG@$IMAGE-TAG@g' $APP_NAME/overlays/$ENV/kustomization.yaml
kubectl kustomize $APP_NAME/overlays/$ENV
"""
}
stage( 'deploy' ) {
try {
withKubeConfig(credentialsId: "$CREDENTIALS_ID", namespace: "$NAMESPACE", serverUrl: "$API_URL") {
sh "kubectl apply -k $APP_NAME/overlays/$ENV"
}
}
catch(ex){
echo ex.getMessage()
}
3. 凭据使用
3.1 密码管理
# 需要创建一个Username with password类型的凭据,使用如下:
JFROG_CREDS = credentials('pry-images')
# 调用JFROG_CREDS_USR表示用户名,JFROG_CREDS_PSW表示密码
${JFROG_CREDS_USR}
${JFROG_CREDS_PSW}
# 案例,登陆镜像仓库
docker login -u ${JFROG_CREDS_USR} -p ${JFROG_CREDS_PSW} https://www.xxx.com
3.2 代码仓库
# 创建Username with password类型的凭据
node{
stage("check out"){
git credentialsId: '3c210def-c000-4e2a-9b2d-838986a6b172', url: 'https://github.com/mrtylerzhou/gitShow.git'
}
}
3.3 k8s
官网
- 如上面try catch,具体连接k8s集群,如上面官网
withKubeConfig(credentialsId: "$CREDENTIALS_ID", namespace: "$NAMESPACE", serverUrl: "$API_URL")4. post
- 声明式流水线通过其post部分支持健壮的失败处理,允许声明多个不同的“post条件”。 例如: always, unstable, success, failure和changed
- always: 不管管道或stage的运行完成状态如何,在post部分运行这些步骤
- unstable: 如果当前管道或阶段的运行状态为“不稳定”状态,通常是由测试失败、代码违规等引起的,那么只在post中运行这些步骤
- success: 只有当当前管道或阶段的运行具有“成功”状态时,才运行post中的步骤
- failure: 只有在当前管道或阶段的运行有“失败”状态时才运行post中的步骤
- changed: 如果当前管道或阶段的运行与之前的运行有不同的完成状态,则只运行post中的步骤
pipeline {
agent any
stages {
stage('Test') {
steps {
sh 'make check'
}
}
}
post {
always {
junit '**/target/*.xml'
}
failure {
mail to: team@example.com, subject: 'The Pipeline failed :('
}
success {
echo 'is ok'
}
}
}
5. parameters
- 一个可选的参数列表,以提示提交者提供
- name: 参数名称
- defaultValue: 默认值
- description; 参数描述
pipeline {
agent any
parameters {
string( name: 'PERSON',
defaultValue: '',
description: '''
xxx
xxxx
'''
)
}
stages {
stage('Example') {
steps {
echo "Hello ${params.PERSON}"
}
}
6. jenkins拉不下代码
- Jenkins报错 ERROR: Error fetching remote repo 'origin', 凭据和认证信息也没有修改过,但还是拉不下代码,可以清理下Jenkins的工作空间



