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

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

カテゴリ一覧

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

一覧

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 公式 を訳してみた】PHPプロジェクトでComposerとNPMを使う方法(展開にはSCPを使用)

  GitLab DocumentationGitLab Continuous Integration (GitLab CI)GitLab CI 設定サンプル集
Dplをデプロイ・ツールとして使う>現在のページ

  

 
 

  このガイドは、「PHPプロジェクトの内容をNPMスクリプトでコンパイルする」開発形態について取り上げます。

  PHPやNode JSのバージョンは適宜選択することができます。

 ここではPHPとNodeJSの両方が入ったDocker環境を想定して説明を進めてまいります。
 なので、まずは「.gitlab-ci.yml」ファイルで、「image」を指定しますね。

======================
image: tetraweb/php
======================

  次に、「zip/unzip」パッケージをインストールして、「Composer」を使う準備をします。
 これは「before_script」の部分に設定します。

======================
before_script:
  - apt-get update
 
- apt-get install zip unzip
 
- php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
 
- php composer-setup.php
 
- php -r "unlink('composer-setup.php');"
======================

  さて、これで依存関係にあるソフトをすべて手に入れましたね。
 上のコマンドで「Composer」と「NPM」をインストールする準備が整いました。

 あとはその2つをインストールするだけです。
 上の文に続けて、次の3行を追記しましょう。 

======================
 - php composer.phar install
 - npm install
 - npm run deploy
======================

  ちなみに、最後の「npm run deploy」については、これから使っていくGulp(ビルドツール)のスクリプトです。
 Gulpには次の役割を任せます。

  1. CSS & JSのコンパイル
  2. spritesの作成
  3. その他アセット(画像、フォント)のコピー
  4. ストリングスの交換


 これらの加工がされたファイルは全て「build」フォルダに移し替えられ、ライブサーバーへのデプロイが準備されていきます。
 

  ライブサーバーに送られたファイルを変換する方法

  これには、複数の方法( rsync, scp, sftp )があります。
 今回は「scp」を使っていきます。

  まずは、GitLab 秘密変数(gitlab.example/your-project-name/variablesのようなアドレス)にアクセスして、「STAGING_PRIVATE_KEY」という変数を探します。この変数に、サーバーのプライベートsshキーを定義します。

  セキュリティの関係上、ユーザーがこれらのファイルにアクセスするのは、内容を変更せざるをえないときだけにしましょう。

  プライベートキーはありましたか?無かったら作ってくださいね。

 変数を設定したら、「before_script」に次の設定を加えます。

======================
before_script:
  # - ....
  - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
  - mkdir -p ~/.ssh
  - eval $(ssh-agent -s)
  - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
======================

 

  この設定の意味:

  1. ssh-agent」をきちんと設定しないと、その後の「apt-get」つまり、ソフトをインストールすることができない。
  2. ~/.ssh」フォルダを作る
  3. bashを起動する
  4. ホストのチェックを抑止する(最初にサーバーに接続したときに、全てのjobを並列に接続する場合に、ユーザーにわざわざチェックを求める設定を止める)


 これらのjobを遂行するために常に必要になる要件は、すべて「before_script」以下に記述してください。

 

  デプロイ・展開の設定

  今回サーバーに設定したDockerイメージの関係上、アプリは「build」フォルダに展開しなくてはなりません。
 次のjobを設定します。

