步骤
- 拉取镜像并启动容器
- 安装插件
- 配置Git
- 配置Maven
- 配置jdk
- 全局工具配置
- 系统配置
- 创建流水线任务
拉取镜像并启动容器
# 拉取镜像
docker pull jenkins/jenkins
# 运行容器
docker run -d --name myjenkins -p 7512:8080 -v <宿主机目录路径>/jenkins:/var/jenkins_home jenkins/jenkins
# 有可能会遇到容器内时区与宿主机时区不致情况
# 在<宿主机目录路径>/Jenkins中创建app文件夹,用于存放JDK和Maven
# 此时需要进入容器修改时区
docker exec -it -u root myjenkins /bin/bash
# 查看当前时区
cat /etc/timezone
# 将时区设置为上海
echo Asia/Shanghai > /etc/timezone
# 再次查看当前时区
cat /etc/timezone
安装插件
- Git plugin
- Maven Integration plugin
- Publish Over SSH
配置Git
# 进入Jenkins容器
docker exec -it myjenkins /bin/bash
# 进入工作目录
cd /var/jenkins_home
# 配置git账号用户名(与登录的Git账号名一致)
git config --global user.name 'xxx'
# 生成密钥
ssh-keygen -t rsa
# 生成后密钥对会放在/var/jenkins_home/.ssh/中
# 将公钥添加到Gitlab
# 测试看能否成功拉取代码
git clone git@xxx.git
配置Maven
在Maven官网下载Maven并解压到 <宿主机目录路径>/Jenkins/app/ 中
配置JDK
在Oracle官网下载JDK并解压到 <宿主机目录路径>/Jenkins/app/ 中
全局工具配置
-
名称:myjdk8
-
JAVA_HOME:/var/jenkins_home/app/jdk1.8.0_411
-
名称:mymaven
-
MAVEN_HOME:/var/jenkins_home/app/apache-maven-3.9.6
全局配置
- SSH Servers
- Name:testserver
- Hostname:57.198.78.21
- Username:root
- Remote Directory:/
创建流水线任务
# 流水线脚本
pipeline {
agent any
tools {
jdk 'myjdk8'
maven 'mymaven'
}
stages {
stage('步骤1') {
steps {
git branch: 'master', url: 'git@xxx:xxx.git'
sh 'mvn -DskipTests clean install'
}
}
stage('步骤2') {
steps {
git branch: 'dev', url: 'git@xxx:xxx.git'
sh 'mvn -DskipTests clean package'
}
}
stage('步骤3') {
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: 'testserver', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'cd /home/api; docker stop myapi ; docker rm myapi ; docker rmi myapi; docker build -t myapi . ; docker run -d --name myapi -p 8081:8080 myapi', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/home/api', remoteDirectorySDF: false, removePrefix: 'target/', sourceFiles: 'target/xxx.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
echo '远程部署完成'
}
}
}
}