/
947.txt
557 lines (395 loc) · 24 KB
/
947.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
[8] [DFN[CircleCI]] は、 [[CI]] サービス ([[Webアプリケーション]]) です。
[25] [[Linux]] と [[Mac OS X]] に対応しています。
* 環境変数
[50]
[[CircleCI]]
で動作中かどうか判定するために、
[[環境変数]]の
[CODE[CI]]
や
[DFN[[CODE[CIRCLECI]]]]
を使えます。
[SRC[>>49]]
;; [51] [CODE[CI]] はいろいろな [[CI]] サービスで使われています。
[REFS[
- [49] [CITE[[[環境変数]]の使用 - CircleCI]], [TIME[2020-10-03T08:09:18.000Z]], [TIME[2020-10-04T02:01:14.435Z]] <https://circleci.com/docs/ja/2.0/env-vars/#%E5%AE%9A%E7%BE%A9%E6%B8%88%E3%81%BF%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0>
]REFS]
[82]
同じプロジェクトの他のリポジトリーの環境変数はコピーしてくることができます。
他のプロジェクトからはコピーできません (地味に不便)。
[83]
環境変数は秘密の値を保存する用という扱いらしく、
設定画面でも値の一部だけが表示され、それ以外は隠されて見えません。
同じプロジェクトの他のリポジトリーにコピーだけができて、
変数の値は見れないし変数名の変更もできないので、
一度登録したら削除以外は何もできないものと思った方がいいです。
* Heroku deploy 設定
[9] 1. リポジトリーを追加する
[10] 2. 設定 → 「Heroku Deployment」 → 「Step 2: Associate a Heroku SSH key with your account」
[11] 3. [CODE[Makefile]] に [[Heroku]] 用の書き換えを追加 (一例):
[FIG[
[PRE(code)[
create-commit-for-heroku:
git config --global user.email "dummy@test"
git config --global user.name "dummy"
git remote rm origin
rm -fr deps/pmtar/.git deps/pmpp/.git modules/*/.git
git add -f deps/pmtar/* #deps/pmpp/*
#rm -fr ./t_deps/modules
#git rm -r t_deps/modules
git rm .gitmodules
git rm modules/* --cached
git add -f modules/*/*
git commit -m "for heroku"
]PRE]
]FIG]
;; [12] [[submodule]] やビルド結果など、 [[CircleCI]] 側で用意して [[Heroku]]
側では [[pull]] するだけで良い状態にするための変更を加える。
[13] 4. [CODE[circle.yml]] (一例):
[FIG[
[PRE(code)[
dependencies:
override:
- make deps
test:
override:
- make test
deployment:
heroku:
branch: master
commands:
- "'''['''[ ! -s \"$(git rev-parse --git-dir)/shallow\" ]''']''' || git fetch --unshallow"
- make create-commit-for-heroku
- git push git@heroku.com:[VAR[HEROKUAPPNAME]].git +`git rev-parse HEAD`:refs/heads/master
]PRE]
]FIG]
;; [14] [CODE[deployment:]] の部分がポイント。他は何でも良い。
[59]
この機能いつの間にかなくなった。リポジトリーごとに設定が必要ですんごい面倒なんだけど>_<
[60]
教訓: [[CircleCI]] の便利な機能は無くなりがちなので、頼ってはいけない
* API キー
[93]
ユーザー設定とプロジェクト設定の両方に API キーの画面があります。
特定のプロジェクトでだけ API を使いたいからプロジェクトの方の API キーでいいかというと、
そうでもなくて、そういうときはユーザー設定の方の API を使わないとプロジェクトが見つからないとエラーになるだけです。
[94]
2.0 になった頃から、こういう似たような設定があちこちにできて正しい方をうまく選ばないと思ったとおりに動作しない、あんまり親切に誘導してくれない、っていうケースが増えた気がしませんか。
* Web API から build を指示
[16]
[CITE[CircleCI API v1.1 Reference - CircleCI]] ([TIME[2017-06-10 05:03:08 +09:00]]) <https://circleci.com/docs/api/v1-reference/#new-build>
* 指定日時にジョブを実行
[34] [CITE@ja[ジョブのスケジューリング (ビルド用の cron) – CircleCI Japanese Support Center]]
([TIME[2020-01-11 11:00:23 +09:00]])
<https://support.circleci.com/hc/ja/articles/115015481128-%E3%82%B8%E3%83%A7%E3%83%96%E3%81%AE%E3%82%B9%E3%82%B1%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0-%E3%83%93%E3%83%AB%E3%83%89%E7%94%A8%E3%81%AE-cron->
[36]
他の [[cron]] っぽいものの実装と同じく、指定時刻に正確に実行されることはまずありません。
時間帯にもよるのかもしれませんが、
まず数分は遅れて開始されます。
(もしかすると有料のほうが優先的に実行されたりするのかもしれませんが。)
* [CODE[machine]] の VM を指定する
[52]
以前はデフォルトが勝手に最新の環境になっていたはずですが、
いつからかとても古い環境に固定されていて、
新しい環境にしたいなら自分で [[VM]]
を指定しなければならなくなったようです。
[53]
「最新」と指定する方法が用意されていないので、
更新版が出るたびに、都度手動で書き換えないとならず、
不便です。
(古いのを使っていると、
ある日突然
[CODE[apt-get]]
できなくなったり、
突然
[CODE[pip]]
できなくなったりします。取得の [[URL]] が変わったり、
[[証明書]]が変わったりする変化に追いつけなくなるからです。)
[PRE(code)[
"machine" : {
"image": "ubuntu-2004:202008-01" // これを都度書き換えること
},
]PRE]
* context
[61]
context は workflow 内の job ごとに指定できます。
(build の step 単位では指定できません。)
[62]
指定した context が organization に登録されていないときは、
その job がエラーになって実行されません。
[63]
context で設定できるのは[[環境変数]]だけ。
[[SSH]] 鍵も登録できたら便利なのに。
* 非互換変更
[55]
[[CircleCI]]
は一度盛大な非互換変更をやらかした前科があります。
仕様が完全変更されて、
修正しなければ何1つ動作しなくなるという凶悪なタイプでした。
[56]
次にいつ繰り返されないとも限りませんから、
継続して運用していくシステムに使うのは避けた方が無難かもしれません。
[30] [CITE@en[CircleCI 1.0 End of Life on August 31, 2018]]
([TIME[2018-03-01 10:04:53 +09:00]])
<https://circleci.com/blog/sunsetting-1-0/>
[31] [CITE@en[Sunsetting CircleCI 1.0 - CircleCI]]
([TIME[2018-03-01 10:04:54 +09:00]])
<https://circleci.com/sunset1-0/>
[32] 実行環境を新しくするのは大変結構。しかしなぜ[[利用者]]に完全非互換な変更を強要するのか。
古い設定ファイルも自動変換して実行するが動作結果は保証されない、
くらいの緩やかな移行計画を立てられないものか。
突然期限を区切ってこういうことを言ってくるから、[[クラウド事業者]]は信用できない。
[33]
設定ファイルも UI も、 2.0 になって面倒になったなあ。 1.0 より柔軟性は上がっているのだけど、
1.0 では簡単にできたことが複雑になっている。ほとんどの用途において改悪でしかないと思うんだが。
[TIME[2018-08-18T12:12:48.800Z]]
[37]
どんどん UI が複雑で理解不能になっていくなあ。今思い返すと 1.0 の頃が一番わかりやすかった。
[38]
強制的に新 UI に切り替えられたみたい?
ジョブの実行順序が日付順にならなくて変な順序になっていて、
使い物にならない。。。
[TIME[2020-08-19T00:55:35.200Z]]
[39]
実行時間の長い古いジョブより実行時間の短い新しいジョブの方が先に出てくるようになったから、
現在実行中のジョブ一覧として機能しなくなったのが原因?
[64]
retry with SSH したジョブは一覧表に出てこない。
昔は出てたのに workflow の実行順にまとめて表示に変わってから出なくなった。
おかげで今どこでジョブが実行されてるのか一覧表を見てもわからないという糞仕様w
[65]
前は成功したジョブも必要あらば再実行できたのに、
今見たらできなくなってた。
[TIME[2021-06-09T04:21:32.100Z]]
[66]
昔は [[IRC]] サーバーへの通知の設定はプロジェクト設定ページ内に項目があったのが、
いつの間にか [CODE[.circleci/config.yml]] で手作業で書かなければならなくなったようです。
(変更のお知らせは来ていない気がしますが、それとも重要、要変更と書かれていなくて見落としていたのでしょうか。)
ところが設定項目がなくなっただけで機能は残っているみたいで、
[[IRC]] サーバーへの通知はずっと動き続けています。
(だから仕様変更がいつ行われたのかすらわからないのです。)
しかし設定の変更も解除もできないのです。どうしろというのでしょう。
[TIME[2021-06-19T00:32:31.400Z]]
[67]
また非互換変更の通知が来たぞ、どうなってんの?
[TIME[2021-12-03T01:57:09.0Z]]
[68]
開発工程の最適化のための [[CI]] なのに、こう非互換変更ばかりで振り回されてるとむしろ開発コスト上がってるんだよなあ。
[69]
やっぱ [[GitHub Actions]] に移行するのがいいんだろうなあ。
[70]
なんかまた挙動変わったな?
[TIME[2022-01-12T05:08:38.500Z]]
[71]
「All」を選んでもすべてにならない (もう1回選ばないといけない)
とか頭おかしい仕様変更しやがって
* 互換性はあっても気づきにくい変更の罠
[95]
いつのまにか yml の記述形式が更新されていて、それに合わせてドキュメントが更新されているのに、
元々の .yml ファイルに古いバージョン番号を書いているせいで思ったように動作しないことがあります。
[96]
バージョン番号を更新すればいいだけのことなのですが、エラーメッセージにはバージョンが違うとは一言も出てこないし
(エラーにならないこともあるし)、
ドキュメントもバージョンいくつからですとははっきり書いていないし、
例文も一部を示しているとバージョンが入っていないことがあって、
バージョンが理由だというのがわかりにくい。
[97]
[[バージョニングの失敗]]でユーザーが混乱させられる典型例ですね。
* 料金値上げ
[84] [CITE@ja[CircleCI Container Plan Migration Guide - Announcements - CircleCI Discuss]], [TIME[2022-02-18T08:31:48.000Z]] <https://discuss.circleci.com/t/circleci-container-plan-migration-guide/42938>
[85] 利用の程度によって異なりますが、数万円レベルの値上げになることもありそうです。
(長く使っているユーザーほど使い込んでそうだから、値上げ幅が高そう。)
[86]
前にメール来たときは何もしなければ Free plan (無料) に自動移行するって書いてたくせに、
今度来たメールには Performance plan (従量課金) に自動移行するって書いてるぞ、
無茶苦茶だな。
[TIME[2022-06-02T02:26:33.00Z]]
[87]
>>86
前に来たメールを信じて何もしないと利用状況に応じて急に値下げになることもあれば、
急に大幅値上げになることもあり得るわけで。
[[消費者]]に一方的に不利な料金変更とも言い切れないから法的には無効な契約変更ではないのかもしれないけど、
利用者の明示的な承認を得ずにこんな変更をしてしまうのは感じが悪い。
[91]
半月以上前に解約して Free plan に移行してるのに、
プラン変更しないと Performance プランに自動移行するよメールがやってきた。
どうなってんの!?
[TIME[2022-06-30T00:00:08.600Z]]
[92]
メールで案内されるプラン移行のガイドページ、
古いまま更新されてないっぽくて、
旧プランの終了日は未定とか書いてあるのよね。
顧客対応が杜撰すぎない?
* 解約
[88]
Performance プランは解約しても期限まで有効みたいなことが書いてありました。
詳しくはよくわかんない。
[89]
それ以前からあった container-based プランは解約するとその場で無効になります。
(公式のドキュメントを探したけど見つけられなかった。)
[90]
解約するとそれ以前は表示されていた支払履歴まで見れなくなりました。
* メモ
[22] 最低$19/月。
まだ試していないが [[Travis CI]] や [[Wercker]] と違って [CODE[heroku]] コマンドを直接使えそう。
IRC 通知はあるが、失敗・復活が privmsg でそれ以外が notice という使い分けができない。(他の CI でもできないが。)
管理権限がないリポジトリは読み書き権限があっても登録できない。気づいたら勝手に fork していて(?)罠っぽい。
横に長い画面想定で作られていて使いにくい。特に設定ページ。それと一部フォームコントロールが奇抜なのを除けば今風の UI だけど悪くはない。
試用では 6 containers 利用できるが、一番安いプランでは 1 container しかない。二番目に安いプランでも 6 はない。
課金は user/organization 単位なので、自分のリポジトリと組織のリポジトリ両方で試したりすると両方の試用カウンターが勝手にスタートしてしまってもったいないw 罠としか思えないwww
deploy フェーズの排他制御みたいなのは特にないので、複数コミットのデプロイが同時動作することがある。
[TIME[2014-10-08]]
[1] [CITE@en-US[Continuous Integration and Deployment on CircleCI just got better: now it’s free. | The Circle Blog]]
( ([TIME[2014-11-20 05:45:53 +09:00]] 版))
<http://blog.circleci.com/continuous-integration-and-deployment-on-circleci-just-got-better-now-its-free/>
[5] 基本機能は無料化されました。
[2] [[GitHub]] に対応している。
[[BitBucket]] には[DEL[対応していない。]] その後対応しました。
[3] 公開リポジトリーの実行結果は公開される。
[4] 好きな [[Docker]] コマンドを使える。
[FIG(amazon)[
[[Circle CI]]
]FIG]
[6] 昔から [[UI]] は微妙ですが、同種サービス内ではましな方です。
昔より少しは改善されています。使っていれば慣れるというのもあります。
[7] 同種他サービスとは違って、やりたい操作がどこにあるのか想像付かないということはない。
[15] [CITE[CircleCI API Documentation - CircleCI]]
([TIME[2017-06-10 05:03:08 +09:00]])
<https://circleci.com/docs/api/>
[17] [CITE@en[Clearing the source cache? - Build Environment - CircleCI Community Discussion]]
( ([[]]著, [TIME[2017-06-13 23:34:32 +09:00]]))
<https://discuss.circleci.com/t/clearing-the-source-cache/2771/14>
[18]
[[Git]] の[[タグ]]や [[submodule]] の [[URL]] の変更など、一部の変更はキャッシュされてしまい、
反映されません。 現時点で [[UI]] から消去する方法がなく、サポートに問い合わせるしかないようです。
[TIME[2017-06-13T14:35:38.200Z]]
[19] [CITE@en[Pricing and Plan Information - CircleCI]]
([TIME[2017-09-30 08:29:11 +09:00]])
<https://circleci.com/pricing/>
[20] [CITE[Continuous Deployment with Heroku - CircleCI]]
([TIME[2017-09-29 11:16:08 +09:00]])
<https://circleci.com/docs/1.0/continuous-deployment-with-heroku/>
[21] [CITE[Configuring CircleCI - CircleCI]]
([TIME[2017-09-29 11:16:08 +09:00]])
<https://circleci.com/docs/1.0/configuration/>
[23] GitHub organization に対応する CircleCI 側の管理権限は、
GitHub 側で管理者になっているユーザーに与えられます。
[TIME[2017-12-01T08:41:16.600Z]]
[24] 請求情報は [[Web API]]
https://circleci.com/api/v1.1/organization/hub/{org}/invoices
から取得できます。管理権限のあるユーザーのアクセストークンがあれば取得できます。
[26] workflow 微妙だなー。複雑で使いにくい。
[27] [CITE@en[Caching Docker images in Workflows - CircleCI 2.0 - CircleCI Community Discussion]]
([TIME[2018-02-03 16:53:44 +09:00]])
<https://discuss.circleci.com/t/caching-docker-images-in-workflows/16507/2>
[28] [CITE[Parameterized Builds - CircleCI]]
([TIME[2018-02-24 07:21:29 +09:00]])
<https://circleci.com/docs/1.0/parameterized-builds/>
[29] [CITE[Running Jobs With the API - CircleCI]]
([TIME[2018-02-24 07:21:29 +09:00]])
<https://circleci.com/docs/2.0/api-job-trigger/>
[35]
設定ファイルが間違っていると、
Jobs のリストを見ても何も実行されていなくエラーに気づかないことがある。
Workflows
を見るとエラーが出ていたりする。
(とてもわかりにくい。)
[TIME[2020-01-11T08:04:35.900Z]]
[40]
Pipeline は実行中なのに Workflow は未実行になっていたり (何も動いていないことになってる)、
表示が怪しいことが多い。
システムを必要以上に複雑化したから、
おかしな不具合が出まくるようになったんやで。
[41]
Pipeline はジョブが追加されてすぐに実行中に変わるから、
実行時間 = ジョブ追加からの時間で、
実際に何かを実行してる時間ではない。
実際になにかするのは Workflow のほうだけれども、
そちらの実行時間は表示されないから、
その待ち時間は何もしていないのに延々実行時間だけが進んでいく虚無になる。
本当の実行時間は個別に奥深くのページを開いていかないとわからない。
[42]
そんなわけなので「RUNNING」の表示は本当の実行中と、何もしていない待機中を含んでいるのがとてもわかりにくい。
昔は待機中は別の表示だったんだが。
[43]
そろそろ
[[GitHub Actions]]
への移行も検討していいのでは?
[44]
前は実行中 (未完了) のジョブでも再実行 (ジョブをコピー)
できたのに、
今はできなくなった。
失敗が確定して後処理中 (まだ実行完了していない) に再実行予約できなくなって不便だ。
[45]
どれが実行中でどれが未実行かさっぱりわからなくて草
[46]
実行完了前のジョブを再試行したいときは、
キャンセルしたら再試行ボタンが有効になるので推し放題という裏技w
一度実行開始されてしまうとキャンセルしづらくなる (その時点で中断されてしまうし、
artifacts にアクセスできなくなってしまう)
ので、実行開始前に中止して再試行しておくべきというバッドノウハウもいいところ。
[47]
Parallel job のいくつかが失敗、いくつかが成功、いくつかが実行中のとき、
失敗したものしか表示されなくなった。以前は実行中のものも表示されていたはず。
わかりにくくなった。
[48]
retry しても最初のジョブが登録された順のままだから、
一覧表を見てもどれが最近完了したもので、
どれが昔のものか、さっぱりわからん。
[54]
Workflow 中の job のいくつかを、他のいくつかより先に実行させたいとき、
[CODE[requires]] で完了を待たせることはできるが、
実行開始だけを待たせる方法がない。
書いた順番に実行されるのかと思いきや、
後の方が先に実行されることがある。
(例えばテスト完了を待たずにデプロイをしたいので、両者を同時に実行できる余裕があれば同時に、
実行環境が埋まっていればデプロイを先に実行させたいのに、
テストが実行環境を埋めてしまうことがある。)
[57]
昔は他のprojectから1個ずつ[[環境変数]]のインポートできたよね??
なんか全部一括インポートしかできなくなってて不便なんですけど。。。
[TIME[2021-02-01T07:08:29.100Z]]
[58]
いつも必要な機能だけピンポイントで消し去ってて草
[72]
最近営業メールがうざい、まだこれ以上金払えって?
[73]
ログの見てると何もしてないのに勝手にスクロールするし (テスト完了してるから最新の情報が追加されたわけでもない)、
ログの途中をクリックしても勝手に末尾にスクロールするし、
本当に意味不明すぎる・・・。
しかもこの意味不明な挙動になってもう何ヶ月も放置されていて、
修正する気はないのかわざとこういう仕様になっているらしい、まったく理解不能。
開発者自身はこのサービスを使っていないのかも?
[76]
SSH有効で実行するとログの先頭に接続先の情報が出てくるけど、ログの末尾にどんどん情報(?)が追記されていくから、接続先をコピペしようと上にスクロールすると勝手に末尾にスクロールされるし、コピペのため選択しようとクリックしても末尾にスクロールされる、って地獄が待ってるんだぜ。このサービス設計したやつ狂気じみてるだろ?
[74]
完了予想時間が出るようになったのは便利。珍しく良い変更。
しかし出るときと出ないときがあって、出現条件が不明瞭なバグ(?)はいただけない。
[75]
一覧画面が最新の情報に更新されるときと、数時間前の情報が表示されたままかわらないときがあるのも、わけわかんないのよね。
動作に一貫性がなくて困る。
[77]
令和4年1月末くらいの変更 (status に不具合告知が載ってた & Twitter にも被害報告が投稿されてたやつ)
のあと実行時間が倍くらいに増えてるんですけど・・・なんでやねん
[78]
単体でのビルド時間はあまり変わっていないのだけれども、 Docker 関係のオーバーヘッドが増えてるのかな? 障害もその辺をいじってる感じの症状だったし。
[79]
なんかどんどんおかしくなってくなあ。
(ユーザーにとっては) 「何もしてないのに壊れた」がこのサービスには多すぎて辛い。
[80]
ビルド時間が伸びるのって、従量課金にとっては深刻な問題では... まさかわざとやってるとは思わんけど、
同じコード動かしてるのに時間が倍かかって課金が倍請求されるとしたら大問題では?
[81]
いつぞやの UI 変更以来、タイミングによっては個別ページから再実行はできるのに、
一覧ページは再実行できなくて不便になったよね。
[98]
ログの行の横にコピーボタン出てきたから行をコピーできるのか、便利だなと思って押してみたら行へのリンクがコピーできるだけで草
[99]
同じ workflow 内の job の同時実行するしないはある程度制御できるみたいだけど、
違う workflow の実行の排他制御はできないみたい。だから同じプロジェクトで最大1個しか走らせない、
みたいなのができない。
(プライベートリポジトリーだと最大実行数制限があるから、逆にこれができてる? (アカウント(?)単位になっちゃうけど。))
[100]
>>99 同じ要望がたくさん、何年も前から公式掲示板に書かれているのに改善の見込みなし、、、
[101]
>>99 プライベートリポジトリーでも最大実行数が実質無制限?になってたらしい。だめじゃん。