======================
stage_deploy:
  artifacts:
   paths:
   - build/
  only:
   - dev
  script:
   - ssh-add <(echo "$STAGING_PRIVATE_KEY")
   - ssh -p22 server_user@server_host "mkdir htdocs/wp-content/themes/_tmp"
   - scp -P22 -r build/* server_user@server_host:htdocs/wp-content/themes/_tmp
   - ssh -p22 server_user@server_host "mv htdocs/wp-content/themes/live htdocs/wp-content/themes/_old && mv htdocs/wp-content/themes/_tmp htdocs/wp-content/themes/live"
   - ssh -p22 server_user@server_host "rm -rf htdocs/wp-content/themes/_old"
======================

 

  この設定の意味は?

  1. only:dev」とは、ビルドが発動するタイミングを、「dev」ブランチにプッシュがあったときたげにするという意味がある。この部分に指定するブランチ名については適宜変更して構わない。この項目を削除してもビルド自体に問題が出るわけではない(ただし、高確率でややこしいことになるので非推奨)。
  2. ssh-add ...」 web UIからockerコンテナに追加したプライベートキーを指定している。
  3. ssh」で接続して、新たに「_tmp」フォルダを作成する
  4. scp」で接続して、(npmスクリプトで生成された)buildフォルダを、前に作成した「_tmp」フォルダにアップロードする
  5. ssh」で接続して、「live」フォルダを「_old」フォルダに移動する。そのあとに「_tmp」フォルダを「live」フォルダに移動する
  6. ssh」で接続して、「_old」フォルダを削除する


 このとき、出来上がったアプリ(artifacts)はどこにあるか気になりますね。
 これはすでにGitLab CIで「build」ディレクトリに移動するように指定してありますから、そこにあるはずです。
 必要とあらば、ダウンロードすることも可能です。

 

 

  なぜこのような方法を取ったか

 実際、ステージサーバーを使うだけなら、次の2行を設定するだけで十分なのです。

======================
- ssh -p22 server_user@server_host "rm -rf htdocs/wp-content/themes/live/*"
- scp -P22 -r build/* server_user@server_host:htdocs/wp-content/themes/live
======================

  上の長いコンフィグは、あくまで設定の意味を説明するために作った見本です。
 

  WordPressの開発がそうであるように、小さなコードの積み重ねが、かなり良いヒントになることがあります。

  •  今回説明したスクリプトと、「master」ブランチに適用するスクリプトとには少し差を持たせた方がよいでしょう。たとえば、「『master』ブランチはプロダクション・サーバーで、『dev』ブランチはステージサーバーで展開する」などのように簡単な使い分けをしておいた方が、何かと便利です。
  • プッシュ先は「live」の他に、「 WordPress official repo」(こちらはバージョン管理にSVNを使用している)にする方法もあります。
  • 一時的にi18n text domeinを生成することが可能です。


 今回、例示として作った「.gitlab-ci.yml」は次のようになりました。 

======================
image: tetraweb/php

before_script:
  - apt-get update
 
- apt-get install zip unzip
 
- php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
 
- php composer-setup.php
 
- php -r "unlink('composer-setup.php');"
 
- php composer.phar install
 
- npm install
 
- npm run deploy
 
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
 
- mkdir -p ~/.ssh
 
- eval $(ssh-agent -s)
 
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'

stage_deploy:
  artifacts:
   paths:
   - build/
  only:
   - dev
  script:
   - ssh-add <(echo "$STAGING_PRIVATE_KEY")
  
- ssh -p22 server_user@server_host "mkdir htdocs/wp-content/themes/_tmp"
   - scp -P22 -r build/* server_user@server_host:htdocs/wp-content/themes/_tmp
  
- ssh -p22 server_user@server_host "mv htdocs/wp-content/themes/live htdocs/wp-content/themes/_old && mv htdocs/wp-content/themes/_tmp htdocs/wp-content/themes/live"
   - ssh -p22 server_user@server_host "rm -rf htdocs/wp-content/themes/_old"
======================

 

 

 

 

 
PDF
更新日:2018-03-23 21:27:52 Hnoss 0  del.icio.usに追加   はてなブックマークに追加   twitterに投稿   facebookでshare
[ 原文 ] https://docs.gitlab.com/ee/ci/examples/deployment/composer-npm-deploy.html 原文ページプロジェクト並びにドキュメントファイルは、MIT Licenseのもと公開されています。(URL:https://gitlab.com/gitlab-com/gitlab-docs/blob/master/LICENSE) この記事の文章は、訳者の判断によりCreative Commons BY (version 3.0) を適用するものとします。
翻訳者ページをみる

この記事の翻訳者

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