trpl-ja-pdf icon indicating copy to clipboard operation
trpl-ja-pdf copied to clipboard

サブモジュール "the-rust-programming-language-ja" の自動更新

Open tatsuya6502 opened this issue 8 years ago • 7 comments

Travis による CI 実行時に、サブモジュール "the-rust-programming-language-ja" を最新版に自動更新するように変更します。以前検討した この案 をベースにしています。

現在の CI からの変更点

  1. PDF を生成する前に、サブモジュール "the-rust-programming-language-ja" のディレクトリで git pull origin master し、最新のリビジョンを取得する 。(.travis.yml ファイルの変更)
  2. PDF の生成に成功したら、サブモジュールのリビジョンをコミットし GitHub 上の同じブランチへ push する。(ci-scripts/commit-trpl-submodule-revision.sh で実現) なお、その際、コミットメッセージに [ci skip] の文字列を含めることで、これをトリガーにした新たな CI が起動することを防ぐ。
  3. 現在のブランチが master ブランチの時だけ、生成した PDF を gh-pages ブランチへ push する。(ci-scripts/publish-pdf.sh で実現)

CI 実行例

テストのために、本リポジトリのフォークで CI を実行しました。

  • 2の結果:https://travis-ci.org/tatsuya6502/trpl-ja-pdf/builds/254070203
  • 3の結果:https://travis-ci.org/tatsuya6502/trpl-ja-pdf/builds/254082362

@y-yu さん、レビューをお願いします。

tatsuya6502 avatar Jul 16 '17 08:07 tatsuya6502

@tatsuya6502 さん。

ありがとうございます。 1つ質問なんですが、このPRはthe-rust-programming-language-jaリポジトリが更新されたときにPDF版が自動で生成される、ということを達成しようとしているということでよいでしょうか。それとも、Travis CIを1日1回などペースで定期的に実行するという感じでしょうか。

y-yu avatar Jul 18 '17 07:07 y-yu

@y-yu さん

このPRはthe-rust-programming-language-jaリポジトリが更新されたときにPDF版が自動で生成される、ということを達成しようとしているということでよいでしょうか。それとも、...

はい、そうです。この PR では前者を達成しようとしています。

もちろん、この PR をマージしただけでは不十分で、the-rust-programming-language-ja(trpl-ja)に更新があったことを検知できません。そこで、この後、trpl-ja の Circle CI ジョブに修正を加え、trpl-ja の master ブランチが更新されたときに、こちら(trpl-ja-pdf)の Jenkins CI ジョブを自動起動するようにします。具体的には Travis CI ドキュメントの このページ で解説されている curl コマンドを使った方法を用います。

trpl-ja の Circle CI ジョブの修正は、数日中に行う予定です。(PR を上げた時点でお知らせします) その PR がマージされたら、trpl-ja が更新されるごとに trpl-ja-pdf の Jenkins CI ジョブが起動され、PDF が自動生成されるようになります。

tatsuya6502 avatar Jul 18 '17 09:07 tatsuya6502

@tatsuya6502 さん。

なるほど! 承知しました。 そういう前提で変更点を詳しく見てみることにします。

y-yu avatar Jul 18 '17 13:07 y-yu

trpl-ja の Circle CI ジョブの修正は、数日中に行う予定です。

こちらですが、 trpl-ja の方へ PR を上げました。 https://github.com/rust-lang-ja/the-rust-programming-language-ja/pull/278

tatsuya6502 avatar Jul 18 '17 13:07 tatsuya6502

レビュー、ありがとうございました。ご指摘の2点は修正しました。

が、問題が1つあることに気づきました。修正できるか今夜(?)調べますので、まだマージしないでください。

今回、フォークしたリポジトリ(tatsuya6502)のブランチ(auto-update-submodules)で作業しているのですが、PR を上げたままコミットすると、Travis CI のジョブが2つ走るようです。

  • PR 元のリポジトリ: https://travis-ci.org/tatsuya6502/trpl-ja-pdf/builds/255883615
  • PR 先のリポジトリ: https://travis-ci.org/rust-lang-ja/trpl-ja-pdf/builds/255883619

前者は期待通り動いているのですが、後者はそうではありません。commit-trpl-submodule-revision.sh がサブモジュールの変更を trpl-ja-pdf の master ブランチに commit して、push しようとします。(deploy.key の decrypt ができなかったのか、push には失敗しています) こういう場合には、PR 先のリポジトリでは commit-trpl-submodule-revision.sh は何もしない方がいいと思います。修正できるか調べてみます。

tatsuya6502 avatar Jul 21 '17 01:07 tatsuya6502

承知しました。

y-yu avatar Jul 21 '17 08:07 y-yu

メモ:テストリポジトリで実施したテスト結果(7/22/2017)

No. リポジトリ ブランチ アクション Travis Job TRAVIS_ EVENT_TYPE TRAVIS_ BRANCH TRAVIS_ PULL_REQUEST TRAVIS_ PULL_REQUEST_ BRANCH TRAVIS_ SECURE_ ENV_VARS MY_SECRET_ VALUE
1 root master push root #3 (master) push master false true [secure]
2 root local-branch1 push root #4 (local-branch1) push local-branch1 false true [secure]
3 root local-branch1 open PR #1 to master root #5 (master) pull_request master 1 local-branch1 true [secure]
4 root local-branch1 push root #6 (local-branch1) push local-branch1 false true [secure]
root #7 (master) pull_request master 1 local-branch1 true [secure]
5 root master merge PR #1 root #8 (master) push master false true [secure]
6 fork fork-branch1 push fork #2 (fork-branch1) push fork-branch1 false false
7 fork fork-branch1 open PR #2 to master root #9 (master) pull_request master 2 fork-branch1 false
8 fork fork-branch1 push fork #3 (fork-branch1) push fork-branch1 false false
root #10 (master) pull_request master 2 fork-branch1 false
9 root master merge PR #2 root #11 (master) push master false true [secure]

tatsuya6502 avatar Sep 03 '17 07:09 tatsuya6502