fix(jenkins): run pipeline shell steps with bash
This commit is contained in:
@@ -121,6 +121,7 @@ jenkins/Jenkinsfile.build-and-deploy
|
|||||||
4. `RUN_NPM_CI`:是否在构建前执行 `npm ci`。
|
4. `RUN_NPM_CI`:是否在构建前执行 `npm ci`。
|
||||||
|
|
||||||
如果当前 Jenkins 没有额外配置独立 Agent,而是直接在控制器自身执行任务,`AGENT_LABEL` 应填写 `built-in`。
|
如果当前 Jenkins 没有额外配置独立 Agent,而是直接在控制器自身执行任务,`AGENT_LABEL` 应填写 `built-in`。
|
||||||
|
如果目标 Ubuntu 的 Jenkins `sh` 默认实际落到 `/bin/sh -> dash`,而流水线脚本又使用了 `set -euo pipefail`,则必须显式通过 `bash -lc` 执行命令,不能直接依赖 Jenkins 默认 `sh` 解释器。
|
||||||
|
|
||||||
其中仅 `部署` 流水线还需要:
|
其中仅 `部署` 流水线还需要:
|
||||||
|
|
||||||
|
|||||||
@@ -33,14 +33,16 @@ pipeline {
|
|||||||
script {
|
script {
|
||||||
// 是否重装依赖交给流水线参数决定,避免每次构建都重复执行 npm ci。
|
// 是否重装依赖交给流水线参数决定,避免每次构建都重复执行 npm ci。
|
||||||
if (params.RUN_NPM_CI) {
|
if (params.RUN_NPM_CI) {
|
||||||
sh 'npm ci'
|
sh 'bash -lc "npm ci"'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sh """
|
sh """
|
||||||
set -euo pipefail
|
bash -lc '
|
||||||
npm run deploy:rust:remote -- --skip-upload --name "${env.EFFECTIVE_BUILD_VERSION}"
|
set -euo pipefail
|
||||||
test -d "build/${env.EFFECTIVE_BUILD_VERSION}"
|
npm run deploy:rust:remote -- --skip-upload --name "${env.EFFECTIVE_BUILD_VERSION}"
|
||||||
|
test -d "build/${env.EFFECTIVE_BUILD_VERSION}"
|
||||||
|
'
|
||||||
"""
|
"""
|
||||||
|
|
||||||
archiveArtifacts artifacts: "build/${env.EFFECTIVE_BUILD_VERSION}/**", fingerprint: true
|
archiveArtifacts artifacts: "build/${env.EFFECTIVE_BUILD_VERSION}/**", fingerprint: true
|
||||||
|
|||||||
@@ -37,14 +37,16 @@ pipeline {
|
|||||||
script {
|
script {
|
||||||
// 是否重装依赖交给流水线参数决定,避免每次构建都重复执行 npm ci。
|
// 是否重装依赖交给流水线参数决定,避免每次构建都重复执行 npm ci。
|
||||||
if (params.RUN_NPM_CI) {
|
if (params.RUN_NPM_CI) {
|
||||||
sh 'npm ci'
|
sh 'bash -lc "npm ci"'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sh """
|
sh """
|
||||||
set -euo pipefail
|
bash -lc '
|
||||||
npm run deploy:rust:remote -- --skip-upload --name "${env.EFFECTIVE_BUILD_VERSION}"
|
set -euo pipefail
|
||||||
test -d "build/${env.EFFECTIVE_BUILD_VERSION}"
|
npm run deploy:rust:remote -- --skip-upload --name "${env.EFFECTIVE_BUILD_VERSION}"
|
||||||
|
test -d "build/${env.EFFECTIVE_BUILD_VERSION}"
|
||||||
|
'
|
||||||
"""
|
"""
|
||||||
|
|
||||||
archiveArtifacts artifacts: "build/${env.EFFECTIVE_BUILD_VERSION}/**", fingerprint: true
|
archiveArtifacts artifacts: "build/${env.EFFECTIVE_BUILD_VERSION}/**", fingerprint: true
|
||||||
|
|||||||
@@ -64,13 +64,15 @@ pipeline {
|
|||||||
steps {
|
steps {
|
||||||
dir("${params.SOURCE_WORKSPACE_ROOT}") {
|
dir("${params.SOURCE_WORKSPACE_ROOT}") {
|
||||||
sh """
|
sh """
|
||||||
set -euo pipefail
|
bash -lc '
|
||||||
test -d "build/${params.BUILD_VERSION}"
|
set -euo pipefail
|
||||||
chmod +x scripts/jenkins-deploy-release.sh
|
test -d "build/${params.BUILD_VERSION}"
|
||||||
# 只部署上游已构建好的版本目录,避免部署阶段再次构建产生漂移。
|
chmod +x scripts/jenkins-deploy-release.sh
|
||||||
./scripts/jenkins-deploy-release.sh \
|
# 只部署上游已构建好的版本目录,避免部署阶段再次构建产生漂移。
|
||||||
--source-dir "build/${params.BUILD_VERSION}" \
|
./scripts/jenkins-deploy-release.sh \
|
||||||
--deploy-dir "${params.DEPLOY_DIRECTORY}"
|
--source-dir "build/${params.BUILD_VERSION}" \
|
||||||
|
--deploy-dir "${params.DEPLOY_DIRECTORY}"
|
||||||
|
'
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user