首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Coding
V2EX  ›  程序员

有用 Gitlab CI 做自动构建的吗,目前支持根据 commit-id 构建 pipline 吗

  •  
  •   Kontinue · 44 天前 · 1534 次点击
    这是一个创建于 44 天前的主题,其中的信息可能已经有所发展或是发生改变。

    rt,我看到的 runner 目前好像只能是拉取某分支最新的一次 commit 进行构建,或者通过 tag 来标记,想知道是否可以指定构建某个分支的某一次提交来 run 一个 pipline ?

    第 1 条附言  ·  44 天前
    主要是想通过 API 能够发布指定 commit 的代码,虽然这样未必是最好的方案。由于项目主要是 to B 的算法集成项目服务这边的逻辑比较简单,的确只是在 master 上开发的。总结下回答,感觉最好的处理方式应该是 check 出 release 分支或者打 tag 来做发布,发布成功后可以定期清理一下分支就可以了。
        1
    AngryPanda   44 天前 via Android
    意义何在?你能提前预知自己的 comnmit id 的话,就可以在 script 里面写脚本。
        2
    Chaos11   44 天前
    可以吧如果我没理解错,可以指定自动执行的 step,最后的发布由你来触发
        3
    Kontinue   44 天前
    @AngryPanda 就是我开发还在继续迭代,但是我部署的时候只需要部署到之前的某个提交就可以了
        4
    zhuowenli   44 天前 via Android
    gitlab environment 应该可以满足你的需求
        5
    Kontinue   44 天前
    @AngryPanda 在哪个位置上运行 pipline 不是 gitlab 指定的嘛,怎么在 script 里写? script 写的不是每个 stage 的构建脚本
        6
    nothingnodust   44 天前
    gitlab 里可以操作啊,你想构建哪次提交都可以啊
    但是我不是很明白你到底是想重新构建某一次 pipeline 还是某一个流程
    建议说清楚使用场景
        7
    airfling   44 天前
    你的想法是可以的,gitlab 有个 pipeline 的列表,你指定哪次提交都可以,我觉得与其想,不如自己实际操作下
        8
    zhuowenli   44 天前 via Android
    话说如果只是版本迭代的需要,为什么不切分支出来,通过分支来控制版本
        9
    KuroNekoFan   44 天前
    ` .gitlab-ci.yml`
    ```
    build:
    stage: xxx
    tags:
    - xxx
    only:
    #- $branch_name
    variables:
    - $CI_COMMIT_MESSAGE =~ /\[do\-some\-task\]/

    ```
        10
    Rwing   44 天前
    可以,那个输入框可以直接输入 commit 的 hash
        11
    Kontinue   44 天前
    @nothingnodust
    https://i.bmp.ovh/imgs/2019/10/899ba5ecf69a0a5d.png
    目前自动的 Auto DevOps 会在每次 commit 都执行一条 pipline,但是我们现在不需要,我们现在关注的是 CD 流程。现在的需求是这样的:开发肯定是在不停的 commit 的,但是发布测试的时候可能只需要发布到具体的某一次 commit,不一定是最新的,就现在创建的 pipline 选项上只能指定是某条分支或者 tag,不能从指定的分支下的某次 commit 拉取代码执行构建。
        12
    Kontinue   44 天前
    ![]( https://i.bmp.ovh/imgs/2019/10/899ba5ecf69a0a5d.png)
        13
    Kontinue   44 天前
    @Rwing 框框不是只能选择分支和 tab 吗,怎么输入 commit
        14
    mxalbert1996   44 天前 via Android
    你们开发时难道不分 branch 的么?分 branch 的话你设置仅某 branch 触发 CI 然后定期 merge 不就行了。
        15
    KuroNekoFan   44 天前 via iPhone
    gitlab 的网站上有详细说明 ci 配置的文档,可以看看
        16
    gunjianpan   44 天前   ♥ 1
    @Kontinue Tag 不就是来解决你这个需求的吗? Hash 值难道比 tag 更好记?
        17
    Rwing   44 天前
    @Kontinue 直接输入。。。。
        18
    Kontinue   44 天前
    @gunjianpan 目前我也只这么想的,就是想问一下
        19
    lincolnhuang   44 天前
    看来用 gitlab-ci 的兄弟还是蛮多的嘛
        20
    Kontinue   44 天前
    @Rwing 不是只能选不能输入吗。。。
        21
    jackleeforce3615   44 天前   ♥ 1
    gitlab-ci.yml 里面的 stage 可以指定某些分支或者 tag 做指定的事情,比如配置当分支名字是 release-xxx 的时候执行发布。

    你可以把某次提交 checkout 出来成为一个新的分支 release-xxx。 这样就触发了发布动作。
        22
    zuoakang   44 天前
    gitlab 可以手动提交某个 stage
        23
    HangoX   44 天前
    通过 trigger 可以指定某个提交构建
        24
    NauxLiu   44 天前
    可以将你的 Pipeline 部署的 Job 设置 `when: manual`, 这样你可以回去找到历史的 pipeline 手动 trigger deploy job.
        25
    pljhonglu   44 天前
    通过 trigger 出发一次 pipeline 啊
        26
    Rwing   44 天前
    @Kontinue 能输入。。。你试试啊
        27
    Kontinue   44 天前
    @Rwing 你是 Gitlab CE ?
        28
    Kontinue   44 天前
    @HangoX 通过 trigger 触发的前提是 auto devops 需要开着,让每个 commit 都有一个对应的 pipline 是吧。然后可以通过 trigger 触发历史的 pipline,是不是这个么意思?
        29
    sunzongzheng   44 天前
    script:
    - git reset --hard {hash}
    ...
        30
    lewinlan   44 天前
    用 tag 触发,或者用正则表达式去搜索 commit-message (前面已经有人说了)
    only:
    variables:
    - $CI_COMMIT_MESSAGE =~ /pls test/i
    - $CI_COMMIT_REF_NAME == "release"
        31
    HangoX   44 天前
    @Kontinue 不用那么麻烦,你 gitlab.yaml 增加一个 trigger 触发,然后通过 trigger 发送 commit 就好了
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2243 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 36ms · UTC 15:30 · PVG 23:30 · LAX 07:30 · JFK 10:30
    ♥ Do have faith in what you're doing.