※ この記事は公開されてから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を参考に
- pipelinesでBitbucketにアップ
- サーバー側でBitbucketからダウンロード
- デプロイ
とするのが正しい手順かと思いますが、AndroidのAPKの場合、Google Play Consoleからアップしないといけないので、簡単にダウンロードできる環境を用意したいと考え、この方法を取りました(・∀・)
(知らないだけで、APIで公開までできるのかもしれませんが…)
なお、Deploy build artifacts to Bitbucket DownloadsのAPIドキュメントはこちらです(*・ω・)ノ
実は当初、日本にある自鯖にscpでアップロードしようと考えていました。
ただBitbucketのサーバーは日本にないようで、アップロードが遅い遅い…
scpだけで無料時間枠を使い切ってしまいそうだったので、各国にあるDropboxを経由することで時間の削減を図りました!
これはサーバーへのデプロイにも応用できるかもしれませんね♪
また便利な方法を思いついたら更新したいと思います(`・ω・´)