Gmail Filter as Code

@yamamoto_febc さんのブログ記事 で、jessfraz/gmailfilters というツールを知りました。なんでも、GmailのフィルタをTOMLで管理するツール、とのこと(実際の使用例などはkakakakakkuさんの記事 で紹介されています)。 それは素敵っぽい、ということで触ってみたところ、実際良い物っぽい感じはあったものの、TOMLというのが(個人的に)つらいし、releasedなバージョンではexportができない(機能自体はmasterにあるものの、一年前に機能開発されてからリリースが打たれていない、という点がちょっと不安)という二点が気になりました。 特にTOMLはどうにも好きになれず、やはりYAMLで書きたい、という気持ちが強かった+GWの自由研究が決まらなかったので自前で書き直し、これをGmail as Code (今はfilterしか管理できないけど、他の設定も管理できるようにしたい)からgmac と名付けました。 YAMLで設定したい — nasa9084@某某某某(0x1b) (@nasa9084) April 27, 2020 GMaC - Gmail as Code 大枠の挙動としては、jessfraz/gmailfiltersとそれほど変わりません。Gmail APIをgoogle.golang.org/api/gmail/v1 を使用して叩いているのも同じです。 jessfraz/gmailfiltersと比較して、違う点として次の様なものがあります: TOMLではなくYAMLで設定を記述する Gmail Web UIに比較的近い設定項目 jessfraz/gmailfiltersも実装しているArchiveやDeleteなどはもちろん実装 条件/アクションを個別に設定する形にした jessfraz/gmailfiltersみたいに全部まとまってるとわかりにくくない? larger_thanやsubject、has_attachmentといった条件も追加 starやimportant、category(私は使ってないけど)といったアクションも追加 OAuthの際に認証/認可ページを自動で開き、OAuth callbackも受ける jessfraz/gmailfiltersはURLと、OAuth tokenをコピペする必要がある credentials.jsonおよびtoken.json (OAuthの認証ファイル)を特定の場所に置き、そこから読み込む jessfraz/gmailfiltersは毎回ファイルパスを指定する必要がある kubectl-likeなサブコマンド配置 get/applyが個別に行え、(k8sに慣れている人は)比較的なじみやすいはず jessfraz/gmailfiltersはオプションフラグで挙動を変える方針っぽい CIで使いやすい(と思う) credentials.jsonを標準入力から読める OAuth refresh tokenを環境変数で指定できる jessfraz/gmailfiltersはファイルからのみ (そこそこ)ちゃんとテストを書いている 全部とはいえないけど・・・ jessfraz/gmailfiltersはほとんどテストがなくてちょっと怖い (そこそこ)ドキュメントを整備してある README.mdを頑張って書いた 逆にjessfraz/gmailfiltersがサポートしている、queryOrやarchiveUnlessToMeは実装していません。ORとか普通に書けばよかろう。 Manage with CI 実際に、GitHub Actionsを使用して自分のGmail Filterを管理するように設定しました。管理用のプライベートリポジトリにfilters.ymlとしてフィルタの設定ファイル(これ自体も gmac get filters -o yaml > filters.yml として出力したもの)と、次のGitHub Actions設定ファイルをおいてpushごとに適用するように構成しました。 ...

2020-05-08 · nasa9084

GitLab Docker: initial runners registration token

GitLab はRuby on Railsで書かれたオープンソースのGitサーバアプリケーションです。おそらく、オープンソースのGitサーバとしては最もよく使われているものではないでしょうか。 GitLabは他のOSS Gitサーバアプリケーションと比べて、非常に多くの機能を持っています。 GitLab-CIもその一つで、GitLab上で自動テストを回すことができます。 この、GitLab-CIを使用するにはrunnerと呼ばれる、CI環境用のホストを追加する必要があります。 このとき、Registration Tokenという登録用トークンが必要なのですが、REST APIで取得することができません。そのため、Dockerを用いた自動構築時に少々困りました。 解法 GitLab omnibusの設定項目でRegistration Tokenの初期値を設定することができます。 docker runする際のオプションに、以下を追加します。 1 -e GITLAB_OMNIBUS_CONFIG="gitlab_rails['initial_shared_runners_registration_token'] = 'HOGEHOGETOKEN'" もし、ほかの理由ですでにGITLAB_OMNIBUS_CONFIGの指定がある場合、セミコロン区切りで複数の値を指定することができます。たとえば、初期パスワードを与えている場合は、以下の様にできます。 1 -e GITLAB_OMNIBUS_CONFIG="gitlab_rails['initial_root_password'] = 'FUGAFUGAPASSWORD'; gitlab_rails['initial_shared_runners_registration_token'] = 'HOGEHOGETOKEN'" ここで指定した値をrunnerの登録時に与えれば、OKです。 1 docker exec GITLAB_RUNNER_CONTAINER_NAME gitlab-runner register -n -r HOGEHOGETOKEN --run-untagged --executor docker --docker-image alpine:latest --url http://GITLAB_URL --docker-volumes /var/run/docker.sock:/var/run/docker.sock このとき、GITLAB_RUNNER_CONTAINER_NAMEとGITLAB_URLは適宜置き換えてください。

2017-11-22 · nasa9084

Travis CIでdockerのバージョンを最新にする

Travis CIでDockerfileをテストする等、dockerを使用したい場合、以下の様に.travis.ymlに記述することでdockerを有効にすることできます。 1 2 3 4 sudo: required service: - docker が、その際のdockerのバージョンは17.03.11と、最新版ではありません。 特に問題なのが、multi-stage build は17.05からの機能であるということです。 Travis CIで使用できるdockerでは、multi-stage buildを使用したDockerfileはビルドすることができず、常にfailedとなってしまいます。 解決方法 Travis-CIでDockerのバージョンを上げるには、以下の記述を.travis.ymlに追加します。 1 2 3 4 5 6 7 8 sudo: required service: - docker before_install: - sudo apt-get update - sudo apt-get install -y -o Dpkg::Options::="--force-confnew" docker-ce dockerの再起動などの処理は必要ありません。 以上の記述により、Dockerのバージョンが最新版にアップデートされ、multi-stage buildも使用できるようになります。 2017年10月18日現在 ↩︎

2017-10-18 · nasa9084