Travis CI でGitHubのReleasesにファイルをアップロードする。2018-12-14


概要

GitHubのReleasesへのファイルのアップロードをTravis CIを使って行います
ググったらいくつか記事は見つかったもののちょっと情報が古いものが多かったので、2018年12月の状況として記事にします

やること

  1. travis コマンドのインストール
  2. travis setup releases にて .travis.yml の作成
  3. .travis.yml をpush

1. travis コマンドのインストール

% gem install travis

上記コマンドでインストールします
ffi というgemのインストールでエラーになるかもしれませんが、解決方法は割愛します

2. travis setup releases にて .travis.yml の作成

ここが本題

あとは以下のコマンドで .travis.yml を作成してほぼ完了です

% touch .travis.yml # .travis.ymlが存在しないとエラーになるのでtouchしましたが、すでにある場合は不要です
% travis setup releases --pro -r abetomo/csv-select
Username: abetomo
Password for abetomo: ***
File to Upload:
Deploy only from abetomo/csv-select? |yes|
Encrypt API key? |yes|

コマンドのオプション

  • abetomo/csv-select は例です。自分のリポジトリを指定します

入力

  • Username:
    • GitHubのユーザ名
  • Password for xxx:
    • GitHubのパスワード
  • File to Upload:
    • アップロードしたいファイルを指定するのだけれど空でEnterでも良いです。(あとから .travis.yml を修正すればよいので)
  • Deploy only from xxx/yyy? |yes|
    • そのままEnter
  • Encrypt API key? |yes|
    • そのままEnter

.travis.yml

実行すると .travis.yml が作成されています

travis.yml
deploy:
  provider: releases
  api_key:
    secure:(略)
  file: ''
  on:
    repo: abetomo/csv-select

あとは必要な情報を追加していきます。
例として自分の最終形を載せておきます

travis.yml
language: node_js
node_js:
- 10
before_deploy:
- npm run pkg
deploy:
  provider: releases
  api_key:
    secure: (略)
  file_glob: true
  file: build/Release/csv-select-*
  skip_cleanup: true
  on:
    tags: true
    repo: abetomo/csv-select

設定内容の詳細は昔から変わっていないので割愛します

3. .travis.yml をpush

ふつうにpushするだけなので割愛します

4. 補足

私の場合はtagがコミットされたらdeployする設定だったので、tagをコミットしたらGitHubのReleasesにファイルをアップロードされていました

まとめ

  • GitHubでtokenを作成したり...のような手順がいらなくなった
  • travis setup releases を実行するだけで良くなったので楽でした

「GitHubでtokenを作成したり...」について補足

GitHubの Personal access tokenstravis コマンドが作ったtokenを確認できます