「みんなの翻訳」は、世界中の文書をみんなで協力して翻訳するサイトです。

みんなの翻訳ロゴ
ブクタブ
翻訳サイト

カテゴリ一覧

このサイトについて 新規登録はこちら お試し翻訳

一覧

2017/07/28

メンテナンス終了のお知らせ

2017/7/25-2017/7/28に実施したメンテナンスは、2017/7/28/14:20に終了いたしました。 ご協力をいただき、ありが…

List

kyo2018

English⇒Japanese

Hnoss

English⇒Japanese

yasukazu

English⇒Japanese

shikimi

English⇒Japanese

ホーム > 翻訳記事

翻訳記事

GitLab CI にプッシュしたものを GitHubに出力する | from: Leow Kah Man - Tech Blog

  今僕は、GitLabでウェブサイトを公開するためにGitLab CIランナーを使っています。でも、今度はそれをGitHub pagesでも公開できるようにしてみたい。
 もしも、ネットのコンテンツを、場面に応じて別のDNSを使い分けて公開できたら、便利そうだと考えました。
 CIにミラーしたコンテンツを貼り付ける設定を加えてみたら、実現可能な気がしたのです。

 

  動機について

  SLAのほかに、無料で使えるサービスプロバイダといえば、 GitLab PagesとGitHub Pagesの2つが考え付きます。どちらのプロバイダも、これまでの経歴を見る限りでは、比較的サービスが安定しており、信用においては文句なしです。どうしてあまり目覚ましい評判が聞こえてこないのが、不思議なくらいですね。
 この2つを連携させることで、さらなる業務効率化と高いパフォーマンスが獲得できるのでは、というのが今回の動機です。

  手っ取り早い方法が、コンテンツのミラーを張り付ける方法で、これがDNSを使い分けるのに効果的なようです。
 DNSについては、CloudFlareのorange cloudを使って、トラフィックを別のDNSに転送する動作の高速化と、管理の利便性を図りました。

  これから皆さんに、GitLab CIで「GitLabでコンテンツのビルドをしてからGitHubで公開する」設定をお教えします。サードパーティーのDNSトラフィックを設定したり、いざという時のフェイルオーバーなどの手段に応用が利きそうですので、ぜひお役立てください。
 

  前提条件

  まず、Gitに関する基本的な知識があること。GitLab と GitHub の両方にレポジトリを持っていること。この場合、レポジトリはからの状態から開始しても構わない。

 以下の設定は、僕が以前に執筆した記事『僕がHugo静的サイト・ジェネレータをGitLabで使うときにしたCI設定
の、.ymlファイルのすぐ下に追加したものです。前の記事もよろしくなのです。
 

 GitLab CI YAMLの設定

 

