pipeline {
agent any
tools {
//工具必须预先在jenkins中预配置
maven 'mvn'
jdk 'jdk'
}
stages {
stage('Env') { steps {
sh 'printenv'
}
}
stage('git') {
steps{
checkout([$class: 'GitSCM', branches: [[name: '*/develop']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '18980d0a-1ae4-443b17dc687b1', url: 'https://CFAI_the_best/codeflag-basis.git']]])
}
}
stage('mvn install') { steps { sh 'cd /var/lib/jenkins/workspace/k8s-test-basis/src/main/resources && mv application.test.properties application.properties' sh 'mvn clean install' } }
stage('docker') { steps { sh 'cd /var/lib/jenkins/workspace/k8s-test-basis/target '
sh '''
REPOSITORY=172.18.0.218/codeflagtest/codeflag-basis:${BUILD_ID}
pwd
echo '
FROM 172.18.0.218/codeflagtest/tomcat
RUN rm -rf /usr/local/tomcat/webapps/ROOT
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' >/etc/timezone
ADD target/basic-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/ROOT.war
' > Dockerfile
docker build -t $REPOSITORY .
docker login 172.18.0.218 -u admin -p Harbor123456
docker push $REPOSITORY '''
} }
stage('deploy') { steps {
sh ' REPOSITORY=172.18.0.218/codeflagtest/codeflag-basis:${BUILD_ID}'
sh 'kubectl get pod'
sh '''
cat << EOF > basis.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: basis
spec:
replicas: 2
selector:
matchLabels:
app: basis
template:
metadata:
labels:
app: basis
spec:
containers:
- name: basis
image: 172.18.0.218/codeflagtest/codeflag-basis:${BUILD_ID} imagePullPolicy: Always
ports:
- containerPort: 8080
volumeMounts:
- name: pvc-nas
mountPath: "/home/www/test"
volumes:
- name: pvc-nas
persistentVolumeClaim:
claimName: pvc-nas
imagePullSecrets:
- name: registry-secret ---
apiVersion: v1
kind: Service
metadata:
name: basis
spec:
ports:
- port: 80
targetPort: 8080
name: basis
selector:
app: basis
type: LoadBalancer
EOF kubectl apply -f basis.yaml ''' } }
} }

官方推荐样例:

官方推荐的语法:

官方例子:
Jenkinsfile (Declarative Pipeline)
pipeline {
agent any
options {
skipStagesAfterUnstable()
}
stages {
stage('Build') {
steps {
sh 'make'
}
}
stage('Test'){
steps {
sh 'make check'
junit 'reports/**/*.xml'
}
}
stage('Deploy') {
steps {
sh 'make publish'
}
}
}
}

