2014年9月10日水曜日

Android CI環境構築

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 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...