Push-уведомления в rocket.chat в gitlab ci

Я пытаюсь настроить уведомления на свой сервер Rocket.Chat через файл .gitlab-ci.yml. У меня есть этапы тестирования и развертывания, но на этапе уведомления возникает ошибка. Я следовал инструкциям из здесь, но я настроил скрипты уведомлений для работы с Rocket.Chat вместо Pushbullet.

Вот мой .gitlab-ci.yml:

stages:
  - test
  - deploy
  - notify

test:
  stage: test
  image: homeassistant/amd64-homeassistant
  script:
    - hass --script check_config -c .

deploy:
  stage: deploy
  only:
    - master
  before_script:
    - 'which ssh-agent || ( apk update && apk add openssh-client )'
    - eval $(ssh-agent -s)
    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
    - chmod 644 ~/.ssh/known_hosts
  script:
    - ssh $DEPLOY_USER@$DEPLOY_HOST "cd '$DEPLOY_PATH'; git pull; sudo systemctl restart home-assistant@homeassistant"

notify_success:
  stage: notify
  allow_failure: true
  only:
    - master
  script: 
    - curl -X POST -H 'Content-Type: application/json' --data '{"text":"New Hass config deployed successfully!"}' https://chat.bryantgeeks.com/hooks/$ROCKET_CHAT_TOKEN

notify_fail:
  stage: notify
  allow_failure: true
  only:
    - master
  when: on_failure
  script: 
    - curl -X POST -H 'Content-Type: application/json' --data '{"text":"New Hass config failed. Please check for errors!"}' https://chat.bryantgeeks.com/hooks/$ROCKET_CHAT_TOKEN

Я получаю эту ошибку в CI Lint:

Status: syntax is incorrect

Error: jobs:notify_success:script config should be a string or an array of strings

Если я изменю строки сценария уведомления, чтобы они заключались в одинарные кавычки ('), я получаю следующую ошибку в CI Lint:

Status: syntax is incorrect

Error: (): did not find expected key while parsing a block mapping at line 33 column 7

Если я попытаюсь заключить строку скрипта в двойные кавычки ("), я получу следующую ошибку:

Status: syntax is incorrect

Error: (): did not find expected '-' indicator while parsing a block collection at line 33 column 5

Я не уверен, что еще попробовать или где посмотреть, как это исправить. Любая помощь приветствуется.

1
0
836
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

YAML действительно не любит : в строках. Виновник - : в 'Content-Type: application/json'.

Иногда помогает использование формата многострочной строки, например:

notify_success:
  stage: notify
  allow_failure: true
  only:
    - master
  script: |
    curl -X POST -H 'Content-Type: application/json' --data '{"text":"New Hass config deployed successfully!"}' https://chat.bryantgeeks.com/hooks/$ROCKET_CHAT_TOKEN

Большое спасибо, что исправили. Мне пришлось добавить before_script, чтобы установить curl в контейнер для этого этапа.

Alan Bryant 11.08.2018 00:44

Другие вопросы по теме