V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Kontinue
V2EX  ›  GitLab

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

  •  
  •   Kontinue · 2019-10-30 09:18:20 +08:00 · 4985 次点击
    这是一个创建于 1612 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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