オンプレ版 GitLab で GitLab Pages する

このポストは、
 [やん事ない理由で Git*.com を使えない日々をオンプレ版 GitLab で乗り切る](https://qiita.com/hykisk/items/18dfa12ecac41f995e99#%E7%92%B0%E5%A2%83) の後続記事です。

## ゴール

プロジェクト: `http://192.168.100.201/group/pages-test` の master のコミットを契機に配置する静的コンテンツを
Pages: `http://group.192.168.100.201/pages-test` で見れること。

Pages: `http://{groupname or username}.{domain}/{repository}`

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134761/0f7f57d1-0292-b906-ad68-17ab00a1d40c.png" width="1250">

- - -

## 手順

1. Pages 有効化

    ```/etc/gitlab/gitlab.rb
    pages_external_url "http://192.168.100.201"
    #pages_external_url "http://192.168.100.201:10080" #ポートを指定したい場合 (GitLabのポートと同じでもOK)

    # アンコメントする
    gitlab_pages['enable'] = true
    gitlab_pages['dir'] = "/var/opt/gitlab/gitlab-pages"
    gitlab_pages['log_directory'] = "/var/log/gitlab/gitlab-pages"
    ```

    再構成

    ```sh
    $ gitlab-ctl reconfigure
    ```

1. 確認 :point_right:
    http&#58;//192.168.100.201/group/pages-test/pages を見れること。
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134761/90ba3d97-31c8-fce4-36b9-c2f6b36752c1.png" width="850">

1. GitLab Runner[^1] をインストール

    ```sh
    $ curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
    $ yum install -y gitlab-runner
    ```
    https://docs.gitlab.com/runner/install/linux-repository.html#installing-the-runner

1. ジョブを実行する Runner を登録

  1. 準備: `URL` と `Token` をメモ  
  http&#58;//192.168.100.201/group/pages-test/-/settings/ci_cd
  <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134761/d59b6c0a-c993-ab69-0ea7-9f761f6f7e20.png" width="850">
  1. 登録 ★部分を入力

      ```shell-session
      $ gitlab-runner register
      Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
      メモしたURL ★
      Please enter the gitlab-ci token for this runner:
      メモしたToken ★
      Please enter the gitlab-ci description for this runner:
      [gitlab.private.hykisk.com]:空文字でもOK★

      Please enter the gitlab-ci tags for this runner (comma separated):
      abc ★プロジェクトが実行するランナーを指定するためのキー ※後項の .gitlab-ci.yml で指定するものと一致させること。
      Registering runner... succeeded                     runner=dvJGQURH
      Please enter the executor: parallels, ssh, docker+machine, kubernetes, custom, docker, docker-ssh, shell,   virtualbox,     docker-ssh+machine:
      shell ★

      Runner registered successfully. Feel free to start it, but if it's running already the config should be   automatically     reloaded!
      ```

1. 確認 :point_right:
    http&#58;//192.168.100.201/group/pages-test/-/settings/ci_cd
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134761/1ff48abd-010c-288e-26d8-a9fa60558ff0.png" width="850">
1. ファイルを作成してコミット

    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134761/4ce8ad2e-fb97-eef4-e3ac-ef8ae447eb98.png" width="850">

    `gitlab-ci.yml`: テンプレートから作成して手でキー `tags` を追加
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134761/9e153136-1a4b-d8a7-24d1-688e6176dba6.gif" width="850">

    ```gitlab-ci.yml
    pages:
      stage: deploy
      script:
        - mkdir .public
        - cp -r * .public
        - mv .public public
      artifacts:
        paths:
          - public
      tags:
        - abc ★前項で設定した値を書く
      only:
        - master
    ```

    ```index.html
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <title>GitLab Pages</title>
      </head>
      <body>
    	Hello, GitLab Pages!
      </body>
    </html>
    ```

1. 確認 :point_right: ※fatal: git fetch-pack: expected shallow list で失敗する場合...[^2]
  http&#58;//192.168.100.201/group/pages-test/pipelines
  <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134761/a94fdaa5-6c42-cdc4-a77f-224e982c8323.gif" width="650">
1. hosts に追記 ※開発者が多い場合は...[^3]

    ```txt:%windir%\system32\drivers\etc\hosts
    # GitLab Pages
    192.168.100.201 group.192.168.100.201
    ```

1. 確認 :point_right:
  http&#58;//group.192.168.100.201/pages-test/
  <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134761/0f7f57d1-0292-b906-ad68-17ab00a1d40c.png" width="1250">

[^1]: GitLab Runner: ジョブを実行して結果をGitLabに送り返すために使用されるオープンソースプロジェクトです。(公式より)
[^2]: GitLab をホストしているサーバの Git を最新にしたらなおる場合がある。
  https://qiita.com/ucan-lab/items/568db1c68dab9d62169c
[^3]: ネットワーク管理者に相談の上 DNS の設定 (ドメイン名と IP をマッピング) したほうがよい。
  注意: その場合は GitLab をホストしているサーバの `/etc/hosts` に `127.0.0.1 {ドメイン名}` を追記する。