首页 > 解决方案 > Travis CI 跳过发布部署,因为这不是标记提交

问题描述

我正在尝试使用 Travis CI 构建将自动化发布部署配置为 Github 版本。我的.travis.yml文件看起来像:

language: java
jdk: oraclejdk8

branches:
  only:
    - master

before_install: mvn package -DskipTests=true -DbuildNumber=$TRAVIS_BUILD_NUMBER

before_deploy:
  - git config --local user.name "$USER_NAME"
  - git config --local user.email "$USER_EMAIL"
  - export GIT_TAG=1.0.$TRAVIS_BUILD_NUMBER
  - git tag $GIT_TAG -a -m "Generated tag from TravisCI build $TRAVIS_BUILD_NUMBER"
  - git push origin $GIT_TAG

deploy:
  provider: releases
  api_key: $GITHUB_TOKEN
  file:
    - target/tweetsched-dto-1.0.$TRAVIS_BUILD_NUMBER.jar
  name: tweetsched-dto-1.0.$TRAVIS_BUILD_NUMBER
  skip-cleanup: true
  on:
    tags: true
    repo: Tweetsched/tweetsched-dto
    branches:
      only:
        - master

notifications:
  email:
    on_success: never
    on_failure: always

而我想要的 - PR 被合并到主分支 Travis CIbefore_deploy一步一步创建一个新标签,然后根据该标签创建新版本。但是当我测试它时,我总是在 Travis CI 日志中收到一条消息:

跳过发布提供者的部署,因为这不是标记提交

没有任何关于它为什么不创建标签的消息。我究竟做错了什么?以及如何正确配置 Travis 以在 Master 分支成功构建时发布新版本的工件?

标签: gitgithubcontinuous-integrationtravis-cicontinuous-delivery

解决方案


最后我解决了这个问题,配置的最终版本如下:

language: java
jdk: oraclejdk8

branches:
  only:
    - master

before_install: mvn package -DskipTests=true -DbuildNumber=$TRAVIS_BUILD_NUMBER

before_deploy:
- export TRAVIS_TAG="1.0.$TRAVIS_BUILD_NUMBER"
- echo "$TRAVIS_TAG" "$TRAVIS_COMMIT"
- git config --local user.name "$USER_NAME"
- git config --local user.email "$USER_EMAIL"
- git tag "$TRAVIS_TAG" "$TRAVIS_COMMIT"

deploy:
  provider: releases
  tag_name: $TRAVIS_TAG
  target_commitish: $TRAVIS_COMMIT
  name: $TRAVIS_TAG
  overwrite: true
  skip_cleanup: true
  api_key: $GITHUB_TOKEN
  file_glob: true
  file:
    - target/tweetsched-dto-1.0.$TRAVIS_BUILD_NUMBER.jar
  on:
    branch: master
    repo: Tweetsched/tweetsched-dto

notifications:
  email:
    on_success: never
    on_failure: always

推荐阅读