Travis CI пропустил развертывание выпуска, потому что это не помеченный коммит

Я пытаюсь настроить развертывание выпуска автоматизации для выпусков Github с помощью сборки Travis CI. Мой .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 объединяется с веткой Master Travis C Я создаю новый тег на before_deploy шаге, а затем создаю новый выпуск в соответствии с этим тегом. Но когда я тестирую его, я всегда получаю сообщение в журналах Travis CI:

Пропуск развертывания с поставщиком релизов, потому что это не помеченная фиксация

Сообщений о том, почему не создает теги, нет. Что я делаю неправильно? И как правильно настроить Трэвиса на выпуск новых версий артефакта при успешных сборках из ветки Master?


person Gleb    schedule 24.06.2018    source источник
comment
Я могу создавать и вставлять теги вручную, но здесь я пытаюсь сделать этот процесс автоматическим - каждый раз, когда я объединяю ветки функций с ветвью Master, я бы хотел, чтобы Travis CI создал новый тег из номера сборки и подготовил новый выпуск артефакта с этой версией.   -  person Gleb    schedule 25.06.2018


Ответы (2)


Наконец, я решил проблему, и окончательная версия конфигурации выглядит так:

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
person Gleb    schedule 25.06.2018
comment
Это просто обходной путь. Чтобы правильно обработать (странную) логику сборки Travis CI, см. Мой ответ здесь: stackoverflow.com/a/56447675/3660290 - person G00fY; 04.06.2019

Чтобы Трэвис рассмотрел тег, вам нужно установить $TRAVIS_TAG env var. См. https://docs.travis-ci.com/user/deployment/#conditional-releases-with-on

export TRAVIS_TAG=$GIT_TAG
person phd    schedule 25.06.2018
comment
Спасибо за совет! Это не решило проблему, но помогло найти правильный подход. В качестве ответа отправляю финальную рабочую конфигурацию Трэвиса - person Gleb; 25.06.2018