Jenkinsfile文件
pipeline {
agent any
stages {
stage('检出') {
steps {
checkout([$class: 'GitSCM',
branches: [[name: GIT_BUILD_REF]],
userRemoteConfigs: [[
url: GIT_REPO_URL,
credentialsId: CREDENTIALS_ID
]]])
}
}
stage('安装依赖') {
steps {
sh 'go env -w GO111MODULE=on'
sh 'go env -w GOPROXY=https://goproxy.cn,direct'
sh 'go get -u github.com/jstemmer/go-junit-report'
}
}
stage('单元测试') {
post {
always {
junit '*.xml'
}
}
steps {
sh ' go test -v "./domain/user/." 2>&1 | go-junit-report > report.xml'
}
}
stage('构建镜像并推送到 CODING Docker 制品库') {
steps {
sh "docker build -t ${CODING_DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_VERSION} -f ${DOCKERFILE_PATH} ${DOCKER_BUILD_CONTEXT}"
useCustomStepPlugin(key: 'codingcorp:artifact_docker_push', version: 'latest', params: [image:"${CODING_DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_VERSION}",repo:"${DOCKER_REPO_NAME}"])
}
}
}
environment {
CODING_DOCKER_REG_HOST = "${CCI_CURRENT_TEAM}-docker.pkg.${CCI_CURRENT_DOMAIN}"
CODING_DOCKER_IMAGE_NAME = "${PROJECT_NAME.toLowerCase()}/${DOCKER_REPO_NAME}/${DOCKER_IMAGE_NAME}"
}
}
Jenkinsfile配置参数如下
DOCKERFILE_PATH=Dockerfile //Dockerfile 文件位置
DOCKER_IMAGE_NAM=crawlerspace //Dockerfile 文件位置
DOCKER_IMAGE_VERS=${GIT_LOCAL_BRANCH:-branch}-${GIT_COMMIT} //Docker 镜像版本
DOCKER_BUILD_CONT=. //Docker 构建目录
DOCKER_REPO_NAME=crawlerspace //当前项目下的 Docker 制品仓库名
一.检出代码
第一步我们首先从coding的代码仓库中检索出代码
二.安装依赖
安装单元测试生成报告工具
三.单元测试
我们执行go test -v "./domain/user/." 2>&1 | go-junit-report > report.xml 命令来生成单元测试报告信息。
四.单元测试
我们将代码打包成制品上传到codding上