Treasure Advent Calendar 2019 7日目の記事です。
iOS向けライブラリを開発していたところ、バージョンを更新する際に毎回ローカルの環境で
pod trunk push Hoge.podspec
をやっていたのですが、毎回やるのは面倒だということで自動でデプロイされるようにしました。
仕組みを作ろうとした際にハマったりしたので今後やろうとしている方の参考になると幸いです。
トークンを取得する
自作のCocoapodsライブラリをデプロイするためには環境変数にトークンを設定する必要があります。
ユーザー情報を登録する
pod trunk register
コマンドを使用してユーザー情報を登録します。
コマンドを打つとメールが届くので、メール内にあるリンクに飛び、アクティベーションします。
例
pod trunk register ry-itto@example.com
トークンをファイルから取得する
ユーザー情報を登録したらローカル環境の ~/.netrc
に以下のような情報が追加されていると思います。この情報の中の password
がトークンに当たります。
machine trunk.cocoapods.org
login ry-itto@example.com
password jaeiwghwe83hlagw8
リポジトリに登録する
設定画面を開いたら、その中の"Secrets" を開きます。
そしてその画面の中の"Add a new secret"を押し、
NameにCOCOAPODS_TRUNK_TOKEN
, Valueに先ほど取得したトークンを入れます。
これでリポジトリへのトークンの登録は完了です。
このようになっていればOKです。
ワークフローの設定ファイルを作成する
完成形は以下です。それぞれ部分ごとに説明をしていきます。
※ ワークフローの構文
name: pod-deploy
on:
push:
tags: v*
jobs:
build:
runs-on: macOS-latest
steps:
- uses: actions/checkout@v1
- name: Lint
run: pod spec lint
- name: Deploy
env:
COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN }}
run: pod trunk push Hoge.podspec
処理を行うタイミングを設定する
v
から始まるタグが作成された際に処理が行われるように設定。
on:
push:
tags: v*
行う処理を設定する
jobs:
build: # 'build' という名前でジョブを作成
runs-on: macOS-latest # GitHub Actionsで提供されているmacOSの最新版を使うように指定
steps:
- uses: actions/checkout@v1 # リポジトリの情報にアクセス
- name: Lint
run: pod spec lint # 作成したコードが正しいかチェック
- name: Deploy
env: # 環境変数に `COCOAPODS_TRUNK_TOKEN` を設定
COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN }}
run: pod trunk push Hoge.podspec
自作したライブラリを公開するために COCOAPODS_TRUNK_TOKEN
を環境変数に設定する必要があります。ここには序盤でリポジトリのSecretsに設定したトークンを設定します。
なお、リポジトリのSecretsに設定した値は secrets.設定したName
で取得できます。
終わりに
思いの外簡単に自動デプロイの仕組みを作成することができました。
GitHub ActionsはPublicなリポジトリなら無料で利用できるため、ぜひ試してみてください。
おまけ
https://github.com/ry-itto/QiitaAPIKit
今回のワークフローを作成するにあたって自動化したライブラリです。フィードバックなどあればいただけるとありがたいです!