Skip to content

Instantly share code, notes, and snippets.

@FromAtom
Last active September 11, 2020 08:36
Show Gist options
  • Save FromAtom/831cf6da906904d518379e493f7eefa2 to your computer and use it in GitHub Desktop.
Save FromAtom/831cf6da906904d518379e493f7eefa2 to your computer and use it in GitHub Desktop.

CIで MINT_LINK_PATH は指定しなくてもいいのでしょうか?

基本的には不要なはずです。MINT_LINK_PATH はMint経由でビルドされたバイナリのリンクを作る先です。デフォルトでは /usr/local/bin に設定されています。リンクは mint install SwiftLintmint bootstrap --linkとした場合に作られます。リンク後は mint run swiftlint とせずに swiftlint として利用することが可能になります。ここらへんはp93 "2.2 Mintを使ってみる" の中で解説しています。

そのため MINT_LINK_PATH をキャッシュに含める必要がある場合は、

  • Mintfile を使わず全部mint installしてmint runせずにバイナリを呼んでいる
  • mint bootstrap --linkをしてMINT_LINK_PATHにバイナリをリンクしてmint runせずにバイナリを呼んでいる

です。今回の記事ではこれらの使い方を特に推してないので、MINT_LINK_PATHはキャッシュに含めていません。

GitHub Actionsの MINT_PATH で先頭に $ {{ github.workspace }}/ を付けていますが、そのほうがいいのでしょうか?(

これは正直良くわかってないです 🙇 Mintの対応をするために、いろんなGitHub Actionsの実装を眺めに行ったんですが、その中で書かれていたので「そういうものなんだろうな」と思って使っておりますー。

個人的はCIで明示的に mint bootstrap をせず、 mint run 時に必要なライブラリのみインストールするのが好きです

これは私も同意見です。ただ、

  • Bitrise上
  • mint bootstrapはしない
  • Xcode Build Phases内でmint run hogeを実行

という条件でビルドできなくなる謎に苦しめられたことがあり、なおかつ似た構成の別アプリでは普通にビルドが通るという謎さだったので、もし同じ状態に読者が陥るとどうしようも無いので安全側に倒して書いてあります。

一応 p.94 "2.3 Mintfile" のサブセクション最後のあたりでその解説は記載しているので、そちらでカバーできているかなと考えています。

@uhooi
Copy link

uhooi commented Sep 10, 2020

ご回答ありがとうございますー!もろもろ理解できました 🙏

リンク後は mint run swiftlint とせずに swiftlint として利用することが可能になります

パンフレットを読んで知ってびっくりしました…常に mint run ○○ としていました、、
/usr/local/bin のパスは通っているから直接呼び出せるということなんですね。

@FromAtom
Copy link
Author

@uhooi

/usr/local/bin のパスは通っているから直接呼び出せるということなんですね。

そうですそうですー。もちろんそれによって Mintfile を用いたバージョン固定はできなくなってしまうので、あまり利用用途はなさそうなんですが……。

@uhooi
Copy link

uhooi commented Sep 11, 2020

あ、なるほどです。
基本的に mint run で実行するのであれば、 /usr/local/bin を汚さないために MINT_LINK_PATH を明示的に指定するのはありな気もしてきました 🤔

@FromAtom
Copy link
Author

そうですねー。ありだとは思います。ただ、

  • mint run の時にはMINT_LINK_PATHへのlinkはつくられず MINT_PATH 内で完結する
  • mint install or mint bootstrap --link のときだけMINT_LINK_PATHへのlinkが作られる

ので、あまり気にしなくてもいいかと。MINT_LINK_PATH を変えると切り分けはできそうですが、一方で.zshrcなどでパスを通す必要もでてきて、ちょっとだけ複雑さも増してしまいますね。

おそらくmint installmint bootstrap --linkは、Homebrew(+Brewfile)ライクに使いたいときだけ利用すべきものな気がします。「Brewfileを使ってPCセットアップ時にほしいバイナリ全部入れておく」みたいな感じですね。

@uhooi
Copy link

uhooi commented Sep 11, 2020

mint run の時にはMINT_LINK_PATHへのlinkはつくられず MINT_PATH 内で完結する

なんと…
そしたら私の用途(プロジェクトごとにSwift製CLIツールをバージョン管理したい)では気にしなくてよさそうです。

@FromAtom
Copy link
Author

ですですー!ちなみに mint install swiftlint とかすると

$ mint install swiftlint                                                                    
🌱 Finding latest version of SwiftLint
🌱 Cloning SwiftLint 0.40.2
🌱 Resolving package
🌱 Building package
🌱 Installed SwiftLint 0.40.2
🌱 Linked swiftlint 0.40.2 to /usr/local/bin

となって、「Linkされたんやな」感がでますね。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment