设置travis.yml以自动部署docker映像

时间:2019-04-10 15:11:12

标签: docker heroku deployment travis-ci

我正在使用Travis-CI将docker容器中以python(烧瓶)编写的Web应用程序部署到Heroku。如何设置travis.yml以自动将映像部署到Heroku?

我能够登录docker并将图像自动推送到那里。

我的.travis.yml:

language: python
sudo: required

services:
  - docker

before_install:
  - docker build -t quarkus7/which-tram .

script:
  - docker run quarkus7/which-tram python test.py

after_success:
  - bash docker_hub_push
  - docker tag quarkus7/which-tram registry.heroku.com/$HEROKU_APP_NAME/web
  - docker push registry.heroku.com/$HEROKU_APP_NAME/web
  - ( echo "$HEROKU_USERNAME" echo "$HEROKU_PASSWORD" ) | heroku login -i
  - heroku container:login
  - heroku container:release web --app $HEROKU_APP_NAME

我怎么在Travis日志中出现错误:

$ ( echo "$HEROKU_USERNAME" echo "$HEROKU_PASSWORD" ) | heroku login -i
heroku: Enter your login credentials
Email: Password: sh: 1: read: Illegal option -s

您现在是否要修改.travis.yml以登录到Heroku并释放容器?

谢谢

2 个答案:

答案 0 :(得分:0)

有一些方法:Script "heroku login" in a CI environment。我认为您可以尝试Method 2: Environment Variable

答案 1 :(得分:0)

这是您可以登录以推送到heroku注册表的方法:

.travis.yml:

$order = null;

if (isset($GLOBALS['wc_email']) && $GLOBALS['wc_email']->object && $GLOBALS['wc_email']->object instanceof WC_Order) {
$order = $GLOBALS['wc_email']->object;
}

before_install: - wget -qO- https://toolbelt.heroku.com/install.sh | sh #installed heroku CLI - docker login -u "$HEROKU_USERNAME" --password=$(heroku auth:token) registry.heroku.com #logged in 是您的Heroku电子邮件。

然后像这样使用$HEROKU_USERNAME进行部署:

heroku container:release