Airi is android build script on Jenkins.
Jenkins用Androidビルドスクリプト 愛理
- AndroidのカスタムROMをJenkins上でビルドするためのスクリプトです。
- lindwurm/madokaをベースに、Jenkinsの変数で解決、設定を扱いやすく変更した物です。
- ですので、Jenkinsの変数を正しく設定しないと動きません。
repo sync
は別のjenkinsの別プロジェクトで解決するようにしたため、このスクリプトでrepo syncは不可能です。
pre_process.sh
前処理を実施するスクリプト- 成果物を保存するディレクトリを作成
- toot
build.sh
実際にビルドをするスクリプトmake clean
- ccacheのキャッシュ量設定
- ビルド
post_process.sh
後処理を実施するスクリプト- 成果物のコピー
- log
- rom zip
- rom zip md5sum
- changelog
- ビルド時間の計算
- pushbulletへの通知
- toot
- 成果物のコピー
BUILD_TIMESTAMP
Build Timestampに依存。
Jenkinsの管理
→システムの設定
→Build Timestamp
を有効にし、パラメータを以下の様に設定する。- Timezone
UTC
- Pattern
yyyyMMdd_HHmmss
- Timezone
START_BUILD_DATETIME
BUILD_TIMESTAMP
と同様にBuild Timestampに依存。
Build Timestamp
の設定にExport more variables
を追加して、パラメータを以下の様にする。- Name
START_BUILD_DATETIME
- Pattern
yyyy-MM-dd HH:mm:ss
- Shift timestamp
- 0 days 0 hours 0 minutes
- Name
PUSHBULLET_TOKEN
Mask Passwordsに依存。
このプラグインを追加後、プロジェクト→設定
→ビルドのパラメータ化
のパラメータの追加
にパスワード
が現れるので追加する。
デフォルト値
にPushbulletで発行したAPI keyを入力しておく。
BUILD_DIR
型:テキスト または 選択
ビルドディレクトリの指定。ビルドするROMのファイルを指定する。DEVICE
型:テキスト または 選択
ビルドするデバイスのコードネームを指定する。TOOT
型:真偽値
mastodonにtootするかしないか設定する。CCACHE_DIR
型:テキスト
cchacheの参照先を設定する。CCACHE_CAP
型:テキスト
ccacheのキャッシュ容量を指定する。LOG_DIR
型:テキスト
ログファイルの出力先を指定する。ROM_DIR
型:テキスト
ROMのzip出力先を指定する。MAKE_CLEAN
型:真偽値
ビルドする前にmake clean
を実行するか指定する。BUILD_TYPE
型:選択 または テキスト
FlokoROMをどのタイプでビルドするか指定する。- UNOFFICIAL
- OFFICIAL
- EXPERIMENTAL
- 別に上記以外の文字列を好きに入れて大丈夫(いいのか?)
TOOT_TAG
型:テキスト
tootするときのタグを指定する。#
からはじめる
例:#AndroidBuildBattle
pipeline {
agent {
label 'master'
}
stages {
stage('前処理') {
steps {
dir('/your/script/dir/airi'){
sh './pre_process.sh'
}
}
}
stage('Build') {
steps {
script {
dir('/your/script/dir/airi'){
sh './build.sh'
}
}
}
}
}
post {
success {
dir('/your/script/dir/airi'){
sh './post_process.sh true'
}
sh 'ln -fs ${ROM_DIR}/${DEVICE} ./out_tmp'
archiveArtifacts "out_tmp/*-${DEVICE}-${BUILD_TIMESTAMP}-${BUILD_TYPE}.zip"
archiveArtifacts "out_tmp/*-${DEVICE}-${BUILD_TIMESTAMP}-${BUILD_TYPE}.zip.md5sum"
archiveArtifacts "out_tmp/changelog/changelog_*-${DEVICE}-${BUILD_TIMESTAMP}-${BUILD_TYPE}.txt"
sh 'unlink out_tmp'
}
failure {
dir('/your/script/dir/airi'){
sh './post_process.sh false'
}
}
}
}
MIT
- 爪楊枝
- Mastodon: @[email protected]
- Github: @tumayouzi
- Website: www.tooth-pick.xyz