Skip to content

Commit

Permalink
update release script for circleci (#541)
Browse files Browse the repository at this point in the history
  • Loading branch information
Cameron Mace authored Aug 17, 2017
1 parent 04e9367 commit 5e11335
Showing 1 changed file with 23 additions and 25 deletions.
48 changes: 23 additions & 25 deletions scripts/release.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
'''
Utility to schedule MAS builds in Bitrise.
Utility to schedule MAS builds on CircleCI.
Examples:
Expand Down Expand Up @@ -33,7 +33,7 @@
TODO:
- Add a flag to wait until the release has been built (Bitrise) and published (Maven).
- Add a flag to wait until the release has been built (CircleCI) and published (Maven).
'''

Expand All @@ -49,8 +49,8 @@
# Get the version from GRADLE_PROPERTIES_PATH below
CURRENT_VERSION_TAG = 'current'

# You can find the API token in https://www.bitrise.io/app/a7eea7d04be1e2e5#/code -> API token
BITRISE_API_TOKEN_ENV_VAR = 'BITRISE_API_TOKEN_MAS'
# You can add your API token onhttps://circleci.com/account/api
CIRCLECI_API_TOKEN_ENV_VAR = 'CIRCLECI_API_TOKEN'

# In the future we might want to consider alpha, or rc.
ALLOWED_PRE_RELEASE = ['beta']
Expand All @@ -60,8 +60,8 @@
GRADLE_PROPERTIES_PATH = '%s/gradle.properties' % MAPBOX_GL_ANDROID_SDK_PATH
GRADLE_TOKEN = 'VERSION_NAME='

# Bitrise
URL_BITRISE = 'https://www.bitrise.io/app/a7eea7d04be1e2e5/build/start.json'
# Triggers a new build, returns a summary of the build
URL_CIRCLECI = 'https://circleci.com/api/v1.1/project/github/mapbox/mapbox-gl-native/tree/' # + :branch

# We support three parameters: stage, branch, and version
@click.command()
Expand Down Expand Up @@ -127,23 +127,23 @@ def publish_snapshot(branch, version):
if dirty_gradle:
git_add(path=GRADLE_PROPERTIES_PATH)
git_commit_and_push(branch=branch, version=version)
do_bitrise_request(build_params={'branch': branch, 'workflow_id': 'scheduled'})
do_circleci_request(branch=branch)

def publish_beta(branch, version):
click.echo('Publishing beta from branch: %s (version: %s).' % (branch, version))
dirty_gradle = update_current_version(file_path=GRADLE_PROPERTIES_PATH, file_var=GRADLE_TOKEN, version=version)
if dirty_gradle:
git_add(path=GRADLE_PROPERTIES_PATH)
git_commit_and_push(branch=branch, version=version)
do_bitrise_request(build_params={'branch': branch, 'workflow_id': 'scheduled'})
do_circleci_request(branch=branch)

def publish_final(branch, version):
click.echo('Publishing final release from branch: %s (version: %s).' % (branch, version))
dirty_gradle = update_current_version(file_path=GRADLE_PROPERTIES_PATH, file_var=GRADLE_TOKEN, version=version)
if dirty_gradle:
git_add(path=GRADLE_PROPERTIES_PATH)
git_commit_and_push(branch=branch, version=version)
do_bitrise_request(build_params={'branch': branch, 'workflow_id': 'scheduled'})
do_circleci_request(branch=branch)

#
# Utils
Expand All @@ -160,26 +160,24 @@ def execute_call(command):
abort_with_message('Command failed: %s' % command)

#
# Bitrise
# CircleCI
#

def get_bitrise_api_token():
bitrise_api_token = os.environ.get(BITRISE_API_TOKEN_ENV_VAR)
if not bitrise_api_token:
abort_with_message('You need to set the BITRISE_API_TOKEN_MAS environment variable.')
click.echo('Found Bitrise API token.')
return bitrise_api_token

def do_bitrise_request(build_params):
data = {
'hook_info': {'type': 'bitrise', 'api_token': get_bitrise_api_token()},
'build_params' : build_params}
click.echo('Bitrise request data: %s' % json.dumps(data))
def get_circleci_api_token():
circleci_api_token = os.environ.get(CIRCLECI_API_TOKEN_ENV_VAR)
if not circleci_api_token:
abort_with_message('You need to set the CIRCLECI_API_TOKEN environment variable.')
click.echo('Found CircleCI API token.')
return circleci_api_token

def do_circleci_request(branch):
url = URL_CIRCLECI + branch
params = {'circle-token': get_circleci_api_token()}
click.echo('CircleCI request to %s (params: %s)' % (url, json.dumps(params)))
click.confirm('\nDo you want to start a build?', abort=True)

r = requests.post(URL_BITRISE, data=json.dumps(data))
click.echo('- Bitrise response code: %s' % r.status_code)
click.echo('- Bitrise response content: %s' % r.text)
r = requests.post(url, params=params)
click.echo('- CircleCI response code: %s' % r.status_code)

#
# Git
Expand Down

0 comments on commit 5e11335

Please sign in to comment.