【问题标题】:Getting Travis to skip pushing a tag if it exists让 Travis 跳过推送标签(如果存在)
【发布时间】:2017-07-03 20:18:32
【问题描述】:

最近才开始使用 Travis CI 进行构建测试。在短短几天内取得了长足的进步,并且玩得很开心。

构建成功通过,但现在在多个 php 环境下运行我的测试导致只有第一个测试通过,将标签/内部版本号推送到 repo,后续测试失败

! [rejected] v2.2017.22 -> v2.2017.22 (already exists)

我执行推送的 bash 代码如下:

before_deploy: - git config --global user.email "${GIT_EMAIL}" - git config --global user.name "${GIT_NAME}" - export GIT_TAG=v1.0.$TRAVIS_BUILD_NUMBER - git tag $GIT_TAG -a -m "Tag Generated from TravisCI for build $TRAVIS_BUILD_NUMBER" - git push https://${GH_TOKEN}@github.com/${TRAVIS_REPO_SLUG} --tags

我想做的(尽可能简单)如下,请原谅我想在这里实现的非常蹩脚的措辞 :) 希望有人可以帮助我用一个非常简单的 bash 行来实现这一点。

before_deploy: - git config --global user.email "${GIT_EMAIL}" - git config --global user.name "${GIT_NAME}" - export GIT_TAG=v1.0.$TRAVIS_BUILD_NUMBER - git tag $GIT_TAG -a -m "Tag Generated from TravisCI for build $TRAVIS_BUILD_NUMBER" - git fetch --tags - #if tag $TRAVIS_BUILD_NUMBER already exists then - #don't push and exit with 0 - #else - git push https://${GH_TOKEN}@github.com/${TRAVIS_REPO_SLUG} --tags

【问题讨论】:

    标签: git bash push


    【解决方案1】:

    您可以在尝试推送之前简单地检查git tag 是否在本地成功(if 命令会抑制错误返回代码):

    ...
    export GIT_TAG=v1.0.$TRAVIS_BUILD_NUMBER
    git fetch --tags
    msg="Tag Generated from TravisCI for build $TRAVIS_BUILD_NUMBER"
    if git tag $GIT_TAG -a -m "$msg" 2>/dev/null; then
        git push https://${GH_TOKEN}@github.com/${TRAVIS_REPO_SLUG} --tags
    else
        echo Tag already exists!
    fi
    

    (在构建结束后标记,而不是之前;这样您可以跳过失败并仅标记实际构建)

    顺便说一句,如果构建标签已经存在,我会担心,这意味着您将来将没有可靠的方法来重现当前构建。

    【讨论】:

    • 非常感谢,这绝对是一种享受。我现在所做的是将 before_deploy: 中的所有单行转换为一个名为 deploy.sh 的 bash 脚本,现在 before_deploy: 中只有一行读取 `travis/deploy.sh' 你的这段代码完美地检测到了标签,推送一次,跳过其余的构建测试:) 我欠你一个六包。
    • 我已经解决了标签推送问题,但现在坚持让我的脚本写入一个简单的 .txt 文件并将其添加到提交中。我应该对此提出一个新问题并发布我的代码还是添加到这个问题中? @sir-athos
    • 请为它开始一个新问题。添加子问题,尤其是当您已经接受答案时,可能会导致等待任何解决方案的时间过长。
    • @MitchellK 我很高兴听到你想通了。感谢分享解决方案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 2013-05-05
    • 2022-01-23
    相关资源
    最近更新 更多