Githubアクションパートによる現代のAndroidアプリ配布 - 私
写真でBernd Dittrich on Unsplash
ヘイフォークス👋まず第一に、皆さんが無事であることを願っています.そうしたら、あなたのビルド/ディストリビューションサイクルについて質問しましょう.
これは、Githubアクションで現代のAndroidディストリビューションの2部シリーズです.私はあなたがGithubアクションを介してアプリケーションの配布を自動化するのを助けるつもりです.それで始めましょう.
This blog assumes that you are well versed with GitHub Actions. If not then I highly recommend exploring it and come back.
この部分では、内部のアプリケーションの共有を介して内部アプリケーションの配布を自動化する方法を見ていきます.
内部アプリの共有を介して内部アプリケーションの配布を自動化
Internal App Sharing あなたが内部のAB/APKをあなたのQAと他のステークホルダーと共有することができるプレー・コンソールの優れたツールです.アットBookMyShow 私たちは共有機能を構築するためのそれを使用して、統合されたビルドをQA.全体の経験は、それがwhitestedメールに制限されている以外は、プレイストアからアプリをインストールするのと同じくらい良いです.これ以上のサイドローブを必要とし、十分に良いされていない場合は、あなたのワークフローには、内部のアプリケーションの共有(IAS)にAPK/AABをアップロードしたら、スラックでそれを共有するように統合することができます.
高いレベルで、我々はこれを見ています
SLACKの前のステップからの共有リンク.
ワークフローを作りましょう.
あなたのワークフローをトリガするイベントを決定する必要があります.それは特定の枝へのプッシュイベントであるかもしれません、あるいはsome other event . 大部分のケースでは、それはあなたが内部の構築をQAに共有しているところから枝へのPushイベントです.まず設定しましょう.
name: Build, Upload to IAS and share on slack.
on:
push:
branches:
# Specify branch from where you are sharing build
- [branch_name]
では、先に述べたビルドステップの設定方法を見てみましょう.
jobs:
build:
name: Building app
runs-on: ubuntu-latest
steps:
- name: Checking out branch
uses: actions/checkout@v2
with:
# Specify branch from where you are sharing build
ref: '[branch_name]'
- name: Settting up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Runing build command
# Run your own gradle command to generate build.
run: ./gradlew bundleRelease
- name: Uploading build
uses: actions/upload-artifact@v2
with:
name: bundle
path: app/build/outputs/bundle/release/app-release.aab
ご覧のように、ビルドジョブには4つのタスクがあります.このジョブは、Linuxマシンのインスタンスで動作します.あなたが新しいマシンのブランチをチェックアウトする方法と同じように、ここで同じプロジェクトを設定するときにも、ビルドを作成したい場所からブランチをチェックアウトする必要があります.最初のステップでは、カスタムアクションを使用しますactions/checkout@v2
. 次に、プロジェクトをコンパイルできるようにJDKを設定する必要があります.番目のステップはカスタムアクションを使用しますactions/setup-java@v1
.
今、仮想Linuxインスタンスはすべてのセットアップで準備ができていますGradleコマンドを実行してバンドルを作成する時です(バンドルを使用していない場合にもAPKをビルドできます).次のステップでは、バンドルファイルを作成します.最後に、最後のステップは、私たちが次の仕事の後でそれにアクセスするように、我々の生成された束をアップロードします.また、我々はアップロードされる我々の束へのファイル経路に言及しました.ジョブを横切ってファイルを共有する場合は、どのようにそれを達成することができます.カスタムアクションactions/upload-artifact@v2
.
それで、我々は我々のワークフローを途中で通しています、そして、これまで、我々は我々が我々の次の仕事でそれを使うことができるように、我々の束を構築して、保管しなければなりませんでした.
次の仕事に移りましょう.
私は、Kitkatが私にこれを支払わないと約束します🤞
レディ?それでは、動きましょう!畝
最後の仕事は非常に複雑なので、我々は段階的にそれを中断します.
各ジョブはLinuxマシンの異なるインスタンスで動作します.私たちの前の仕事をどのように設定したか、この仕事もLinuxのインスタンスで実行されます.
下記の行番号3に特別な'ニーズ'タグを通知します.このジョブが指定した名前に依存していることをgithubに伝えます.私たちの場合は、ビルドジョブです.
最後の仕事は3歩.まず、前のジョブの最後のステップに格納したビルドをダウンロードします.我々は、我々が'束'を与えた名前をダウンロードしたいアーティファクトを参照しています.
upload_to_internal_app_sharing:
name: Uploading build to IAS
needs: build
runs-on: ubuntu-latest
steps:
- name: Downloading build
uses: actions/download-artifact@v2
with:
name: bundle
一度我々は内部のアプリケーションの共有にアップロードする時間がバンドルを持っている.また、それは恥知らずなプラグのための時間です🙈
BookMyShowと私の仲間のエンジニアは、内部のアプリケーションの共有にビルドをアップロードすることができますカスタムgithubアクションを書いた.それについて詳しく調べる👇
サマルViradiya
/
内部アプリ共有アクション
アクションコンソールで内部のアプリケーション共有にAab / APKをアップロードするGithubアクション
我々が今まで見てきた他のカスタムアクションと同様に、我々は内部のアプリケーションの共有にビルドをアップロードするためにこれを使用されます.
このアクションは、IASにビルドをアップロードする3つのことが必要です.
name: Build, Upload to IAS and share on slack.
on:
push:
branches:
# Specify branch from where you are sharing build
- [branch_name]
jobs:
build:
name: Building app
runs-on: ubuntu-latest
steps:
- name: Checking out branch
uses: actions/checkout@v2
with:
# Specify branch from where you are sharing build
ref: '[branch_name]'
- name: Settting up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Runing build command
# Run your own gradle command to generate build.
run: ./gradlew bundleRelease
- name: Uploading build
uses: actions/upload-artifact@v2
with:
name: bundle
path: app/build/outputs/bundle/release/app-release.aab
upload_to_internal_app_sharing:
name: Uploading build to IAS
needs: build
runs-on: ubuntu-latest
steps:
- name: Downloading build
uses: actions/download-artifact@v2
with:
name: bundle
アクションは3出力を吐き出します
downloadUrl
- アップロードされたアーティファクトのダウンロードURL.certificateFingerprint
- 証明書のSHA 256指紋は、生成されたアーティファクトに署名するために使用されます.sha256
- アーティファクトのSHA - 256ハッシュ - name: Uplaoding to IAS
id: ias
uses: sagar-viradiya/[email protected]
with:
# Your service account JSON GitHub secret
serviceAccountJsonPlainText: ${{ secrets.[your-github-service-acc-json-secret] }}
# Your package name
packageName: '[your-package-name]'
aabFilePath: 'app-release.aab'
次のステップでは、通知しますdownloadUrl
スラックの上のステップからの出力.また、カスタムアクションを使用してrtCamp/[email protected]
. 次のように述べます.downloadUrl
前のステップからの出力. - name: Sharing on slack
uses: rtCamp/[email protected]
env:
# Your slack webhook GitHub secret
SLACK_WEBHOOK: ${{ secrets.[your-slack-webhook] }}
# Slack channel where you want to notify
SLACK_CHANNEL: [your-channel]
SLACK_USERNAME: "JARVIS"
SLACK_TITLE: "Internal testing build"
SLACK_MESSAGE: ${{ steps.ias.outputs.downloadUrl }}
ウラ!内部のアプリケーションの共有を介してビルドと配布を自動化するためのワークフローは準備ができています!フルワークフローの要点はこちら👇
< div >
次の1つでは、あなたのプロダクションリリースを自動化する方法を模索します.p >
パート2で会いましょう👋
スティセーフ!p >
Thanks for proofreading this.
Reference
この問題について(Githubアクションパートによる現代のAndroidアプリ配布 - 私), 我々は、より多くの情報をここで見つけました https://dev.to/sagarviradiya/modern-android-app-distribution-with-github-actions-part-i-5ppテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol