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を作り放題です。これで誰にも作業を中断されない…!!!
この記事がお役にたちましたらシェアをお願いします