jenkins 流水线比较简单直观的
//全篇没用自定义变量
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
)
]
)
}
}
}
}