☁️

Cirrus CI のメモ(arm build が使える!)

2023/04/20に公開

Github Actions だと arm ビルドは qemu での emulation なので遅くてつらい...

Arm native 対応の CI ははいくつかありますが, ここでは OSS であれば free な Cirrus CI つかいます!

https://cibuildwheel.readthedocs.io/en/stable/#usage

https://cirrus-ci.org/features/

Arm Windows は未対応です.

https://srz-zumix.blogspot.com/2018/04/ci-cirrus-ci.html

セットアップ

特に面倒なことはありません.
arm ビルドの場合, arm な image 指定するだけで OK です.

メモ

Encripted token

https://cirrus-ci.org/guide/writing-tasks/#encrypted-variables

Cirrus CI の app(サイト) でハッシングして、それを ci script に埋め込みます.

  env:
    GITHUB_TOKEN: ENCRYPTED[ABC]

コマンドラインで twine upload --password ENCRYPTED[...] だとうまく解釈されないようです. 環境変数を設定するときしかうまくパースできないかも?

release のときだけなにかやる

https://goreleaser.com/ci/cirrus/

only_if: $CIRRUS_RELEASE != ''

or

only_if: $CIRRUS_TAG != '' # run only on tags

頑張れば正規表現できるようですが, github actions のように startsWith みたいなのは無いようです.

タスク依存関係

depends_on で指定します.

  depends_on:
    - Test
    - Lint

artifact が task 間で共有されるかは... 要検証.

まとめ

たぶんだいたい必要なことはできます...
ただ, yaml がめんどい...

とりあえずは arm ビルドだけ Cirrus CI 使い, ほかは Github Actions など使う, で共存利用がいいかも!

Discussion