===============================
image: node:6.11.2-alpine
before_script:
- apk update && apk add openssl ca-certificates git
- npm install
- PATH=$(npm bin):$PATH
- hugo version
pages:
script:
- npm run build
- git clone --depth 1 https://<username>:$GITHUB_ACCESS_TOKEN@github.com/<username>/<username>.github.io.git
- mkdir <username>.github.io.new
- cp -a <username>.github.io/.git <username>.github.io.new/.git
- cp -a public/* <username>.github.io.new
- cd <username>.github.io.new
- git config user.email "<GitHub email address>"
- git config --global user.name "<Your name>"
- git add -A
- git diff-index --quiet HEAD || git commit -m "$CI_SERVER_NAME $CI_PIPELINE_ID"
- git push
artifacts:
paths:
- public
only:
- master
===============================

 設定の意味:

 

  1. apk add git - 今回採用したDockerイメージには、まだGitがインストールされていないため、Gitを導入するコマンドが必要。
  2. git clone --depth 1 - GitHubレポジトリの最新バージョンをクローンしてくる。
  3. このレポジトリは、<username>.github.ioにダウンロードされる。
    $GITHUB_ACCESS_TOKEN は、GitLabの秘密変数で、GitHubアカウントにアクセスする際にトークンの役割を担う。GitHub用トークンを作成すると(トークン名は任意でつけられる)、「public_repo」へのアクセスが可能になる。
    GitLab Settings > Pipelines」にて、「GITHUB_ACCESS_TOKEN」という名前の秘密変数を作成し、それに対応するものとしてアクセストークンをコピペすると確実である。
  4. mkdir <username>.github.io.new - 発表する前段階に使われる一時フォルダ
  5. cp -a <username>.github.io/.git <username>.github.io.new/.git - 「.git」フォルダの内容を一時フォルダにコピーする内容。
    ディレクトリをクローンする操作とはまた違うことに注意。
  6. cp -a public/* <username>.github.io.new - Hugo静的サイトジェネレータは、本来「public」ディレクトリに出力するように設定されているが、これは出力ディレクトリの内容を一時ディレクトリにコピーする内容。
  7. cd <username>.github.io.new - カレントディレクトリを、最新のコンテンツが封入された一時ディレクトリに差し替えるコマンド。
  8. git config user.email "<GitHub email address>" - GitHub登録しているメルアドを入れる。
  9. git config --global user.name "<Your name>" - GitHubのユーザー名を入れる。
  10. git add -A - (新規作成したファイル、新たな変更、削除した部分等)全ての変更をレポジトリに反映させる
  11. git diff-index --quiet HEAD || git commit -m "$CI_SERVER_NAME $CI_PIPELINE_ID" - 変更をコミットする。
    ここでpublicディレクトリに変更があったかどうかが判別される。なので「.gitlab-ci.yml」は、「public」ディレクトリに置かないように注意。
    コミットがあったときには、GitLabサーバー側に、プロジェクト名とパイプラインIDが明記されたコミットメッセージが送付される。
  12. git push - コミットされた変更を、GitHubにプッシュする。

  この設定を追加したら、早速GitLabにプッシュしてみて、きちんとGitHubにプッシュがされるかどうかを確認することをお勧めします。

 

  トラブル・シューティング

  GitHub CNAME file

  独自ドメインを使ってGitHubにコンテンツを公開する時には、GitHub用のCNAMEファイルを作成しておかなくてはなりません。
 

  CloudFlare SSLがエラーを起こす

  DNSレコードをに切り替える(<username>.github.ioが登場したあたり)際に、CloudFlareのSSLレベルを「Full (strict)」を「Full」に引き下げておくと、うまくいく場合があります。

 

  チップをください。

  この記事はお役に立ちましたか?もしよければ、僕にお茶代を渡していただけると嬉しいです。励みになります。(原文ページからをおすすめします。)
www.paypal.me/leowkahman/12
bitcoin:14vH7vDj7eyvvc7mxCkrgTx2HUntpeKhAn
www.leowkahman.com/images/bitcoin.png
 

 

PDF
更新日:2017-12-11 23:59:39 Hnoss 0  del.icio.usに追加   はてなブックマークに追加   twitterに投稿   facebookでshare
公開ノート

※CIのコードはMIT Licenseだそうです。

[ 原文 ] https://www.leowkahman.com/2017/09/09/gitlab-ci-push-output-to-github/ Creative Commons License この作品は、クリエイティブ・コモンズ・ライセンスの下でライセンスされています。
クリエイティブ・コモンズ・ライセンス
翻訳者ページをみる

この記事の翻訳者

Hnoss さんの翻訳記事

[翻訳]GitLabハンドブック>法的文書に署名する

現在の位置: チームハンドブック 目次 >法的文書に署名する  法的文書への署名は、他社・他組織などに直接出向いてNDAsを取り扱った人物を除いては、Cレベル エクゼクティブのみが…2018-04-07 23:31:41

[翻訳]GitLabハンドブック

現在の位置:チームハンドブック 目次  このハンドブックは、GitLabという企業が、どのようにサービスを維持運営していくかを記したものだ。ここに書かれていることが、わが社の中核レ…2018-04-07 23:18:22

【GitLab Pages 公式 を訳してみた】GitLab Pages 説明書 

  新しいドキュメント はこちらです。このドキュメントは旧式です。 GitLab Documentation > User documentation > Projects >GitLab Pages 説明書 …2018-04-06 16:52:11

【GitLab 公式 を訳してみた】GitLab Pages 説明書(改訂版)

GitLab Documentation > User documentation > Projects >GitLab Pages 説明書  GitLab Pagesなら、無料でウェブサイトをホスティングできる。  GitLabにプロジェクトレポジト…2018-04-06 16:50:36