2

I'm trying to use bitbucket pipes to deploy for two apps in heroku on app is received the master branch from git repo and that is running well and deploy without problems.

The problem is when I'm try to deploy from a branch called "develop" to other app in heroku I'm getting this error error on pipe console in 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.

here is my 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
mastervv
  • 382
  • 1
  • 4
  • 20

2 Answers2

1

I followed this tutorial from Atlassian: https://confluence.atlassian.com/bitbucket/deploy-with-pull-requests-856832274.html and you can find the solution in this repo: https://bitbucket.org/rjst/heroku-deploy. This is your yaml file:

# 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

So go to that repo, make a version of that bash script in your root beside the yaml and give it permissions, ie. chmod a+x heroku_deploy.sh then set your environmental variables. Otherwise, here is the script content:

#!/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
droid-zilla
  • 536
  • 7
  • 8
1

This is because Heroku want to build from the master branch, and the push command you have in de pipeline.yml not pushes to master.

The most simple and easiest solution is to change the push command in the pipeline.yml to force it to push into heroku's master branch.

Change the command from:

- git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME_DEV.git HEAD

to:

- git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME_DEV.git HEAD:master
HoefMeistert
  • 1,190
  • 8
  • 17