GitHub Actionsのyamlをローカルで実行する

GitHub Actionsのデバックを楽にするactコマンド

自動でテストやデプロイを行うとき、Travis CIやCircle CI、Bitriseなどのサービスを利用していることも多いと思います。ローカルでJenkinsを使っているというところもあるかもしれません。

以前はこう言ったサービスを使うことが多かったのですが、GitHubでタスクランナーの機能がGitHub Actionsとして2020年に追加されました。このGitHub Actionsの登場で上記のような外部サービスを利用せずに自動テストや自動デプロイをGitHub上で行うことができるようになりました。

ただ、Cirlce CI等を使っていた時も同様でしたが、ジョブの定義のyamlのデバックのため、何回もcommitして四苦八苦するということが多くあり、その際にCommitのログが汚れてしまうということがありました。

GitHub Actionsの場合は act というコマンドでローカルで動作を確認することができます。ローカルで動作確認を行うことで、一通りの動作確認が終わった後にpushすれば良いのでコミットログも汚れませんし、早くyamlの動作確認を終わらせることができますので、導入や使い方を詳細します。

続きを読む

GitHub Actionでnpm testを実行する時のテスト成否の返し方

非同期処理のテスト成否の返し方

GitHub Actionsでstepで何か処理を実行した時、失敗したらエラーが表示され、全てのstepが成功したら処理終了が表示されます。この場合、stepで定義した処理の実行結果によって成否が判断されるため、非同期の処理をテストしたい場合はエラーを投げてあげる必要があります。

続きを読む

GitHub ActionsでFirebase functionsのテストを自動実行する

最近Firebaseを利用して開発する機会が多いため、今回もFirebaseネタです。Firebase Functionsで自動テストする方法を紹介しようと思います。

通常Firebase Functionsでテストを行う場合は、ざっくりとした手順で

  1. 開発している環境でFirebase Emulatorを起動
    • firebase emulators:start --inspect-functions というコマンドを実行
  2. functionsディレクトリで npm test を実行 という感じだと思います。

ローカルで行うのはそこまで大変ではないのですが、CI上で行う場合はEmulatorを設定したり、npm installでmoduleをインストールしたりなど割と大変な環境設定が必要と思われてきました。 先日Firebase summitで割と楽に設定する方法が紹介されていたので、改めて紹介しておきます。

続きを読む

npmライブラリ開発時の公開前のテスト方法

先日初めてnpmでライブラリを公開してみました。感想としては「意外とそんなに難しくなかった」というところです。単純にGitHubでソースコードを公開するだけより、多くの人に使ってもらえそうなのはもちろんのこと、アプリのようにダウンロード数を確認できるので何より励みになります。

私はAndroidやiPhoneのアプリを個人開発して公開したことがありますが、簡単なアプリでもデザインを行ったりしているとそこそこ時間がかかります。アプリのLPサイトの用意やストアに公開するための文言もそこそこ大変です。

続きを読む

Javascriptで非同期処理を同期処理にする方法

最近、firebase-idtoken-getterというライブラリを公開したのですが、Firebase SDKおよびFirebase Admin SDKの関数を利用する必要がありました。

Firebase SDK、Firebase Admin SDKから提供されるインターフェースは非同期の関数ですが、コールバック地獄を避けるためSDKから提供される関数を同期的に扱いたいというシーンです。

Javascriptを使う上で(個人的には)非常に分かりにくいと感じる同期処理について、自分の書き方を紹介します。

続きを読む

Firebaseを使ったサービスでidTokenを自動で取得する方法

Firebase Authorizationを使って開発している時に、idTokenを取得したいと思う時がありました。 普通はFirebase SDKでログインすればidTokenは取得できますが、例えばCIや単体テストなどでわざわざ手動でログインしてidTokenを取得するのはめんどくさいものがあります。

調査したところ、ややわかりにくいですが、実現方法はFirebaseのマニュアルのページに載っていました。
マニュアルに載っている下記の3つの手順

を実行するとidTokenを取得することができます。

続きを読む