11-Jenkins
2021-12-13 本文已影响0人
紫荆秋雪_文
一、Jenkins安装
docker run \
-u root \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins-data:/var/jenkins_home \
-v /etc/localtime:/etc/localtime:ro \
-v /var/run/docker.sock:/var/run/docker.sock \
--restart=always \
jenkinsci/blueocean
- 在run的时候设置时区
-v /etc/localtime:/etc/localtime:ro \
- jenkinsci/jenkins 是没有 blueocean插件的,得自己装
- jenkinsci/blueocean:带了blueocean插件的
- /var/run/docker.sock 表示 Docker 守护程序通过其监听的基于 Unix 的套接字。该映射允许 jenkinsci/blueocean 容器与Docker守护进程通信,如果jenkinsci/blueocean容器需要实例化其他 Docker 容器,则该守护进程时必需的。如果运行声明式管道,其语法包含agent部分用docker
二、启动Jenkins
image.png通过 ip+端口 方式用浏览器访问Jenkins
- 默认密码
- 通过Jenkins挂载目录
docker inspect 容器ID
- 再通过图片提示显示进入secrets
- 查看 cat initialAdminPassword
三、创建流水线项目
- 创建项目 创建项目.png
- 配置Jenkins链接远程仓库 配置Jenkins链接远程仓库.png
- Jenkinsfile文件,以后所有的操作都写在Jenkinsfile中 项目中创建Jenkinsfile.png
- 如果没有项目中没有 Jenkinsfile 文件,直接构建时会报错 找不到 Jenkinsfile 文件.png
四、流水线语法
pipeline {
// 任何代理
agent any
// 执行任务在这里
stages {
// 阶段1
stage('Build') {
steps {
// 当前所在位置
sh 'pwd && ls -alh'
echo'编译项目'
// 当前可用的环境信息
sh 'printenv'
}
}
// 阶段2
stage('Test'){
steps {
// 当前所在位置
sh 'pwd && ls -alh'
echo '测试项目'
// 当前可用的环境信息
sh 'printenv'
}
}
// 阶段3
stage('Deploy') {
steps {
// 当前所在位置
sh 'pwd && ls -alh'
echo '部署项目'
// 当前可用的环境信息
sh 'printenv'
}
}
}
}
- Jenkins的家目录 /var/jenkins_home 已经挂载到宿主机,需要自己通过inspect 命令来找到Jenkins家目录
JENKINS_HOME=/var/jenkins_home
- 每个项目的工作空间,项目之间通过项目名称来彼此隔离
WORKSPACE=/var/jenkins_home/workspace/Jenkins-pipeline
- 项目的临时目录
WORKSPACE_TMP=/var/jenkins_home/workspace/Jenkins-pipeline@tmp
五、远程自动构建触发
代码推送到远程仓库后,自动构建
1、重新配置Jenkins项目 创建一个身份令牌.png
2、在远程仓库(GitHub)新增WebHook
- 这里的URL就是1中
红色框中的URL
仓库中配置WebHook.png
3、添加完成后在GitHub测试发现 403 没有权限,这时需要为远程触发创建一个Jenkins用户(如:jenkins)
- 创建一个Jenkins用户,用来远程触发构建
- 为jenkins用户创建一个 API Token 为jenkins用户配置Token.png
4、修改GitHub中WebHook中URL地址
http://[Jenkins用户名]:[Jenkins用户名的Token]@[JENKINS_URL]/job/Jenkins-pipeline/build?token=[省份令牌]