Jenkins
unix 使用 sh
windows 使用 bat
- 将本地作为jenkins 作为jenkins 的agent
jenkins file
pipeline {
agent {
label '192.168.3.51' // ⚠️ 替换为你的本地 Agent 的 label
}
environment {
PROJECT_DIR = 'D:/wjn/work_info/docs' // ⚠️ 替换为你的本地项目路径
DEPLOY_DIR = '/usr/local/work_info' // ⚠️ 替换为你希望部署到的路径
}
stages {
stage('Checkout') {
steps {
// 如果使用本地代码,可省略这步;否则拉取仓库:
// git url: 'https://your-repo-url.git'
echo "Using local workspace at ${env.PROJECT_DIR}"
}
}
stage('Install Dependencies') {
steps {
dir("${env.PROJECT_DIR}") {
bat 'npm install'
}
}
}
stage('Build VuePress') {
steps {
dir("${env.PROJECT_DIR}") {
bat 'npm run docs:build'
}
}
}
stage('Deploy to Local Web Server') {
steps {
bat "scp -r ${env.PROJECT_DIR}/.vuepress/dist root@192.168.3.12:${env.DEPLOY_DIR}/"
}
}
}
post {
success {
echo "✅ Build and deployment successful."
}
failure {
echo "❌ Build or deployment failed."
}
}
}
使用参数
stage('Checkout') {
steps {
// 如果使用本地代码,可省略这步;否则拉取仓库:
// git url: 'https://your-repo-url.git'
echo "Using local workspace at ${env.PROJECT_DIR}"
echo "${params.Para}"
}
}
stage('Build module') {
steps {
echo "😊开始构建 ${params.MODULE_NAME}"
dir("${env.PROJECT_DIR}") {
bat "mvn clean install -T 1C \"-Dmaven.test.skip=true\" \"-Dmaven.compile.fork=true\" sz -pl ${params.MODULE_NAME}"
}
}
}

定义变量
添加 script块:因为使用了变量定义 def DEPLOY_MODULE_DIR,需要在 script块中
stage('upload to os') {
steps {
script {
def DEPLOY_MODULE_DIR = "${env.PROJECT_DIR}/${params.MODULE_NAME}"
echo "😊开始上传 ${DEPLOY_MODULE_DIR}/Dockerfile"
dir("${DEPLOY_MODULE_DIR}") {
bat "scp Dockerfile ubuntu@soft.shingi:/home/ubuntu/build/"
}
}
}
}
ssh卡住
多个bat 需要写到一起
stage('Deploy and Build Docker') {
steps {
script {
def DEPLOY_MODULE_DIR = "${env.PROJECT_DIR}/${params.MODULE_NAME}"
def DEPLOY_MODULE_ZIP = "${DEPLOY_MODULE_DIR}/target/${params.MODULE_NAME}-0.0.1-SNAPSHOT-1.0.zip"
// 1. 上传文件
echo "📤 上传文件到远程服务器..."
dir("${DEPLOY_MODULE_DIR}") {
bat "scp Dockerfile root@soft.shingi:/home/ubuntu/build/"
bat "scp target/${params.MODULE_NAME}-0.0.1-SNAPSHOT-1.0.zip root@soft.shingi:/home/ubuntu/build/target/"
bat "scp ${env.PROJECT_DIR}/compose.yml root@soft.shingi:/home/ubuntu/"
// 2. 远程构建 Docker
echo "🐳 远程构建 Docker 镜像..."
echo "ssh root@soft.shingi \"cd /home/ubuntu/build && docker build -t school-${params.MODULE_NAME}:1.0.0 .\" "
bat "ssh root@soft.shingi \"cd /home/ubuntu/build && docker build -t school-${params.MODULE_NAME}:1.0.0 .\" "
// 3. 停止旧容器(如果存在)
echo "🛑 停止旧容器..."
bat "ssh root@soft.shingi \"cd /home/ubuntu && docker-compose dwon school-${params.MODULE_NAME}"
// 4. 运行新容器
echo "🚀 启动新容器..."
bat "ssh root@soft.shingi \"cd /home/ubuntu && docker-compose up school-${params.MODULE_NAME} -d"
echo "✅ 部署完成!"
}
}
}
}
使用git中的jenkins
- 配置全局凭据 (推荐)
打开 Jenkins → Dashboard → Manage Jenkins → Credentials → System → Global credentials (unrestricted)。
点击 Add Credentials,选择合适的类型:
用户名 + 密码 / Token
Kind: Username with password
Username: Git 用户名(或 GitHub/GitLab 用户名)
Password: 密码或 Personal Access Token(推荐用 Token,不要用明文密码)
SSH 私钥
Kind: SSH Username with private key
Username: 随便填一个标识(如 git)
Private Key: 粘贴你本地生成的 id_rsa
如果 Jenkins 机器没有 key,可以 ssh-keygen -t rsa -b 4096 -C "xxx@xxx.com" 生成,然后把公钥加到 Git 仓库的部署 Key 或账户 SSH Key。
添加完成后,你会得到一个 credentialsId。
2、 在配置 Job(无论是 Pipeline from SCM 还是 Multibranch Pipeline)时:
在 Source Code Management → Git 配置里填入 Git 仓库地址。
在 Credentials 下拉框里选择刚才添加的凭据(credentialsId)。
如果用 Pipeline script from SCM,同样会出现 Credentials 选项。
这样 Jenkins 会自动用对应凭据拉取代码。