我正在尝试使用bitbucket管道在heroku上部署两个应用程序,应用程序从git repo收到主分支,运行良好,部署没有问题。
问题是当我尝试从一个名为“develop”的分支部署到heroku中的其他应用程序时,我在bitbucket的管道控制台上收到此错误错误
+ git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME_DEV.git HEAD
remote: Pushed to non-master branch, skipping build.
这是我的bitbucket-pipes.yml
pipelines:
default:
- step:
script: # Modify the commands below to build your repository.
- npm install
- git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git HEAD
branches:
develop:
- step:
script:
- npm install
- git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME_DEV.git HEAD
答案 0 :(得分:1)
这是因为Heroku想要从master分支构建,并且你在de pipeline.yml中的push命令不会推动掌握。
最简单,最简单的解决方案是更改pipeline.yml中的push命令,强制它进入heroku的主分支。
从以下命令更改命令:
- git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME_DEV.git HEAD
为:
- git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME_DEV.git HEAD:master
答案 1 :(得分:0)
我遵循了Atlassian的这个教程:https://confluence.atlassian.com/bitbucket/deploy-with-pull-requests-856832274.html您可以在此回购中找到解决方案:https://bitbucket.org/rjst/heroku-deploy。这是你的yaml文件:
# This is a sample build configuration for Javascript.
# Only use spaces to indent your .yml configuration.
# -----
# You can specify a custom docker image from Docker Hub as your build environment.
image: node:4.6.0
pipelines:
branches:
master:
- step:
script:
- npm install
- export HEROKU_APP_NAME=$$HEROKU_APP_NAME
- ./heroku_deploy.sh
develop:
- step:
script:
- npm install
- export HEROKU_APP_NAME=$HEROKU_APP_NAME_DEV
- ./heroku_deploy.sh # Check https://bitbucket.org/rjst/heroku-deploy to understand how to deploy to Heroku
所以去那个repo,在yaml旁边的root中创建一个bash脚本的版本并赋予它权限,即。 chmod a+x heroku_deploy.sh
然后设置您的环境变量。否则,这是脚本内容:
#!/bin/bash
#
# Bash script to deploy to Heroku from Bitbucket Pipelines (or any other build system, with
# some simple modifications)
#
# This script depends on two environment variables to be set in Bitbucket Pipelines
# 1. $HEROKU_API_KEY - https://devcenter.heroku.com/articles/platform-api-quickstart
# 2. $HEROKU_APP_NAME - Your app name in Heroku
#
git archive --format=tar.gz -o deploy.tgz $BITBUCKET_COMMIT
HEROKU_VERSION=$BITBUCKET_COMMIT # BITBUCKET_COMMIT is populated automatically by Pipelines
APP_NAME=$HEROKU_APP_NAME
echo "Deploying Heroku Version $HEROKU_VERSION"
URL_BLOB=`curl -s -n -X POST https://api.heroku.com/apps/$APP_NAME/sources \
-H 'Accept: application/vnd.heroku+json; version=3' \
-H "Authorization: Bearer $HEROKU_API_KEY"`
PUT_URL=`echo $URL_BLOB | python -c 'import sys, json; print(json.load(sys.stdin)["source_blob"]["put_url"])'`
GET_URL=`echo $URL_BLOB | python -c 'import sys, json; print(json.load(sys.stdin)["source_blob"]["get_url"])'`
curl $PUT_URL -X PUT -H 'Content-Type:' --data-binary @deploy.tgz
REQ_DATA="{\"source_blob\": {\"url\":\"$GET_URL\", \"version\": \"$HEROKU_VERSION\"}}"
BUILD_OUTPUT=`curl -s -n -X POST https://api.heroku.com/apps/$APP_NAME/builds \
-d "$REQ_DATA" \
-H 'Accept: application/vnd.heroku+json; version=3' \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $HEROKU_API_KEY"`
STREAM_URL=`echo $BUILD_OUTPUT | python -c 'import sys, json; print(json.load(sys.stdin)["output_stream_url"])'`
curl $STREAM_URL