※ この記事は公開されてから1年以上経過しているため、情報が古い可能性があります。

まんまタイトルの通りです。(^ω^;)
AndroidのAPKはそこまで頻繁に更新もしていなかったので、以前は手作業で作成していました。
ただもういい加減、手作業でAPKを作成するのはあまりにもダサいので、「BitbucketのPipeLineでAndroidをデプロイしてみた」を参考に、PipelinesでAPKを作成することにしました(・∀・)

ここでは、pipelinesでAPKを作成し、Dropboxへアップロードする内容を記載します。
なので、jksをapp直下に置いて、signingConfigsをコリコリする等、assembleReleasedeで署名つきAPKを作成する方法は色んな記事がありますので、そちらを参考にしてください<(_ _)>
ということで、実際のは以下です。

bitbucket-pipelines.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
image: uber/android-build-environment:latest

pipelines:
  branches:
    master:
      - step:
          script:
              - mkdir -p "$ANDROID_HOME/licenses"
              - echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" >> "$ANDROID_HOME/licenses/android-sdk-license"
              - echo -e "d56f5187479451eabf01fb78af6dfcb131a6481e" >> "$ANDROID_HOME/licenses/android-sdk-license"
              - echo -e "\nd975f751698a77b662f1254ddbeed3901e976f5a" >> "$ANDROID_HOME/licenses/intel-android-extra-license"
              - echo y | android update sdk --no-ui -a
              - bash gradlew clean assembleRelease
              - bash dropbox.sh

本来デプロイ作業として動くdropbox.shは別stepで切るべきでしょうが、まぁこちらはサンプルということで大目にみてください…
要するにAPK作ってDropboxへアップロードするシェルを呼ぶだけです。

dropbox.sh

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash

curl -X POST https://api.dropboxapi.com/2/files/delete \
    --header 'Authorization: Bearer ${access_token}' \
    --header 'Content-Type: application/json' \
    --data '{"path":"/module/${apk-name}.apk"}'

curl -X POST https://content.dropboxapi.com/2/files/upload \
    --header "Authorization: Bearer ${access_token}" \
    --header "Dropbox-API-Arg: { \"path\": \"/module/${apk-name}.apk\", \"mode\": \"add\", \"autorename\": true, \"mute\": false }" \
    --header "Content-Type: application/octet-stream" \
    --data-binary @app/build/outputs/apk/release/app-release.apk

こんな感じですね♪
access_tokenやapk-nameは適宜読み替えてください。

最初のcurlは、既存モジュールの削除です。
もちろんリネームしてもOKです(^^)
そして2つめのcurlでアップロードを実行します。

本来はDeploy build artifacts to Bitbucket Downloadsを参考に

とするのが正しい手順かと思いますが、AndroidのAPKの場合、Google Play Consoleからアップしないといけないので、簡単にダウンロードできる環境を用意したいと考え、この方法を取りました(・∀・)
(知らないだけで、APIで公開までできるのかもしれませんが…)
なお、Deploy build artifacts to Bitbucket DownloadsAPIドキュメントはこちらです(*・ω・)ノ

実は当初、日本にある自鯖にscpでアップロードしようと考えていました。
ただBitbucketのサーバーは日本にないようで、アップロードが遅い遅い…
scpだけで無料時間枠を使い切ってしまいそうだったので、各国にあるDropboxを経由することで時間の削減を図りました!
これはサーバーへのデプロイにも応用できるかもしれませんね♪

また便利な方法を思いついたら更新したいと思います(`・ω・´)