docker pull jenkins/jenkins:lts
创建目录卷映射文件
mkdir -p /mydata/jenkins_home
添加权限
chown -R 1000 /mydata/jenkins_home/
启动
docker run -di --name=jenkins -p 8080:8080 -v /mydata//jenkins_home/:/var/jenkins_home jenkins/jenkins:lts
获取管理员密码
cat /mydata/jenkins_home/secrets/initialAdminPassword
生成密钥拉取gitlab代码
ssh-keygen -t rsa
一路回车,公私钥存放在/root/.ssh,将公钥添加到gitlab
jenkins上面添加ssh凭证,将私钥添加到jenkins
流水线Pipeline声明式编写
pipeline {
agent any
tools {
nodejs "node16"
}
stages {
stage('pull code') {
steps {
checkout scmGit(branches: [[name: '*/main']], extensions: [], userRemoteConfigs: [[credentialsId: 'c63b07c3-ef1f-4212-97f3-19e1d7bfa898', url: 'http://192.168.5.7/root/ren.git']])
}
}
stage('build') {
steps {
sh 'cd /var/jenkins_home/workspace'
sh 'node --version'
sh 'npm --registry https://registry.npm.taobao.org install express'
sh 'npm install'
sh 'npm run build'
}
}
stage('Deploy') {
steps {
// 部署到目标服务器
sshPublisher(publishers: [
sshPublisherDesc(configName: 'webServer', transfers: [
sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, remoteDirectory: 'nginx/html', remoteDirectorySDF: false, removePrefix: 'dist', sourceFiles: 'dist/**')
], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)
])
}
}
}
}
还可以根据gitlab的钩子触发流水线执行任务和配置一个要执行流水线任务的分支可以根据需要自己配置一下