Comments (10)
@KeenS CI 環境ですが、来週少し時間ができそうなので、私の方で構築してみようと思います。まずは fork した方の個人レポジトリで試してみます。
いまのところの構想:
- Travis CI ではなく、Wercker を使う。Wercker はまだ使ったことがないのだが、以下のような利点があるようだ:
- ビルド環境として、自分で作った Docker イメージが使える。rustbook 入りの Docker イメージを用意しておけば簡単
- デプロイのサポートがしっかりしている。GitHub Pages へ push するときの credentials の管理が容易。(Travis CI だと暗号化したデータの扱いがイマイチで、merge 後のデプロイはいいが、PR 時では、暗号データの復号化ができないようなので、デプロイできない)
- PR 時の CI でも、生成した HTML を GitHub Pages へ push したい。といっても、ブランチは
gh-pages
の1つしか持てないので、pr/PR番号/
みたいなサブディレクトリを掘って、そちらにデプロイするか?(考え中)
from the-rust-programming-language-ja.
ありがとうございます。
PRでのHTML生成欲しいですね。Circle CIとかのように成果物を保存する機構があればそれで十分なのですがwerckerにはなさそうですね。私の方でも考えてみます。rustbookのバイナリを作ってcircle ci使うとかの手もあるかもしれないので。
from the-rust-programming-language-ja.
そうですね。wercker では成果物を保存することはできないようです。もし Circle CI でなにかできそうでしたら教えてください。(私は今まで Jerkins CI や Travis CI でテストを動かすくらいのことくらいしかやってこなかったので、Circle CI も wercker も未経験なのです)
あと、詳しくは Issue #9 (rustbook
のインストール方法を調べる)の方に書きますが、
まず、rustbook の入った Docker イメージを作ってみました。
それから、rustbook のバイナリは、pure Rust なくせに rustc に付随するライブラリに依存いていて、単体では動かないことがわかりました。musl libc によるスタティックリンクも rustbook では使えません。もし Circle CI で動かすなら、CI のステップの中で Rust nightly のインストールと rustbook のビルドの両方を行ったほうがいいかもしれません。
from the-rust-programming-language-ja.
遅くなりましたが、本件、ようやく着手しました。
PRでのHTML生成欲しいですね。Circle CIとかのように成果物を保存する機構があればそれで十分なのですがwerckerにはなさそうですね。
そうですね。wercker では成果物を保存することはできないようです。
一応、wercker にも、成果物を保存する機能はありました。そこで、試しに自分のリポジトリで、PR がオープン/更新された時に、wercker で HTML が生成されるようにしてみました。
成果物(HTML)の取得のしかた
- ウェブブラウザーで、上記ページを開く
- 「All checks have passed」の所にある「Show all checks」をクリックすると、「wercker/build — Wercker pipeline passed」と表示される
- 「Details」のリンクをクリックすると、このページ が開く
- 「save artifacts [Download]」をクリックすると、「Download artifact」という水色のボタンが表示されるので、それをクリックする。output.tar というファイルがダウンロードされる(このファイル名は変えられないようです)
- ターミナルから
tar xf output.tar
を実行して tarball を展開すると、artifacts というフォルダが現れる - artifacts の中にある、public-1.9.txz、または、public-1.6.txz を
tar xf public-1.9.txz
などとして展開する。(それぞれ、public/1.9/ と public/1.6/ に展開される) - HTMLファイルをウェブブラウザーで開く
まずは、この PR での HTML 生成の機能だけ使い始めたいと思います。設定ファイルや手順書などを整理してから、PR を上げますね。gh-pages への自動 push は、もう少し慣れてきたらやってみます。(また、比較のために、CircleCI も試してみたいと思っています)
それから、もう一点。PR の時に、HTML をダウンロードしないでレビューする方法も試しています。まずは無料でできそうな、Heroku の新サービス「Review Apps」を試そうとしています。
いまは、その前段階として、静的な HTML を Heroku からサーブする実験をしています。実は、Heroku は今日初めて使ったのですが、とりあえずは、nickel.rs によるウェブサーバーで、HTML 生成済みの Rust 日本語ドキュメントを表示できるようにはなりました。(nickel.rs も初めて触りましたが、この程度の内容なら簡単にできますね)
リポジトリ内の構成は、当リポジトリとは違うのですが、こちらのテスト用のリポジトリからデプロイしています。
この後、Review Apps の実験をして、もし良さげなら、当リポジトリが Heroku にデプロイできるようにするために、Heroku の build pack というものをカスタマイズします。
from the-rust-programming-language-ja.
(また、比較のために、CircleCI も試してみたいと思っています)
CircliCI も試し始めました。とりあえず、Rust や rustbook のインストールなどは後回しで、あらかじめ生成済みの HTML を、成果物として保存するところだけ試してます。成果物が output.tar という1つのファイルに固められてしまう wercker とは異なり、ウェブブラウザーから、個別のファイルを開けるので、ファイルをダウンロードせずにレビューできて便利ですね!
Artifacts タブの内容 https://circleci.com/gh/tatsuya6502/the-rust-programming-language-ja/3#artifacts
$CIRCLE_ARTIFACTS/
1.6/
book/ <= TRPL
favicon.inc
footer.inc
full-toc.inc
index.html <= ドキュメントホーム
jquery.js
main.css
main.js
playpen.js
rust.css
rustdoc.css
search-index.js
public-1.6.txz <= public/1.6 全体をアーカイブしたもの
(標準ライブラリのドキュメントなどは、非圧縮だとサイズが大きいので、$CIRCLE_ARTIFACTS/1.6
には置かず、public-1.6.txz だけに含めるようにしてます)
CircleCI のアカウントがない人や、プロジェクトへのアクセス権がない人には、Artifacts のタブが表示さないようになっているみたいですが、上の URL (...#artifacts
)を指定すると、(タブは無くても)成果物が表示されますね。これは、私にとっては都合がいいのですが、正しい動作なのか(アクセスできていいのか)微妙です。ま、public なプロジェクトなのだから、いいのかな。
rustbook のインストールや、PR を受けた時の動作も試してみますね。
from the-rust-programming-language-ja.
CircleCI で Rust と rustbook のインストールができるようになったので、PR での HTML 生成について試してみました。
やはり、成果物(生成された HTML)がブラウザーで直接開いて見られるところが、wercker より使いやすいです。また rustc や rustbook がキャッシュされるようにしたところ、ビルド時間も4分弱と、十分短く抑えられました。(wercker だと1分半程度)
レビュー時の使いやすさを優先して、本プロジェクトでは、CircleCI を使おうと思います。CircleCI を使えるようにするための PR を、今夜か明日、オープンしますね。
以下、PR のテストについてです。
成果物(HTML)の閲覧のしかた
- ウェブブラウザーで、上記ページを開く
- 「Some checks were not successful」の所にある「Show all checks」をクリックすると、「 ci/circleci — Your tests passed on CircleCI!」と表示される。(なお、wercker の方が fail しているのは、このブランチに、wercker の設定ファイルが無いため。無視してよい)
- 「Details」のリンクをクリックするとレポートページが開く。しかし、このプロジェクトの編集権限がない人には Artifacts(成果物)のタブが表示されない。
- URL の後ろに
#artifacts
を追加して、https://circleci.com/gh/tatsuya6502/the-rust-programming-language-ja/22#artifacts で開き直すと、成果物のリストが表示される。 - 例えば、1.9/book/getting-started.html を
クリックすると、生成された HTML を見ることができる。
from the-rust-programming-language-ja.
レビュー時の使いやすさを優先して、本プロジェクトでは、CircleCI を使おうと思います。CircleCI を使えるようにするための PR を、今夜か明日、オープンしますね。
PR をオープンしました → #149
よろしくお願いします。
from the-rust-programming-language-ja.
gh-pages ブランチへの自動 push も実装して、PR をオープンしました → #151
from the-rust-programming-language-ja.
PR #149 と #151 をマージして、当初予定していた機能を一通り実現できました。
- On PR でCI
- On master mergeでCI
- On master merge CIが通ったらgh-pagesブランチに自動push
一番最近の CI レポートはこちらです:https://circleci.com/gh/rust-lang-ja/the-rust-programming-language-ja/4
本 issue は対応完了ということで、クローズします。
from the-rust-programming-language-ja.
🙏 👏
from the-rust-programming-language-ja.
Related Issues (20)
- 不安定なフィーチャ->不安定な新機能 HOT 4
- gh-pagesブランチをやめる HOT 1
- 目次の line-height を小さく HOT 1
- 5.1 スタックとヒープ 複雑な例のfの値 HOT 3
- Help with translating the site? HOT 2
- 中の人の追加 HOT 4
- Fork からの PR (Pull Request) で CI が走らなくなってしまった HOT 6
- PDF版の自動更新 HOT 18
- GitHub Topicsを設定する
- 和訳におけるrustupのインストール方法が古い HOT 2
- CONTRIBUTINGの見直し
- ささいな誤字: 音->こと
- mdBooksを使う HOT 1
- Rangeの訳をレンジから範囲に HOT 4
- 次に翻訳する文書を決める HOT 2
- Inherentの訳語 HOT 1
- 1.9 以降への追従(特に lifetimes.md) HOT 2
- PDFのレンダリングミス HOT 6
- CI: Circle CI 2.0へ移行する HOT 3
- 第1版TRPLに、最新版(2018 Edition対応)への誘導リンクを設定する
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from the-rust-programming-language-ja.