<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> 色々な <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CI</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webサービス</anchor>が提供されています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> 「<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CI</anchor>」が具体的に何を指すかは若干ふわっとしているところがありますが、
多くのサービスが「構築」、「試験」、「deploy」を想定しています。
(これら3ステップが分かれている場合もあれば、そうでない場合もあります。)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> 多くは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OSS</anchor> 無料、それ以外有料というビジネスモデルになっているようです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Linux</anchor> を提供するところがほとんどですが、それ以外の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OS</anchor>
に対応しているところもあります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Git</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リポジトリー</anchor>が基本となっています。普通は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GitHub</anchor>
に対応しています。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">BitBucket</anchor> に対応しているところもいくつかあります。</p><section><h1>CI 諸サービスの比較</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> 幾つかの <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CI</anchor> サービスの機能の比較です。
試してみた時点での、見つけることができた機能の比較なので、
最新の状況ではないかもしれませんし、できないと書いてあってもがんばればできることもあるでしょう。</p><figure class="table col"><dl><dt>name</dt><dd>名前</dd><dt>oss</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OSS</anchor> 無料</dd><dt>non-free</dt><dd>非 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OSS</anchor> 無料</dd><dt>github</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GitHub</anchor></dd><dt>bb</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">BitBucket</anchor></dd><dt>submodule</dt><dd>clone 時の submodule update</dd><dt>linux</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Linux</anchor></dd><dt>mac</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Mac OS X</anchor></dd><dt>windows</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Windows</anchor></dd><dt>matrix</dt><dd>複数環境</dd><dt>docker command</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">docker</anchor> コマンド</dd><dt>build then deploy</dt><dd>build 結果を deploy</dd><dt>config in repo</dt><dd>リポジトリー内実行設定</dd><dt>config on site</dt><dd>Web サイト上で実行設定</dd><dt>key in repo</dt><dd>リポジトリー内で秘密値指定</dd><dt>key on site</dt><dd>Web サイト上で秘密値指定</dd><dt>trigger by push</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">push</anchor> 時に実行</dd><dt>trigger by api</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web API</anchor> から実行</dd><dt>rebuild</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webサイト</anchor>上から実行</dd><dt>time</dt><dd>実行時間制限</dd><dt>webhook</dt><dd>完了後 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web Hooks</anchor></dd><dt>heroku</dt><dd>Heroku デプロイ</dd><dt>email</dt><dd>電子メール通知</dd><dt>irc</dt><dd>IRC 通知</dd><dt>security</dt><dd>安全性</dd><dt>note</dt><dd>備考</dd></dl><dl><dt>name</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GitHub Actions</anchor></dd><dt>oss</dt><dd>○</dd><dt>non-free</dt><dd>×</dd><dt>github</dt><dd>○</dd><dt>linux</dt><dd>○</dd><dt>mac</dt><dd>○</dd></dl><dl><dt>name</dt><dd><del> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Travis CI</anchor> </del> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サ終</anchor></dd><dt>oss</dt><dd>○</dd><dt>non-free</dt><dd>×</dd><dt>github</dt><dd>○</dd><dt>bb</dt><dd>×</dd><dt>linux</dt><dd>○</dd><dt>mac</dt><dd>○</dd><dt>windows</dt><dd>×</dd><dt>matrix</dt><dd>○</dd><dt>trigger by push</dt><dd>○</dd><dt>build then deploy</dt><dd>○</dd><dt>config in repo</dt><dd>○</dd><dt>key in repo</dt><dd>○</dd><dt>key on site</dt><dd>×</dd><dt>rebuild</dt><dd>再実行のみ</dd><dt>time</dt><dd>あり</dd><dt>email</dt><dd>○</dd><dt>irc</dt><dd>○</dd><dt>submodule</dt><dd>無限再帰 (<code>.travis.yml</code> で無効化可能)</dd><dt>docker command</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Linux</anchor> のみ</dd></dl><dl><dt>name</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Travis CI</anchor> .com</dd><dt>oss</dt><dd>×</dd><dt>non-free</dt><dd>×</dd><dt>github</dt><dd>○</dd></dl><dl><dt>name</dt><dd><del> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Circle CI</anchor> </del> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サ終</anchor></dd><dt>oss</dt><dd>○</dd><dt>non-free</dt><dd>○</dd><dt>github</dt><dd>○</dd><dt>bb</dt><dd>○</dd><dt>linux</dt><dd>○</dd><dt>windows</dt><dd>×</dd><dt>mac</dt><dd>有料</dd><dt>docker command</dt><dd>○</dd><dt>trigger by push</dt><dd>○</dd><dt>build then deploy</dt><dd>○</dd><dt>config in repo</dt><dd>○</dd><dt>key on site</dt><dd>○</dd><dt>trigger by api</dt><dd>○</dd><dt>webhook</dt><dd>○</dd><dt>heroku</dt><dd>○</dd><dt>rebuild</dt><dd>○</dd><dt>email</dt><dd>○</dd><dt>irc</dt><dd>○</dd><dt>submodule</dt><dd>なし</dd><dt>note</dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SSH</anchor> でログインしてデバッグ可能。</dd></dl><dl><dt>name</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CircleCI</anchor> 2.0</dd><dt>oss</dt><dd>○</dd><dt>non-free</dt><dd>少</dd><dt>github</dt><dd>○</dd><dt>bb</dt><dd>○</dd><dt>note</dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SSH</anchor> でログインしてデバッグ可能。</dd><dt>rebuild</dt><dd>失敗後</dd></dl><dl><dt>name</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Wercker</anchor></dd><dt>oss</dt><dd>○</dd><dt>non-free</dt><dd>○</dd><dt>linux</dt><dd>○</dd><dt>mac</dt><dd>×</dd><dt>windows</dt><dd>×</dd><dt>bb</dt><dd>○</dd><dt>github</dt><dd>○</dd><dt>submodule</dt><dd>なし</dd><dt>build then deploy</dt><dd>×</dd><dt>config in repo</dt><dd>○</dd><dt>trigger by push</dt><dd>○</dd><dt>heroku</dt><dd>○</dd><dt>rebuild</dt><dd>○</dd><dt>key on site</dt><dd>○</dd><dt>email</dt><dd>○</dd><dt>matrix</dt><dd>×</dd><dt>docker command</dt><dd>× (v2)</dd><dt>note</dt><dd>
実行環境 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Docker image</anchor> 指定可能。</dd></dl><dl><dt>name</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Codeship</anchor></dd><dt>oss</dt><dd>○</dd><dt>github</dt><dd>○</dd><dt>non-free</dt><dd>△</dd><dt>bb</dt><dd>○</dd><dt>linux</dt><dd>○</dd><dt>mac</dt><dd>×</dd><dt>windows</dt><dd>×</dd><dt>trigger by push</dt><dd>○</dd><dt>config in repo</dt><dd>×</dd><dt>key on site</dt><dd>○</dd></dl><dl><dt>name</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Shippable</anchor></dd><dt>bb</dt><dd>○</dd><dt>github</dt><dd>○</dd><dt>linux</dt><dd>○</dd><dt>mac</dt><dd>×</dd><dt>windows</dt><dd>×</dd><dt>oss</dt><dd>○</dd><dt>non-free</dt><dd>○</dd><dt>trigger by push</dt><dd>○</dd><dt>config in repo</dt><dd>○</dd><dt>build then deploy</dt><dd>○</dd><dt>key on site</dt><dd>○</dd><dt>docker command</dt><dd>○</dd><dt>submodule</dt><dd>なし</dd><dt>email</dt><dd>○</dd><dt>irc</dt><dd>○</dd></dl><dl><dt>name</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Semaphore</anchor></dd><dt>github</dt><dd>○</dd><dt>bb</dt><dd>○</dd><dt>linux</dt><dd>○</dd><dt>mac</dt><dd>×</dd><dt>windows</dt><dd>×</dd><dt>trigger by api</dt><dd>○</dd><dt>non-free</dt><dd>回数制限</dd><dt>trigger by push</dt><dd>○</dd><dt>config in repo</dt><dd>×</dd><dt>key on site</dt><dd>○</dd><dt>security</dt><dd>
なぜか<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">素のHTTP</anchor>でもアクセスできる。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HSTS</anchor> 未指定。</dd><dt>time</dt><dd>1時間?</dd></dl><dl><dt>name</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">AppVeyor</anchor></dd><dt>oss</dt><dd>○</dd><dt>github</dt><dd>○</dd><dt>bb</dt><dd>○</dd><dt>linux</dt><dd>×</dd><dt>mac</dt><dd>×</dd><dt>windows</dt><dd>○</dd><dt>trigger by push</dt><dd>○</dd><dt>config in repo</dt><dd>○</dd><dt>config on site</dt><dd>○</dd><dt>key on site</dt><dd>○</dd><dt>key in repo</dt><dd>○</dd><dt>time</dt><dd>30分</dd><dt>matrix</dt><dd>○</dd><dt>email</dt><dd>○</dd><dt>webhook</dt><dd>○</dd></dl><dl><dt>name</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Docker Hub</anchor> (Automated Build)</dd><dt>oss</dt><dd>○</dd><dt>github</dt><dd>○</dd><dt>bb</dt><dd>○</dd><dt>linux</dt><dd>○</dd><dt>mac</dt><dd>×</dd><dt>windows</dt><dd>×</dd><dt>config in repo</dt><dd>○ (Dockerfile)</dd><dt>trigger by api</dt><dd>○</dd><dt>trigger by push</dt><dd>○</dd><dt>webhook</dt><dd>○</dd><dt>rebuild</dt><dd>○</dd><dt>email</dt><dd>○</dd><dt>submodule</dt><dd>なし</dd></dl><dl><dt>name</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">quay.io</anchor> (Build)</dd><dt>github</dt><dd>○</dd><dt>linux</dt><dd>○</dd><dt>config in repo</dt><dd>○ (Dockerfile)</dd><dt>trigger by api</dt><dd>×</dd><dt>trigger by push</dt><dd>○</dd><dt>webhook</dt><dd>○</dd><dt>submodule</dt><dd>無限再帰</dd></dl><dl><dt>name</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Snap CI</anchor></dd><dt>github</dt><dd>○</dd><dt>oss</dt><dd>○</dd><dt>submodule</dt><dd>無限再帰</dd><dt>linux</dt><dd>○</dd><dt>key on site</dt><dd>○</dd><dt>config on site</dt><dd>○</dd><dt>email</dt><dd>○</dd></dl><dl><dt>name</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Magnum CI</anchor></dd><dt>oss</dt><dd>○</dd><dt>non-free</dt><dd>○</dd><dt>github</dt><dd>○</dd><dt>bb</dt><dd>○</dd><dt>submodule</dt><dd>無限再帰</dd><dt>linux</dt><dd>○</dd><dt>rebuild</dt><dd>再実行のみ</dd><dt>time</dt><dd>30分以内</dd><dt>email</dt><dd>○</dd><dt>note</dt><dd>リポジトリー追加は手動 (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth</anchor> 未対応)</dd></dl><dl><dt>name</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Greenhouse CI</anchor></dd><dt>oss</dt><dd>無料枠わずか</dd><dt>non-free</dt><dd>無料枠わずか</dd><dt>github</dt><dd>○</dd><dt>submodule</dt><dd>2段階</dd></dl><dl><dt>name</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Bitrise</anchor></dd><dt>submodule</dt><dd>無限再帰</dd><dt>github</dt><dd>○</dd><dt>security</dt><dd>ドキュメントが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">素のHTTP</anchor></dd><dt>config on site</dt><dd>○</dd><dt>rebuild</dt><dd>○</dd><dt>email</dt><dd>○</dd><dt>mac</dt><dd>○</dd></dl><dl><dt>name</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Buddy</anchor></dd></dl><dl><dt>name</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CodePipeline</anchor></dd></dl></figure></section><section><h1>環境変数 <code>CI</code></h1><p><sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>CIの環境変数</anchor> </sw-see></p></section><section><h1>メモ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UI</anchor> は基本どのサービスもひどいので、どれがましかという比較になります。
どこも表面的な見た目にこだわって使いやすさを考えていないので、
よく使う機能が中々見つからなかったり、
実行時間が長いと挙動が不審になったり、
ログのサイズが大きくなると動作が不安定になったりします。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <cite xml:lang="en">Continuous Delivery for free | Codeship</cite>
( (<time>2014-11-09 12:51:46 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://codeship.com/">https://codeship.com/</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <cite xml:lang="en">Continuous Integration · drone.io</cite>
( (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Brad Rydzewski, Thomas Burke</anchor> 著, <time>2014-11-09 12:57:07 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://drone.io/">https://drone.io/</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <cite xml:lang="en">Magnum CI - Hosted Continuous Integration and Continuous Deployment Platform</cite>
( (<time>2014-11-09 13:01:02 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://magnum-ci.com/">https://magnum-ci.com/</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <cite>Shippable - Continuous Delivery, simplified.</cite>
( (<time>2014-11-09 13:14:21 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.shippable.com/">https://www.shippable.com/</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <cite xml:lang="en">Semaphore: Hosted Continuous Integration &amp; Deployment</cite>
( (<time>2014-11-09 13:19:20 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://semaphoreapp.com/">https://semaphoreapp.com/</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <cite>Travis CI - Free Hosted Continuous Integration Platform for the Open Source Community</cite>
( (<time>2014-11-08 23:08:38 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://travis-ci.org/">https://travis-ci.org/</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> 全体的に見て <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Circle CI</anchor> がかなり完成度が高い。しかし <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">BitBucket</anchor> には対応していないのが難点。 <time>2015-06-07T15:01:15.100Z</time></p><figure class="amazon"><p>継続的インテグレーション</p></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> 今選ぶなら <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CircleCI</anchor> 一択かなあ。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CircleCI</anchor> も <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UI</anchor> が微妙とか突然非互換変更するとか不満はいろいろあるけど
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Bitbucket</anchor> にも今は対応しているよ!)、他はもっとひどいので。
<time>2018-03-20T07:48:53.600Z</time></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> 
時間がかかる作業をやりたい → <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GitHub Actions</anchor> で試してみる。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CircleCI</anchor> はジョブ1時間制限,
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GitHub Actions</anchor> はステップで(?)6時間制限)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> 
ディスクの空きが必要な作業をやりたい → <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CircleCI</anchor> で試してみる。
何百GBくらいのディスクがある環境で実行される。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GitHub Actions</anchor> はストレージが数GB分くらいしかない。)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> 
ログをいっぱい吐く → どこのサービスでも <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">artifacts</anchor> を使うのが基本。
サイズが多いと動作がおかしくなりがち。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GitHub Actions</anchor> は出力 100MB くらいで強制停止。)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GitHub Actions</anchor> はログファイルに各行が出力された日時が書かれるので、
長時間かかる処理の分析には便利です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CircleCI</anchor> はそういう便利な機能はないだけでなく、失敗したステップはなぜか実行時間が表示されないという糞仕様...</p></section></body></html>