//全篇沒用自定義變量
pipeline {
agent any
// 使用工具自動配置Node.js環境
tools {
nodejs 'nodejs22' ?// 需在Jenkins全局工具中預配置該名稱的Node.js安裝
}
//下面拉取代碼通過的是流水線片段生成的
stages {
stage('Checkout Code') {
steps {
git branch: 'release-v1.2.6',
credentialsId: 'gitc1', //全局憑證生成的
url: 'http://192.168.1.9/hhh/xxx-web.git'
}
}
stage('Inspect Workspace') {
steps {
script {
echo "=== 當前工作目錄信息 ==="
echo "工作空間路徑: ${env.WORKSPACE}"
// Linux/Unix 系統
sh '''
echo "---- 目錄結構 ----"
ls -la
echo "---- 磁盤空間 ----"
df -h .
echo "---- 內存信息 ----"
free -h
rm -rf dist
'''
/* Windows 系統使用(如需)
bat '''
echo ---- 目錄結構 ----
dir
echo ---- 磁盤空間 ----
wmic diskdrive get size
'''
*/
}
}
}
stage('編譯') {
steps {
script {
// 檢查Node.js環境
sh """
echo "===== Node.js版本 ====="
node -v
npm -v
pnpm -v
pnpm install
pnpm build:test
ll
"""
// 安裝依賴并構建
//withEnv(["HOME=${env.WORKSPACE}"]) { ?// 解決某些npm權限問題
// ? ?sh """
// ? ? ? ?npm config set registry ${env.NPM_REGISTRY}
// ? ? ? ?npm install --verbose
// ? ? ? ?npm run build
// ? ? ? ?
// ? ? ? ?echo "===== 構建產物 ====="
// ? ? ? ?ls -la dist/
// ? ?"""
}
}
}
stage('SSH 上傳') {
steps {
sshPublisher(
publishers: [
sshPublisherDesc(
configName: 'jh206測試',
transfers: [
sshTransfer(
sourceFiles: 'dist/**',
removePrefix: '',
remoteDirectory: "/www/wwwroot/lsom",
execCommand: """
# 修復權限問題
ls
# chown -R www-data:www-data ${env.REMOTE_DIR}
# find ${env.REMOTE_DIR} -type d -exec chmod 755 {} \\;
# find ${env.REMOTE_DIR} -type f -exec chmod 644 {} \\;
"""
)
],
verbose: true
)
]
)
}
}
}
}