【问题标题】:Retagging docker image重新标记泊坞窗图像
【发布时间】:2018-05-15 11:54:40
【问题描述】:

想象一个以下列方式调节的管道: 更改分支:


|包裹| -> |测试|


当该更改被证明值得时,应将其合并到 master 分支,由于使用了 onlyexcept 关键字,它的管道略有不同:

  only:
- master

  except:
- master

主分支的管道如下所示:


|重新标记&推送| -> |发布|


这里的重新标记非常重要,因为我们不想重建我们在 MR 期间验证过的图像(包),因为它可能与我们如此努力地测试的图像不完全相同。

问题在于,在 gitlab 中,没有明确的方法可以知道应该重新标记哪个图像。 在|Package|-job 中,我们使用 git-commit 和 git-branch 作为包的标签,但是当管道为 master 运行时,似乎没有合适的方法来可靠地确定必须被重新标记为,例如:latest

【问题讨论】:

    标签: git docker package gitlab artifact


    【解决方案1】:

    如果我理解正确,更改已经在不同的分支上进行了测试,而不是 master。因此,如果您的映像是基于除 master 以外的分支构建的,那么您正在从非 master 分支发布内容。理想的情况是仅从 master 分支测试构建。

    让我分享一下我们公司使用的策略。开发人员分叉存储库、进行更改、提交到他们的私有存储库并向主存储库发出拉取请求 (PR)。 PR 中的更改由无人机自动验证。测试通过后,我们将更改合并到主存储库的主分支中。然后我们在主仓库的主分支上创建一个发布候选标签(比如v2.0.0-rc1)。我们的 QA 团队已经为这个 repo/branch 设置了标签上的 jenkins 构建。一旦自动化测试通过,标签v2.0.0-rc1 用于重新标记为latest。目前,在我们的案例中,此步骤是手动完成的,因为我们希望进行手动干预,但可以完全自动化。

    【讨论】:

    • 我了解解决方案,它会解决我们的问题。我在使用此解决方案时遇到的问题是,它违反了将 smt 合并到未部署到生产环境的 master 的策略(并且分支被恰当地视为暂存环境材料)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 2014-03-22
    • 2021-04-29
    • 2018-12-15
    • 1970-01-01
    相关资源
    最近更新 更多