〜2015年11月中旬〜
aptって名前ついてるから/etc/apt/apt.conf.d/に置いた99proxyが効くかと思ったら、
全然無視されて結局環境変数https_proxyしか見てくれないことが判明した。
調べてみるとpycurlを使っているらしく全然別系統らしい。
やっぱsudoersでenv_keepしとくか。
-で配列にしちゃうと各々別のbashが起動されてしまうので1つの文字列にする必要あり。
test: post: - "cat <<EOM\nfoo\nbar\nEOM\n"
""で囲んで\nとか書くのは面倒なら、いわゆるブロックスタイルにしちゃえばいい。
test: post: - | cat <<EOM foo bar EOM
|がないと改行が保存されず空白類はまとめて1つの空白に変換される。
GUIからは設定できないので内部で起動しているgitで設定する。
Can I log in behind a proxy server?
Windowsの場合はなにかリポジトリを作ってからOpen Git Shellしてその中のgitで設定する。
ふつうにコマンドプロンプトを起動してもたぶんPATHが通ってない。
while readは-rしなきゃいけないとかもろもろ罠があるので別解を。
$ printf "%s\n" "$(<.bashrc)" > .bashrc.bak $ cmp .bashrc .bashrc.bak
ひょっとしたら古いbashだとだめだったかもしれない。
CircleCIにはNightly Buildという仕組みがある。
これは外からBuildを実行するAPIが提供されてるだけだが、
意外にもTravisとかWerckerにはない機能。
つまりGithubにコード置いといてIFTTTのDate&Timeで定期的にCircleCIのAPIを叩けば、
botが作れるわけだ。テストの代わりにbotを実行する。
もしくはAWS Lambdaもスケジュール実行ができるからそれでもいい。
月に320万回とか、1ヶ月ちょっとの実行時間なんて実質フリーみたいなもんだし。
5分間という実行時間の制限はあまり影響はないだろう。
情報が古かった。werckerも6月にtriggerBuild APIが追加されていた。
werckerはBitbucketも対応してるので非公開リポジトリもありになる。
Authenticating with the wercker API
IFTTTのMakerではAuthorizationヘッダーを追加することはできないので、queryに含める。
jsonの場合は"token":"<TOKEN>"てな感じで入れればいい。
% curl -H 'Content-Type: application/json' -X POST \ -d '{"applicationId": "<AppID>", "branch":"master", "message":"<MESSAGE>", "token":"<TOKEN>"}' \ https://app.wercker.com/api/v3/builds
AppIDはアプリケーションURLの末尾24桁の16進。
なぜか
Failed step: setup environment - context canceled
というエラーが頻発しているのが気になる。
それはそれとして、CIなのでログが詳細に残るのは思いの外便利だ。
/etc/default/dockerとか環境変数とかぐぐるといろんな情報に満ち溢れているが、
本家にsystemd用の設定方法があった。
Control and configure Docker with systemd
/etc/systemd/system/docker.service.d/http-proxy.confに
[Service] Environment="HTTP_PROXY=http://proxy.example.com:80/"
と書いて反映させて確認し、再起動。
$ sudo systemctl daemon-reload $ sudo systemctl show docker --property Environment Environment=HTTP_PROXY=http://proxy.example.com:80/ $ $ sudo systemctl restart docker
dockerコマンドに環境変数を渡しても時すでに遅し。
serviceのほうをなんとかしないといけない。
初期設定時はこれ使い物になるんかな的なエラー率だったが、
いざ動き出してみると全然エラーが出なくなった。
それにしてもbotをCIサービスで動かすってのは思いの外便利だと改めて実感。
エラーが起きればメールが飛んでくるし、その時のログも残っているわけで。
まじでおすすめ。
dockerグループを作ってそこに自分を加えればok。
大抵の場合はすでにdockerグループはあるので追加するだけでいける。
% sudo gpasswd -a eban docker
ここに書いてあるが、upstartとSysVInit用であって、systemdとは関係ない。
いや、なんかおかしいとは思ったが、じゃなんでこんなファイルが用意されているのか?