概要
- Gemfuryは無料で複数の形式のパッケージをアップロード・公開できる
- Debian/Ubuntuだとdeb形式のパッケージを使うが、これもアップロード・公開できる→aptリポジトリ
- それをCIでやる方法を記載する
準備
-
Gemfuryでアカウントを取得する https://gemfury.com/
-
アップロードするdebファイルを作成する
-
Gemfuryにログインし、
Profile > Tokens > FullAccessToken
をコピー- 個人用なのでFullAccessTokenを使いますが、仕事とかの場合はpush tokenにしたほうがいいかな?
-
CIの方の設定で以下のプロセスを追加(debianの例)
- fury-cliのインストール
echo "deb [trusted=yes] https://apt.fury.io/cli/ * *" > /etc/apt/sources.list.d/fury-cli.list
apt-get update -y
apt-get install -y fury-cli
- .netrcの追加(rootユーザで実行する場合の例)
echo "machine api.fury.io" > /root/.netrc
echo " login <gemfuryで使うメールアドレス>" >> /root/.netrc
echo " password <Token>" >> /root/.netrc
- パッケージの更新処理
if [ $(fury versions <パッケージ名> --api-token <Token> | grep <バージョン> | wc -l) -gt 0 ]; then
# アップロード済みのパッケージがあれば削除
fury yank <パッケージ名> -v <バージョン> --api-token <Token> ;
fi
fury push <アップロードしたい.deb> --api-token <Token>
トークンは秘密情報として扱いましょう, CircleCI, Travis, GitHub Action等々credentialを秘密の変数として使う方法はあるのでそれを使う。
Debian/UbuntuでGemfuryにアップロードしたパッケージを使う方法
- Gemfuryで発行されるトークンを使用して,
/etc/apt/auth.conf.d/
以下にconfファイルを作成する - 参考: APT_AUTH.CONF(5)
$ sudo cat /etc/apt/sources.list.d/fury.list
deb [trusted=yes] https://cli.gemfury.com/apt/ /
deb [trusted=yes] https://apt.fury.io/<Gemfury上のユーザー名>/ /
$ sudo cat /etc/apt/auth.conf.d/fury.io.conf
machine apt.fury.io
login <Gemfury上のユーザー名>
password <Gemfuryで発行されるトークン>
準備ができたら sudo apt-get update -y
すればパッケージが取得可能になるはず
備考
- fury-cliが内部で.netrcファイルを見ており、それの設定に手間取った