aexiaoliou 2 年之前
父节点
当前提交
bfbc47516f
共有 2 个文件被更改,包括 56 次插入11 次删除
  1. 18 6
      Jenkinsfile
  2. 38 5
      README.md

+ 18 - 6
Jenkinsfile

@@ -6,14 +6,14 @@ pipeline {
     agent none
     stages {
         // 生产
-        stage('prod') {
+        stage('prod build') {
             // 当分支为master的时候执行
             when {
                 branch 'master'
             }
 
             // 自动构建项目根目录下的 Dockerfile 文件,并使用其为运行容器
-            agent { dockerfile true }
+            agent { dockerfile true } // agent要放在when后,否则依旧会运行一次docker
 
             // 一些额外的选项
             options {
@@ -29,7 +29,7 @@ pipeline {
             }
         }
         // 测试环境
-        stage('test') {
+        stage('test build') {
             when {
                 branch 'test'
             }
@@ -42,21 +42,33 @@ pipeline {
             }
         }
         // 生产环境
-        stage('dev') {
+        stage('dev build') {
+            // 在任何可用的代理上执行流水线或阶段,没有多节点的情况下其实就是直接执行shell啦。。
             when {
                 branch 'dev'
             }
 
-            // 在任何可用的代理上执行流水线或阶段,没有多节点的情况下其实就是直接执行shell啦。。
             agent any
+            /*
+            agent {
+                docker {
+                    image 'php:8.2-cli'
+                    lable: 'develop-server' // 在lable为xxx的节点对应docker容器运行
+                    args: ' --verbose' // 额外的docker参数
+                }
+            }
+             */
 
             steps {
-                sh 'echo Jenkins Test'
+                sh 'cat ./file_need_to_merge'
             }
         }
         // 没有when也就是任意时候都会执行
         stage('after build') {
             agent any
+            /*
+            agent { lable: 'maybe-server' } // 在lable为xxx的节点上运行
+             */
 
             steps {
                 echo 'Always excecute after other stages.'

+ 38 - 5
README.md

@@ -2,11 +2,44 @@
 
 这是一个 Jenkins 多分支自动化部署运行参考项目  
 Jenkins 会根据根目录中的 [Jenkinsfile](./Jenkinsfile) 进行自动编译或运行  
-目录下的示例 [Jenkinsfile](./Jenkinsfile) 可以拷贝修改后直接使用  
-   
+目录下的示例 [Jenkinsfile](./Jenkinsfile) 可以拷贝修改后直接使用
+
 如果需要更多相关信息可以参考:  
 [Jenkinsfile 入门](https://www.jenkins.io/zh/doc/book/pipeline/jenkinsfile/)  
-[Jenkinsfile 参考文档](https://www.jenkins.io/zh/doc/book/pipeline/syntax/)
+[Jenkinsfile 参考文档](https://www.jenkins.io/zh/doc/book/pipeline/syntax/)  
+或者Jenkins项目左边的那个流水线语法
+[docker{}](http://192.168.0.80:3002/job/jenkins_multibranch_example/pipeline-syntax/globals#docker)
+
+推荐 vscode 插件:[JenkinsFile Support](https://marketplace.visualstudio.com/items?itemName=ivory-lab.jenkinsfile-support)
+
+### 构建一个 Jenkins 多分支项目
+
+#### 步骤
+
+1. 在 Jenkins 中创建一个 Jenkins 多分支项目
+2. 在 Jenkins 中填入必要的信息
+    - 基本信息
+    - 分支源及其凭据
+    - 触发器 webhook
+    - 按需配置其他
+3. 在项目中创建并编辑 Jenkinsfile
+4. 添加凭据对应协作人和应有权限
+5. 在 Jenkins 中点击扫描和构建并尝试构建
+6. 在项目中添加 webhook
+7. 测试 webhook 推送 (触发构建或者扫描日志时间改变就可以了)
+
+#### 可选项
+- [邮件消息推送](https://plugins.jenkins.io/email-ext/)
+- [钉钉消息推送](https://jenkinsci.github.io/dingtalk-plugin/)
+- [企业微信推送](https://github.com/jenkinsci/qy-wechat-notification-plugin)
+- 以上插件均已安装,可以直接在 Jenkinsfile 中编写使用
+- 使用 [input](https://www.jenkins.io/zh/doc/book/pipeline/syntax/#input) 阻塞危险的构建,直到有效的输入确认
+- 如果需要`docker-compose`,则需要在运行节点安装,之后直接使用命令即可
+
+### 注意事项
 
-  
-推荐vscode插件:[JenkinsFile Support](https://marketplace.visualstudio.com/items?itemName=ivory-lab.jenkinsfile-support)  
+- 尽量使用 docker 容器而非执行shell命令以避免环境冲突,并且方便做滚动更新等操作
+- 如果只是要测试微调后 Jenkinsfile 可以用 Jenkins 的回放功能(点击具体构建,左边),然后再放进项目里,这样就不用一直 commit push
+- 对当前分支的 Jenkinsfile 更新不会影响到其他分支,在开发或者测试分支可以不用担心影响生产
+- 对 Jenkinsfile 的改动尽量独立为一个commit, 方便 git cherry-pick 合并单一commit到其他需要的分支
+- 多节点下尽量不要使用 agent any,鬼知道在哪执行去了