111 lines
4.3 KiB
Plaintext
111 lines
4.3 KiB
Plaintext
pipeline { // 直接上k8s,用k8s来管理docker
|
||
agent {
|
||
node {
|
||
label "nodejs"
|
||
}
|
||
}
|
||
parameters {
|
||
choice(
|
||
description: "你需要选择哪条分支进行构建?",
|
||
name: "branch_name",
|
||
choices: ["master", "feat/youlai_k8s_deploy"]
|
||
)
|
||
}
|
||
environment {
|
||
// 自建harbor仓库的namespace
|
||
docker_hub_namespace = "youlai"
|
||
// docker_hub_namespace = "youlaiwuhui"
|
||
|
||
web_app_name = "youlai-web-vue3"
|
||
|
||
// 自建镜像仓库地址
|
||
docker_hub = "k8s-harbor:30002"
|
||
// docker_hub = "https://registry.cn-hangzhou.aliyuncs.com"
|
||
|
||
// 在jenknis或kubesphere上面的凭证
|
||
docker_hub_id = "youlai-zhangjialin-myself-harbor-account"
|
||
// docker_hub_id = "zhangjialin-aliyun-pingzheng"
|
||
|
||
// k8s 上面的 namespace
|
||
k8s_namespace = "youlai-mall"
|
||
GIT_COMMIT_ID = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()
|
||
// BUILD_NUMBER 这个变量从jenkins传递过来
|
||
current_build_number = "${BUILD_NUMBER}"
|
||
// 在k8s上面配置的id
|
||
KUBECONFIG_CREDENTIAL_ID = "youlai-kubeconfig"
|
||
}
|
||
|
||
|
||
stages {
|
||
stage ("打印相关变量") {
|
||
steps{
|
||
echo "docker_hub_namespace信息为: ${docker_hub_namespace}"
|
||
// 获取commit信息,用于后面打tag
|
||
echo "commit信息为:${env.GIT_COMMIT_ID}"
|
||
echo "current_build_number信息为:${env.current_build_number}"
|
||
script {
|
||
// 本端tag名
|
||
env.local_tag = "frontend:${current_build_number}_${GIT_COMMIT_ID}"
|
||
// 远端tag名,必须以这种方式命令,才能push到远端
|
||
env.remote_tag = "${docker_hub}/${docker_hub_namespace}/${local_tag}"
|
||
echo "local_tag信息为:${env.local_tag}"
|
||
echo "remote_tag信息为:${env.remote_tag}"
|
||
}
|
||
}
|
||
}
|
||
stage("checkout代码") {
|
||
steps {
|
||
//git branch: "${branch_name}", credentialsId: 'zhangjialin-youlai-mall-pingzheng', url: 'https://gitee.com/youlaitech/youlai-mall.git'
|
||
|
||
//checkout([
|
||
//$class: 'GitSCM',
|
||
//branches: [[name: "${branch_name}"]],
|
||
//extensions: [[$class: 'CloneOption', depth: 1, noTags: false, reference: '', shallow: true]],
|
||
//userRemoteConfigs: [[credentialsId: 'zhangjialin-youlai-mall-pingzheng', url: 'https://gitee.com/youlaitech/youlai-mall.git']]])
|
||
sh "du -h --max-depth=1"
|
||
}
|
||
}
|
||
stage('构建') {
|
||
agent none
|
||
steps {
|
||
container('nodejs') {
|
||
script {
|
||
sh 'yarn config set registry https://registry.npm.taobao.org'
|
||
sh 'npm config set registry https://registry.npm.taobao.org'
|
||
sh 'ls -al $WORKSPACE/src/components/TreeSelect'
|
||
sh 'yarn install --force'
|
||
sh 'yarn build:prod'
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
stage('构建镜像') {
|
||
agent none
|
||
steps {
|
||
script {
|
||
container('nodejs') {
|
||
sh "pwd && ls -al"
|
||
sh "docker build -t ${env.local_tag} -f devops/Dockerfile ."
|
||
withCredentials([usernamePassword(credentialsId: "${docker_hub_id}",
|
||
passwordVariable: 'DOCKER_PASSWORD', usernameVariable: 'DOCKER_USERNAME')]) {
|
||
sh 'echo "$DOCKER_PASSWORD" | docker login http://k8s-harbor:30002 -u "$DOCKER_USERNAME" --password-stdin'
|
||
sh "docker tag ${env.local_tag} ${env.remote_tag}"
|
||
sh "docker push ${env.remote_tag}"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
stage("自动部署至k8s") {
|
||
agent none
|
||
steps {
|
||
container ("nodejs") {
|
||
// 这种方式启k8s是官方推荐的
|
||
sh 'envsubst < devops/deploy.yaml | kubectl apply -f -'
|
||
}
|
||
}
|
||
}
|
||
}
|
||
} |