我正在使用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并释放容器?
谢谢
答案 0 :(得分:0)
有一些方法:Script "heroku login" in a CI environment。我认为您可以尝试Method 2: Environment Variable
。
答案 1 :(得分:0)
这是您可以登录以推送到heroku注册表的方法:
$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