Skip to content

Latest commit

 

History

History
156 lines (133 loc) · 5.02 KB

README.md

File metadata and controls

156 lines (133 loc) · 5.02 KB

Airi

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

Jenkinsに設定する変数

プラグインに依存して設定する物

  • BUILD_TIMESTAMP
    Build Timestampに依存。
    Jenkinsの管理システムの設定Build Timestampを有効にし、パラメータを以下の様に設定する。
    • Timezone UTC
    • Pattern yyyyMMdd_HHmmss
  • 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
  • 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 scriptの例

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

作者