Kontinue
V2EX  ›  GitLab

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

  •  
  •   Kontinue · Oct 30, 2019 · 5963 views
    This topic created in 2404 days ago, the information mentioned may be changed or developed.

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

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

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

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