我踩过的 Jenkins 打包的坑

3 月份入职一家新公司,使用的是纯 flutter,对我来说是一个挑战。我是 Android 开发,对于 Flutter 也就停留在学习过基础语法,接入过原生项目,混合栈的开发。
老实说,我担心自己连 UI 都画不来。
不过幸好遇见一个很好的公司,能够给你时间过渡重新学习,再逐步进入项目开发中。当然这些情况在面试过程中都已经了解。

刚入职的一段时间,除了学习 Flutter,熟悉项目之外,我调研了主题适配,以一个页面作为 demo 输出,与设计师方等进行沟通。

其他事情就有活就干,没活就可以继续学习,我自己也找了一些活,比如:打包脚本修改。

此文记录一下我踩过的坑。

一、多分支 Pipeline 和单分支 Pipeline

一个打包的 job 可以创建多种风格,比较常用的就是 【流水线】 和 【多分支流水线】
job 类型

流水线:是单分支的,可以在配置中进行 SCM(Source Control Management) 配置,如下图所示。
git 仓库地址、分支名等都可以进行配置
在这里插入图片描述
多分支流水线 多分支的,同样也可以配置 SCM,配置类似,略。支持分支进行通配符支持。只要通过筛选的才可以显示在多分支 job 中,称为一个一个单独的 Pipeline,也就是多分支流水线其实是由多个单分支流水线组成

请记住这点,后面很多多分支上的配置同样适用于单分支 Pipeline 中。

问题

如何在流水线中切分支?

虽然多分支 Pipeline 支持多分支,但其实是没有那么灵活的。试想一下,一个团队那么多人,一般有权限配置分支就只有一两个人,而每个人都想切一个新分支来进行 feature 功能开发。就假设,每个人都有权限,开了分支就出现在多分支的 Pipeline 中,那过多的分支就会造成Pipeline很多。
于是,我就增加了切分支的功能,当然适用于单分支 Pipeline。

  1. parameters 增加分支参数选择的选项,最开始我使用的是一个输入框,但是输入框有输入分支错误的风险,就改成了选择框,gitParameter 会自动筛选出符合要求的分支。

    • type:PT_BRANCH:表明筛选的是分支;PT_BRANCH_TAG: 表明筛选的是分支和 tag。
    • 其余的都很明显知道什么意思,略。
  2. stage 增加切分支的流程,when 条件表明什么情况下才会执行此 stage,只有符合要求的才会切分支,否则使用当前 Pipeline 的分支,比如多分支中,你从哪个 Pipeline 发起就是哪个分支的。

  3. 切分支主要使用的是 GitSCM,branches是一个 List<List<String> 的数据类型,这个我最开始就总是弄错,导致总是切分支失败,也就是两个中括号

  4. 其他的配置项我也没有深入研究,都是直接继承当前分支的设置,有兴趣的同学可以自行了解。

 parameters {
        gitParameter(name: 'BRANCH',
                      type: 'PT_BRANCH',
                      branchFilter: 'origin/(.*)',
                      defaultValue: '',
                      selectedValue: 'DEFAULT',
                      sortMode: 'ASCENDING_SMART',
                      description: 'Select your branch or tag. if not selected, the branch is current branch'
                     )
    }

stage('Checkout Branch') {
            when {
                expression { params.BRANCH != '' && params.BRANCH != null}
            }
            steps {
                checkout([
                    $class: 'GitSCM',
                    branches: [[name: params.BRANCH]],
                    userRemoteConfigs: scm.userRemoteConfigs,
                ])
            }
        }
如果不同分支的 jenKinsFile 文件变了怎么办?

通过 GitSCM 切的分支,我尝试了很多次,无法应用切的分支的 jenKinsFile,jenKinsFile 始终是当前分支最后一次提交的时候的 jenKinsFile,有时生效需要等到下一次 build。所以如果涉及到 JenKinsfile 的改动打包,请依然使用原有的 多分支。

如何看我分支切成功了呢?
  1. 方法一:在打包后的 status 看,看到这里有两个 git 记录,就表明切了分支。
    在这里插入图片描述
  2. 方法二:在打包 log 中看,最开始有 git 的记录,看是否有 checkout 记录。
    在这里插入图片描述

二、JenKinsFile 中的字符串

经常,我们一行字符串很长,有时会用 --参数 等形式来给 sh 脚本/python 脚本传参。
那么怎么换行呢?

你肯定想的是 + 来进行,恭喜你答错了!

使用 + 的方式在 jenkinsFile 文件中是不管用的,需要使用“三个引号和反斜杠的方式”。如下所示

def scriptParams = """--flavor=${params.params1} \
                                 --params1=$feishuToken \
                                 --build_id=${env.BUILD_ID} \
                                 --job-name=${env.JOB_NAME} \
                                 --branch-name=${env.BRANCH_NAME}"""
"python3 scripts/build.py $scriptParams"

====================================

这期的分享就先到这里了。欢迎关注我,一起成长。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

heidiwang0000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值