Jenkins是一款开源的CI/CD软件,用于各种任务的自动化执行,包括构建、测试、部署等,其流水线(Pipeline)是用户定义的一个CD流水线模型,流水线的代码定义了整个的构建过程,包括构建、测试和交付应用程序;流水线包括声明式流水线和脚本化流水线两种,而Pipeline属于声明式流水线

安装并配置Jenkins

Jenkins官方下载
自动化测试框架[Cypress持续集成之Jenkins]_经验分享
安装过程此处忽略,就是传统的方式

安装Blue Ocean插件

自动化测试框架[Cypress持续集成之Jenkins]_Cypress_02

安装Node.js插件

自动化测试框架[Cypress持续集成之Jenkins]_Cypress_03

安装Envlnject插件

自动化测试框架[Cypress持续集成之Jenkins]_配置Github_04

安装Github Integration插件

自动化测试框架[Cypress持续集成之Jenkins]_创建Pipeline_05

配置Github

自动化测试框架[Cypress持续集成之Jenkins]_配置Github_06
自动化测试框架[Cypress持续集成之Jenkins]_配置Jenkins_07
自动化测试框架[Cypress持续集成之Jenkins]_配置Jenkins_08

自动化测试框架[Cypress持续集成之Jenkins]_创建Pipeline_09
自动化测试框架[Cypress持续集成之Jenkins]_配置Github_10

配置Github

自动化测试框架[Cypress持续集成之Jenkins]_经验分享_11

自动化测试框架[Cypress持续集成之Jenkins]_配置Github_12

将Token复制下来,配置到Jenkins中,用于Jenkins中Github配置Credentials

自动化测试框架[Cypress持续集成之Jenkins]_配置Jenkins_13
自动化测试框架[Cypress持续集成之Jenkins]_创建Pipeline_14

Payload URl中填写Jenkins Server所在地址,格式为http://server ip:server port/github-webhook/

创建Jenkins Pipeline流水线

通过Jenkins页面创建流水线

自动化测试框架[Cypress持续集成之Jenkins]_配置Github_15
自动化测试框架[Cypress持续集成之Jenkins]_Cypress_16
自动化测试框架[Cypress持续集成之Jenkins]_创建Pipeline_17
自动化测试框架[Cypress持续集成之Jenkins]_创建Pipeline_18
自动化测试框架[Cypress持续集成之Jenkins]_创建Pipeline_19
自动化测试框架[Cypress持续集成之Jenkins]_配置Jenkins_20
自动化测试框架[Cypress持续集成之Jenkins]_Cypress_21

保存后,Pipeline会自动生成一个Jenkinsfile并开始运行,之后便可以在Jenkins中看到该流水线的触发和执行过程了

直接编写Jenkinsfile创建流水线

在项目的根目录下直接建立Jenkinsfile文件定义流水线各个步骤

//Jenkinsfile(声明式流水线)
pipeline{ //pipeline是声明式流水线的特定语法,它定义包含执行整个流水线的所有内容和指令
	agent any //agent是声明式流水线的特定语法,它指示Jenkins在节点上为整个流水线分配一个执行器和工作区
	stages{
		stage('Build'){ //stage是一个描述stage of this pipeline的语法块
			steps{ // steps是声明式流水线的一种特定语法,它描述了该stage中要运行的步骤
				sh 'make' //sh是一个执行给定命令的流水线step
			}
		}
		stage('Test'){
			steps{
				sh 'make check'
				junit 'reports/**/*.xml' //junit是另一个聚合测试报告的流水线step
			}
		}
		stage('Deploy'){
			steps{
				sh 'make publish'
			}
		}
		tools{
			Node.js 'Node.js 13'
		}
		environment{
			CHROME_BIN='/bin/google-chrome'
		}
	}
}

注意:Jenkinsfile中运行yarn命令是无效的,应该转成npm去执行