概要
Github Enterprise の Organization 移行を実施した際に CasperJS と PhantomJS でヘッドレスブラウザより操作し移行しました。
Github 上で API がない(はず?)為、この様な対応をしました。
どちらかというと CasperJS+PhantomJS でブラウザ上の試験作りを楽しんでいたこともあり
試してみてすんなりできたので採用した経緯になります。
ヘッドレスブラウザとは?
GUI なしのブラウザを CLI で利用するというもの。
ページ描画や画像ロード、ログインしたりとフロントの試験で期待される機能を持っています。
三行まとめ
- CasperJS + PhantomJS でログイン認証はじめブラウザ操作で Transfer する工程を実行
- 移行後、元の URL が移行先にリダイレクトされるか確認
- 期待する要素が時間内に取得できないときはページをキャプチャ
やってみる
Get Started ご参照ください。
GitHub - kenzo0107/transfer-repository-on-ghe: Transfer repositories to a new owner by using headless browser with CasperJS and PhantomJS.
Transfer repositories to a new owner by using headless browser with CasperJS and PhantomJS. - kenzo0107/transfer-repository-on-ghe
以下にも手順まとめてます。
Clone
1 2
| macOS%$ git clone https://github.com/kenzo0107/ghe-org-transfer macOS%$ cd ghe-org-transfer
|
scripts/ghe-org-transfer.js の <your ****> 編集
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| var config = { siteRoot: 'https://<your github domain>', loginPath: '/login', loginParams: { email: '<your email>', password: '<your password>', }, viewportSize: { width: 3000, height: 2500, }, paths: ['<your owner>/<your repository>'], destOrganization: '<your destination of organization>', reason: 'transfer this repository to new oragnization', };
|
移行イメージ
- ex) hoge/mywonderfulrepo —> moge/mywonderfulrepo
1 2 3 4
| paths: [ "hoge/mywonderfulrepo" ], destOrganization: 'moge',
|
paths は複数指定しても問題ありません。
移行実施
※ 移行後に元の URL でリダイレクトされるか試験しています。
1 2 3 4 5
| [url] https://github.aiueo.com/hoge/mywonderfulrepo/settings [step] fill '#transfer_confirm > form' [step] input checkbox [step] click the button labeled "Transfer" (^-^) redirect ok:https://github.aiueo.co.jp/hoge/mywonderfulrepo to https://github.aiueo.co.jp/moge/mywonderfulrepo
|
総評
以前 Grafana のグラフのスナップショットを撮る Grafana API がうまく動作しなかったのも
CasperJS+PhantomJS で取得する様にできました。
いやはや便利 ♪
全然別件ですが、サイトの認証に利用される reCAPTCHA の突破など挑戦してましたがうまく行かず…
うまくいったぜ!という方、是非教えてください m(_ _)m