【Android】AARをAzurePipelinesで作成したい
この記事は「いのべこ(富士通システムズウェブテクノロジー)Advent Calendar 2020」の6日目の記事です。
記事の掲載内容は私自身の見解であり、所属する組織を代表するものではありません(お約束)。
ゴール
ひとつのリポジトリという謎制約で、AzurePipelineを使ってAndroidのAPKとかAARを自動で作る
AzureDevOps
Projectを新しくつくって、きれいなAzureDevOpsを用意した。
あ、これprivateリポジトリです。publicにすればよかったとあとで気づいた。
初回コミット
appというディレクトリとpartsというディレクトリの中に、それぞれのプロジェクトを格納しておく。
今回、appディレクトリではAPKを作成し、partsディレクトリではAARを作成する
ちなみにpartsディレクトリ配下には、partsというAndroidライブラリーモジュールを作成している。
ややこしい名前つけちゃったね
parts用のパイプラインを作る
■ ゴール
partsモジュールをRelease用にビルドして、aarを作成。
作成したaarはパイプライン上のArtifactとして登録する。
■ ゴールのための手段
- root/pipeline-parts.ymlを作成する
- root/pipeline-parts.ymlをパイプラインとして登録する
- パイプラインを実行してみる
■ 詳細
1. root/pipeline-parts.ymlを作成する
ファイル名は分かりやすければ何でもよい。
# 対象 trigger: # ブランチ branches: include: - master - develop # ディレクトリ paths: # 対象 include: - parts # 対象外 exclude: - app # このパイプラインで使う定数 variables: target_project: parts target_module: parts stages: - stage: Release_parts # このstageの起動条件。masterブランチであれば、起動する。それ以外ならスキップする condition: eq(variables['Build.SourceBranch'], 'refs/heads/master') # AARを作るためのJobを組み立てる jobs: - job: Build_AAR pool: vmImage: 'vs2017-win2016' # このJobで使う定数 variables: job_env: Release job_variant: Release steps: # gradlew :parts:assembleReleaseを実行してAARを作成するタスク # assembleReleaseの前にモジュール名を付けることで、特定のモジュールを指定する - task: Gradle@2 displayName: 'gradlew :$(target_module):assemble$(job_variant)' inputs: gradleWrapperFile: '$(target_project)/gradlew' workingDirectory: '$(target_project)' tasks: ':$(target_module):assemble$(job_variant)' publishJUnitResults: false jdkVersionOption: 1.8 # 作ったAARを作業場所からArtifactにコピーするタスク - task: CopyFiles@2 displayName: 'Copy Files to: $(build.artifactstagingdirectory)' inputs: # コピー元 SourceFolder: '$(system.defaultworkingdirectory)' # コピー対象 Contents: '**/$(target_module)-release.aar' # コピー先 TargetFolder: '$(build.artifactstagingdirectory)' condition: succeededOrFailed() # Pipeline上のArtifactとして登録するお作法タスク - task: PublishBuildArtifacts@1 displayName: 'Publish Artifact: drop' inputs: PathtoPublish: '$(build.artifactstagingdirectory)' condition: succeededOrFailed()
2. root/pipeline-parts.ymlをパイプラインとして登録する
Pipeline>Create Pipeline>Azure Repos Git>「kotlin」>Existing Azure Pipelines YAML File
作成済みのYAMLを選べとポップアップが出てくるので、
masterブランチにあるpipeline-parts.ymlをパイプラインとして登録する。
3. パイプラインを実行してみる
Runを押すだけ!あら簡単
結果
作成したparts-release.aarはArtifactに登録されてる。成功!