LoginSignup
26
30

More than 5 years have passed since last update.

Jenkinsと決別

Last updated at Posted at 2016-12-19

これは マイネットエンターテイメント Advent Calendar 20日目の記事です。

今年の1月からマイネットエンターテイメントでネイティブエンジニアをしております!
今回は自宅サーバのJenkinsを他社サービスに乗り換えるお話です。

自宅サーバの運用を辞めた

セキュリティの事を考えたり
外出先からVPN+SSHで自PCのターミナルを叩きたい事も減ったので
自宅サーバの運用を辞めることにしました。

しかし頻度は高くないものの、たまに趣味で個人開発をしたりしたい!
という時にCI環境が無いのはやっぱり面倒だと気づいた。

今使用しているメインPCが MacBook 2015 という

  • ビルド遅い
  • USBポートも少ない

という環境なので、基本的にデバイスをPCに挿していない状態です。

プライベート環境から他社サービスへ移行

プライベート環境で運用できるものから、他社サービスに移行する。みたいなのは企業でもよくありますよね。
構築自体は楽でも継続運用していく上での保守、セキュリティの維持を考えるとそのコストは馬鹿になりません。

ソースコード管理、プロジェクト進行管理ツール、チャット/メールサーバ等様々です。

Jenkins自体も複数プロジェクト間でリソースを共有する事における危うさや管理の面倒な部分が多々あり
こういう部分を切り分けたいと考える時が来るかもしれません。事前に乗り換えを体験しておきたい。

CIサービスを選ぶ

有名所だと上記2点をよく聞きますが、
今回選定したのは Bitrise です。

  • 大体どこでもやりたい事ができそうだった
  • 実際に触ってみて良かった
  • 趣味で使うには無料枠でなんとかなりそうだった

最終的にやりたい事

(とりあえず面倒そうなiOS)

  • Pushした際にWebHookでビルド開始
  • iOSアプリのビルド
  • iOSアプリの成果物をDeployGateにアップロード

Xcodeで適当にプロジェクトを作成する

  • ExampleApp

Gitリポジトリ化しておく

Bitbucketにリモートリポジトリ作成

create_repo.png

ローカルリポジトリのPush

git remote add origin ssh://git@bitbucket.org/masanorythm/exampleapp.git
git push -u origin master

Bitriseの設定

※ 会員登録は端折ります

Dashboardから Add new app します。

create_proj_01.png

Bitbucketに作成した ExampleApp リポジトリを選択

SSH鍵の作成

create_proj_02.png

作成された公開鍵を Bitbucket に登録します。
GitHubも恐らく同じ手順でしょう。

プロジェクトのスキャン

create_proj_03.png

自動的にどのタイプのプロジェクトか、異常は無いか等確認してくれます。
とりあえず masterブランチしかないのでそのままで。

create_proj_04.png

デフォルト状態だとワーニングが出ました。とりあえず無視してあとで直します。

create_proj_05.png
Xcodeの Manage Schemes でこんな感じで多分おk

ビルド設定

create_proj_06.png

プロジェクトファイル、スキーム、stackを設定します。選択肢が無い場合は自動で設定してくれます。
古いXcodeが必要な場合はstackを変更。用意されているXcodeは6.4が下限のようです。

WebHook

create_proj_07.png
とりあえず Register しときましょ
全てのPushに対してデフォルトのワークフローを実行してくれるようになります。

以上で初期設定が完了し、自動的にビルドが開始されます。

ワークフローの修正

workflow_modify.png

ワークフローを初期状態から書き換えました。
Xcode Archive for iOS を入れて、無駄なものを削除しただけです。中身はいじっていません。

  • SSH鍵の初期化
  • リポジトリクローン
  • 証明書の設定
  • ipaファイルの作成

まだ、証明書を設定していないのでipaは作成できない状態です。
今回は Xcode8系で 空プロジェクトを作ったので初期状態で Automatic signing が有効化されています。
Automaticになってから、逆に複雑になっている気がしますが慣れていきたいのでそのままで。

codesigndoc

https://github.com/bitrise-tools/codesigndoc
codesigndoc を使って、
そのプロジェクトがどの証明書とプロビジョニングプロファイルが必要かをワンライナーで教えてくれます。

cd project_path/
bash -l -c "$(curl -sfL https://raw.githubusercontent.com/bitrise-tools/codesigndoc/master/_scripts/install_wrap-xcode.sh)"
  • .xcodeproj or .xcworkspace のファイル名を入力
  • スキーム一覧が出るので数字を入力

Required Identities/Certificates
Required Provisioning Profiles

で表示された、証明書とProvisioning ProfileをBitriseにセットしてあげましょう。

cert.png

一度ビルドを実行し、成功が確認できれば証明書問題は完了。

DeployGateにアップロード

env.png
Xcode Archive for iOS 完了時の変数です。
クラッシュレポートサービス使う時は、dSYMアップロードも組込むと良いですね。
今回は BITRISE_IPA_PATH を使います

DeployGate用のステップは無いようなのでスクリプトで代用します。

image

ビルドステータスを表示

image

Dashboardでステータス画像をクリックすると、表示方法を教えてくれます。
README.mdに追加してコミットしておきます。

ついでに、ソースコードと関係ないコミットで
WebHookでビルドを実行したくない場合にはコミットメッセージに

  • [ci skip]
  • [skip ci]

を追加して下さい。
今回はそのケースに該当するので、テストしてみます。

git add README.md
git commit -m "Add README.md [ci skip]"
git push

image
READMEにビルドステータスの追加も確認できました。

WebHookをカスタマイズ

image

プッシュ/プルリク/タグ をトリガーとして指定のワークフローを実行させる事が可能です。
ブランチ指定にはアスタリスクを用いたワイルドカード指定が可能です。

後は適当に開発して、バシバシプッシュするだけで
いつでも最新のアプリがDeployGateに配信されます。

個人開発おすすめ

好きな事に打ち込むと、覚えが良いです。
会社で好きな事ができなかった時のストレス解消にもなります。

日頃の業務を効率化し、早く帰ることが出来たならば試してみてはいかがでしょうか!
以上になります!


次回はnohamaさんです。よろしくお願いします!

26
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
30