虽然提交了标记,但Travis-CI正在跳过部署

时间:2015-05-10 20:58:09

标签: git github travis-ci

我对Travis CI很陌生,但我通过他们的文档找到了解决方法。但是,部署到GitHub版本对我来说不起作用。 我的.travis.yml文件如下所示:

language: java

branches:
  only:
  - master

notifications:
  email: false

before_deploy:
  - export RELEASE_JAR_FILE=$(ls build/libs/*.jar)
  - echo "Deploying $RELEASE_JAR_FILE to GitHub"

deploy:
  provider: releases
  api_key:
    secure: [key]
  file_glob: true
  file: "${RELEASE_JAR_FILE}"
  skip_cleanup: true
  on:
    repo: [my-repo]
    tags: true
    all_branches: true

以下是我提交的方式:

$ git add . && git commit -m "my message"
$ git tag 0.1234
$ git push origin --tags
$ git push origin master

之后,Travis使用

创建构建和跳过部署
Skipping a deployment with the releases provider because this is not a tagged commit

当我在浏览器中打开我的GitHub存储库时,版本被正确标记,但Travis没有将它们标记为已标记。

有人有解决方案吗?我怀疑branches: only: master部分要对这种行为负责,尽管Travis 曾经将一个版本推送到没有on: tags: true标志的GitHub。之后,如果我遗漏了标记,说我只能将标记的提交作为释放,那么我就会出错。

3 个答案:

答案 0 :(得分:10)

您需要删除

branches:
    only:
    - master

请参阅https://github.com/travis-ci/travis-ci/issues/2498#issuecomment-48337712

我意识到这是一个无赖,但我不确定Travis是否可以按照你想要的方式进行配置。您可能想要打开一张票 - https://github.com/travis-ci/travis-ci/issues/new

更新:

branches.only中的代码使用正则表达式:

branches:
    only:
    - master
    - /v\d+\.\d+[a-z]/

答案 1 :(得分:3)

Travis CI区分通过推送提交或拉取请求启动的构建和通过推送标记启动的构建。

  

TRAVIS_BRANCH:用于推送构建,或非由拉动触发的构建   请求,这是分支的名称。对于由a触发的构建   拉取请求,这是拉取目标的分支名称   请求。   对于由标签触发的构建,该名称与标签名称相同(TRAVIS_TAG)。

     

来源:https://docs.travis-ci.com/user/environment-variables/

因此,当推送带有标签的提交时,这将触发两个条件不同的构建。 如果仅过滤分支名称,则不会触发标记的构建!

在分支条件中使用正则表达式的一种方法是切换到条件构建和阶段(条件文档:https://docs.travis-ci.com/user/conditions-v1)。 然后,您可以执行以下操作:

stages:
- name: Run tests and build
  if: branch IN (develop, master)
- name: Build and deploy release
  if: tag IS present
jobs:
  include:
  - stage: Build debug
    ...
    script: ...
  - stage: Build and deploy release on tags
    ...
    deploy: ...

这是我的完整示例travis.yml,其中包含条件阶段:https://travis-ci.com/G00fY2/android-ci-testproject/jobs/205348876/config

答案 2 :(得分:1)

除了@Spain关于删除branches部分的内容之外(这是必需的,因为标签构建不会被调用),您需要确保已经推送了git push origin --tags部分标签(Fetching: dpl-1.8.14.gem (100%) Successfully installed dpl-1.8.14 Installing deploy dependencies dpl.2 Preparing deploy Logged in as X Deploying to repo: FOO/BAR Current tag is: FOOBAR-2015 dpl.3 Deploying application )所以标签存在于遥控器上。

deployment of release仅针对标记提交,而不是针对任何其他分支,以避免多次发布相同的文件。已发布的代码将显示在 Travis CI 中的 Active Branches 下,其构建将触发发布,因此您应该看到如下输出:

~/.ssh/config

成功构建后,您应该会在 Releases 标签下的 GitHub 上看到这些文件。

请在Travis CI查看:GitHub Releases Uploading了解更多信息。