jenkins自动化pipline的ci/cd流水线的更多相关文章

  1. 如何在 Jenkins CI/CD 流水线中保护密钥?

    CI/CD 流水线是 DevOps 团队软件交付过程的基本组成部分.该流水线利用自动化和持续监控来实现软件的无缝交付.通过持续自动化,确保 CI/CD 流水线每一步的安全性非常重要.在流水线的各个阶段 ...

  2. Docker: Jenkins与Docker的自动化CI/CD流水线实战

    什么是CI/CD 持续集成(Continuous Integration,CI):代码合并.构建.部署.测试都在一起,不断地执行这个过程,并对结果反馈.持续部署(Continuous Deployme ...

  3. Jenkins自动化CI CD流水线之1--介绍与安装

    第1章 大纲 CI/CD, DevOps介绍 Git安装与使用 Jenkins安装与使用 权限管理 参数化构建 Master-Slave 流水线(Pipeline) 邮件通知 应用案例 自动发布PHP ...

  4. Kubernetes+Jenkins+Nexus+Gitlab进行CI/CD集成

    前面已经完成了 二进制部署Kubernetes集群,下面进行CI/CD集成. 一.流程说明 应用构建和发布流程说明: 1.用户向Gitlab提交代码,代码中必须包含Dockerfile: 2.将代码提 ...

  5. Jenkins+GitLab+SonnarQube搭建CI/CD全流程

    1. CI/CD 1.1 CI - 持续集成 持续集成( Continuous integration , 简称 CI )指的是,频繁地(一天多次)将代码集成到主干.持续集成的目的就是让产品可以快速迭 ...

  6. .Net Core DevOps -免费用Azure四步实现自动化发布(CI/CD)

    前言 linux 大行其道的今天想必大家都已经拥抱 core 了吧,通常的方案都是 gitlab+jenkins+centos,但是这样的方案不适合我这种懒人,一直在寻求简单的解决方案,在寻求方案的过 ...

  7. Jenkins自动化CI&CD流水线

    1 环境说明 主机名称 IP cpu核数/内存/硬盘 安装软件 用途 controlnode 172.16.1.120 2/2/60 git 代码仓库 slavenode1 172.16.1.121 ...

  8. Jenkins自动化CI CD流水线之8--流水线自动化发布Java项目

    一.前提 插件:Maven Integration plugin 环境: maven.tomcat 用的博客系统代码: git clone https://github.com/b3log/solo. ...

  9. Jenkins自动化CI CD流水线之5--pipeline

    一.概览 二.安装 在对jenkins进行初始化安装时,默认已经安装了jenkins的相关插件,如下图所示: 三.实操 新建任务: 编写pipeline脚本: 我们可以借助流水线语法去做. test流 ...

随机推荐

  1. 【LeetCode】8. String to Integer (atoi) 字符串转换整数

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 公众号:负雪明烛 本文关键词:字符串转整数,atoi,题解,Leetcode, 力扣,P ...

  2. 【LeetCode】694. Number of Distinct Islands 解题报告 (C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 DFS 日期 题目地址:https://leetcod ...

  3. 【LeetCode】676. Implement Magic Dictionary 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典 汉明间距 日期 题目地址:https://le ...

  4. Spring Boot + MyBatis + MySQL 实现读写分离

    读写分离要做的事情就是对于一条SQL该选择哪个数据库去执行,至于谁来做选择数据库这件事儿,无非两个,要么中间件帮我们做,要么程序自己做. 读写分离有两种实现方式: 第一种是依靠中间件(比如:MyCat ...

  5. HMS Core电商与游戏行业解决方案,全流程赋能开发者创新

    2021年12月29日,"华为云&华为终端云服务创新峰会2022"在北京柏悦酒店成功举办.华为HMS Core电商与游戏行业解决方案亮相本次峰会的线下展区,为行业开发者们解 ...

  6. bat文件调用CMD命令快速显示ip

    代码如下: @echo off :main cls ipconfig @pause ipconfig 可改为其他CMD命令

  7. Oracle中的基本数据类型

    一.Oracle 基本数据类型 1.字符数据类型 CHAR:存储固定长度的字符串,如果没有指定长度,默认为1个字节,如果数据长度没有达到指定的长度,则通过填充空格的方式来使其达到定义的长度(CHAR类 ...

  8. FastStoneCapture屏幕截图软件

    1.简介 FastStone Capture(FSCapture)是经典的屏幕截图软件, 可以捕捉全屏图像.活动窗口.任意指定截图形状, 而且还有图像编辑和屏幕录制功能, 还能支持屏幕放大镜和屏幕取色 ...

  9. Zookeeper集群安装Version3.5.1

    Zookeeper集群安装,基于版本3.5.1, 使用zookeeper-3.5.1-alpha.tar.gz安装包. 1.安装规划 zookeeper集群模式,安装到如下三台机器 10.43.159 ...

  10. python自动化测试框架的unittest与pytest前后置条件的区别

    前言: 笔者先试有用过unittest的前后置条件和pytest的前后置条件,觉得pytest的前后置条件比unittest的要简洁.方便很多.不过在使用unittest的前后置条件时,已经觉得在和每 ...