2017-05-04 63 views
0

我試圖使用bitbucket管道來部署兩個應用程序在heroku上的應用程序收到主分支從git回購,這是運行良好,部署沒有問題。使用bitbucket管道部署到非主分支

問題是,當我嘗試從一個叫分支部署「發展」到其他應用中的Heroku我得到管控制檯上的錯誤錯誤到位桶

+ git push https://heroku:[email protected]/$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:[email protected]/$HEROKU_APP_NAME.git HEAD 
    branches: 
    develop: 
     - step: 
      script: 
      - npm install 
      - git push https://heroku:[email protected]/$HEROKU_APP_NAME_DEV.git HEAD 

回答

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 

,所以還是那回購,做一個版本的bash腳本在你的根目錄下的YAML旁邊,並給它的權限,即。 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