Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

Update release script to support CircleCI builds #8950

Merged
merged 2 commits into from
May 11, 2017
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 23 additions & 25 deletions platform/android/scripts/release.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
'''
Utility to schedule SDK builds in Bitrise.
Utility to schedule SDK 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/79cdcbdc42de4303#/code -> API token
BITRISE_API_TOKEN_ENV_VAR = 'BITRISE_API_TOKEN'
# You can add your API token on https://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 @@ -62,8 +62,8 @@
FABRIC_PROPERTIES_PATH = '%s/src/main/resources/fabric/com.mapbox.mapboxsdk.mapbox-android-sdk.properties' % MAPBOX_GL_ANDROID_SDK_PATH
FABRIC_TOKEN = 'fabric-version='

# Bitrise
URL_BITRISE = 'https://www.bitrise.io/app/79cdcbdc42de4303/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 @@ -129,15 +129,15 @@ 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))
Expand All @@ -149,7 +149,7 @@ def publish_final(branch, version):
git_add(path=FABRIC_PROPERTIES_PATH)
if dirty_gradle or dirty_fabric:
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 @@ -166,26 +166,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 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