LoginSignup
1
0

Gemfuryでaptリポジトリ作成してCIでpush

Last updated at Posted at 2022-02-06

概要

  • 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ファイルを見ており、それの設定に手間取った
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0