pipeline {
agent any #此处设置为any
stages {
stage('检出') {
steps{
checkout([
$class: 'GitSCM',
branches: [[name: env.GIT_BUILD_REF]],
userRemoteConfigs: [[
url: env.GIT_REPO_URL,
credentialsId: env.CREDENTIALS_ID
]]
])
}
}
stage('编译并上传package') {
agent {
docker {
reuseNode true #是否使用根节点
#使用coding官方镜像编译
registryUrl 'https://coding-public-docker.pkg.coding.net'
image 'public/docker/python:3.8'
}
}
steps {
echo '安装依赖项中...'
sh 'pip install -r requirements.txt'
}
echo '依赖项安装完成.'
echo '编译 python'
sh 'python setup.py bdist_wheel' #打包项目
echo '编译完成'
#配置凭据
withCredentials([usernamePassword(
credentialsId: env.CODING_ARTIFACTS_CREDENTIALS_ID,
usernameVariable: 'TWINE_USERNAME',
passwordVariable: 'TWINE_PASSWORD'
)]) {
sh 'twine upload --repository-url **** #上传到指定仓库
}
echo 'wheel 制品上传完成'
}
}
stage('构建镜像并推送到 CODING Docker 制品库') {
steps {
script {
#配置凭据
withCredentials([
usernamePassword(credentialsId:env.CODING_ARTIFACTS_CREDENTIALS_ID,usernameVariable:'CODING_USER_NAME',passwordVariable:'CODING_PASSWORD')
]) {
docker.withRegistry(
"${CODING_DOCKER_REG_HOST}",
"${CODING_ARTIFACTS_CREDENTIALS_ID}"
) {
def version = "${GIT_LOCAL_BRANCH}" ? "${GIT_LOCAL_BRANCH}-${GIT_COMMIT_SHORT}" : "${GIT_TAG}-${GIT_COMMIT_SHORT}"
def image = docker.build("${CODING_DOCKER_IMAGE_NAME}:${version3_8}", "--build-arg CODING_USER_NAME=${CODING_USER_NAME} --build-arg CODING_PASSWORD=${CODING_PASSWORD} -f ./deploy/dockerfile .")#构建镜像时使用 -f 指定dockerfile,默认为当前项目根目录下的dockerfile文件
image.push()
}
}
}
}
}
}
environment {
#设置环境变量
CODING_DOCKER_REG_HOST = *** #coding host
CODING_DOCKER_IMAGE_NAME = *** #制品库名称
}
}