AndroidのCI環境を構築することになったのでメモ
目的
jenkinsでgitからcloneしてきたソースコードをgradleでビルドしてapkを出力する。
環境
- さくらVPS(cent os)
- GitLab
- android studio開発アプリ(gradle)
前提条件
以下の設定が終了している。
- apacheとjenkinsのinstallと起動
- javaのinstall環境設定
- android sdkのinstallと環境設定
- androidアプリ作成
.gitignoreファイルを作成
*.apk *.ap_ *.dex *.class bin/ gen/ local.properties .classpath .project proguard/ *.iml *.ipr *.iws .idea/workspace.xml .idea/tasks.xml .idea/libraries/ .gradle app/build/ .DS_Store
androidアプリのgitファイル作成
git init git add . git commit -m "first commit"
gitLabにandroidアプリのコードをpush
// remoteを追加 git remote add git@xxxxxxx---xxxxxxx // push git push -u origin master
- gitLabでjenkinsユーザーをプロジェクトにdeveloperとして追加する。
- jenkinsを立ち上げて接続
gradleのinstall
// 作業フォルダへ cd cd work/ // download sudo wget https://services.gradle.org/distributions/gradle-2.0-all.zip // 解凍 sudo unzip gradle-2.0-all.zip // フォルダの移動 sudo mv gradle-2.0 /usr/local/ // 環境変数にパスを通す echo 'export GRADLE_HOME=/usr/local/gradle-2.0' >> ~/.bash_profile echo 'export PATH=$PATH:$GRADLE_HOME/bin' >> ~/.bash_profile // 反映 source ~/.bash_profile // バージョン確認 gradle -v // OK Gradle 2.0
jenkinsを使わないで、gradleでandroidアプリのビルド実行できることを確認
// 作業フォルダへ cd cd work/ git clone git@xxxxxxx---xxxxxxx // プロジェクトフォルダの中へ cd jenkinsandroid // local.propertiesファイルを作成 vi local.properties // sdk pathを設定 sdk.dir=/usr/local/android-sdk-linux // gradlewファイルの権限を変更 chmod 777 gradlew // gradlew tasks実行 ./gradlew tasks // 種類を確認 // gradlew 実行 ./gradlew assembleDebug :app:assembleDebug BUILD SUCCESSFUL Total time: 31.966 secs // apkが作成されていることを確認する cd /home/{user}/work/jenkinsandroid/app/build/outputs/apk // ファイル一覧 ls -l
ビルドが成功したらもう一歩です。
jenkinsでgitからコードを取得してビルドする
// gradlewをjenkinsで実行できるようにする sudo chown -R jenkins:jenkins gradlew
jenkinsにアクセス
- 新規jobの設定
- プロジェクト設定
- jenkinsユーザーがgitLabからsshでソースを取得可能にする
- ソースコード管理とビルドのシェルの実行を設定
ビルドのシェルの実行を設定
// 権限 sudo chmod 777 gradlew // gradlew実行 sudo ./gradlew assembleDebug
上記のままだとjenkinsユーザーはsudoできないので、以下のように変更
visudo jenkins ALL=(ALL) ALL // ttyなし&パスワードなしに設定する # Defaults requiretty # tty無しの場合sudoさせない Defaults:jenkins !requiretty # ユーザjenkinsはtty無しでsudo可能 jenkins ALL=(ALL) NOPASSWD:ALL # ユーザjenkinsはパスワード無しでsudo可能
git clone後にlocal.propertiesがない場合(初回設定)は、フォルダに配置が必要
touch local.properties local.properties sdk.dir=/usr/local/android-sdk-linux
ワークスペースもjenkinsユーザーが読み書き実行できるようにする
/var/lib/jenkins/workspace/jenkinsandroid/app // build以下の権限を変更 sudo chown -R jenkins:jenkins build
ジェンキンスアプリ側でもworkspaceに出力ファイル名を記載してやる
// workspaceを設定 **
以上。全ての設定がうまくいっていればapkファイルが/var/lib/jenkins/workspace/jenkinsandroid/app/build/outputs/apkに出力されます。
あとは開発環境に応じたgradleの設定をしてやれば、様々なパターンのapkを作り放題です。これで誰にも作業を中断されない…!!!
0 件のコメント:
コメントを投稿