我对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。之后,如果我遗漏了标记,说我只能将标记的提交作为释放,那么我就会出错。
答案 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/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了解更多信息。