[[GitLab一覧]]
[[GitLab]]

* 目次 [#la6e12bc]
#contents

* 動機 [#z55447e1]
GitLabを立ち上げて、ReadMeなどの閲覧でMarkDown書いて、そんでもってPlantUmlがmarkdown内に記述できたら、以下のメリットがあるのではないかと思った

** メリット [#kab36434]
テキストなので、diffを使った差分がわかるので以下のメリットがある。

- 汎用的なツールで違いを見つけることができる。つまり、低コスト

- 差分だけの確認でよいので、時間の節約

- テキストなので、成果物のファイルサイズが小さくて済むので、マシンリソースの節約

- gitがつかえるので、分散管理でドキュメントの消失に強い

* GitLabをDockerをつかってインストール [#f79010c2]

公式サイトの以下のページを見る

https://docs.gitlab.com/ee/install/

インストール方法はたくさんあるが、今回はdockerを使ったやり方にする

ローカルサーバとしてたちあげてみるだけなので、メールの認証とかの設定は行わず、rubyのインタプリタツールを直接触って、サーバに直接パスワードを書き込む方式とする。

** dockerを利用したGitLabのインストール [#dd55d77f]

今回は、どの環境でも素早く構築できることを信じてDockerでインストールする方法をためしてみようと思う。

https://docs.gitlab.com/ee/install/docker.html

Docker for Windows は公式にはサポートされていないようだ。でもやりたいのは、ローカルマシンのwindows上で動作させることだからなんとかやってみる。

成功事例の以下のブログ記事を参考にしてみよう。

***Windows10にDocker ComposeでGitlabを導入 [#qec795ad]
https://qiita.com/peanuts2013/items/105be140eb9826cfdb2d

*** Windows+Docker(Compose)でGitlabをローカルに立ち上げた時の話 [#q9e96503]
https://qiita.com/beeeegle/items/b8d8da113f272f61af44


*** gitlabのDockerイメージ [#if2e5780]
https://hub.docker.com/r/gitlab/gitlab-ee/

いや、まてよコミュニティーエディションは、こっちか
https://registry.hub.docker.com/r/gitlab/gitlab-ce/

こっちがコミュニティーエディションのほうが無料のはず。まあ、そんなことは気にしなくても、dockerを使ったインストールのブログをあされば、docker-composeの設定が書いてあるとおもうから、それをつかえばいい。

*** 機能の比較 [#o6733efb]
https://about.gitlab.com/features/?stage=plan

無料で使える機能が充実している、よっぽど使い倒す気持ちがない以上は無料プランでよいとおもった。

JIRAとも連携できるのか、ふむふむ。


* 手順 [#ye66473d]

*** 端末のIPアドレスを調べる [#dda0e021]
 ipconfig -all

** hostsファイルにローカルのIPアドレスの別名を登録しておく [#y7b70353]
以下の説明では、調べたIPアドレスを以下名前でhostsファイルに登録したものとする

 調べたIPアドレス gitlab1

保存すると、すぐに適用されるようだ

*** なぜこうするかというと、 [#c16ecb98]

- wifi接続のローカルのマシンだとIPアドレスが不安定だし、macアドレスで固定するにしても、会社の環境だとルータの設定さわらせてくれないことも考えられる。
- localhostを使う場合だと、他の同じwifi接続のマシンから見たときにplantumlサーバがlocalhostになってしまって、うまくplantumlの画像が生成されない。

だから、IPアドレスが変更になってしまっても、最小限の修正で復帰できて、他サーバからもアクセス可能にするためにhostsをつかう運用が良いのだ。


** 手順2 docker-compose.ymlを作る [#jf391b4f]

docker-compose.ymlとは、複数のdockerで立ち上げるサーバの設定ファイルみたいなもので、dockerは停止させるとdockerに保存したファイルは初期化されやすいので、そのサーバ内で使うデータは     volumes: で指定したところに格納するようになっている。

*** docker-compose.yml [#g1a440cc]

 version: "3.9"
 services:
   web:
     image: 'gitlab/gitlab-ce:latest'
     restart: always
     hostname: 'gitlab.example.com'
     environment:
       TZ: "Asia/Tokyo" 
       GITLAB_OMNIBUS_CONFIG: |
         external_url 'http://gitlab1:8929'
         nginx['redirect_http_to_https'] = true
         gitlab_rails['gitlab_shell_ssh_port'] = 2224
     ports:
       - '8929:8929'
       - '2224:22'
       - '443:443'
     volumes:
       - 'C:\\gitlab\\config:/etc/gitlab'
       - 'C:\\gitlab\\logs:/var/log/gitlab'
       - 'C:\\gitlab\\data:/var/opt/gitlab'
   plantuml:
     image: plantuml/plantuml-server
     restart: always
     ports:
       - "8080:8080"
     environment:
       TZ: "Asia/Tokyo" 


参考URL: https://qiita.com/beeeegle/items/b8d8da113f272f61af44

*** 上記のvolumesdで設定したディレクトリがなければ、ディレクトリを作成しておく [#q20eac2c]

** 手順3 gitlabとplantumlサーバを立ち上げる [#t99254a4]

以下のコマンドで、上記で設定したdocker-compose.ymlで設定した内容でdockerが起動する。
 docker-compose up -d

起動には数分かかる。起動中は以下のコマンドでstartingと表示される

 docker-compose ps

起動が完了すると

 healty

という状態になる。

docker-compose.ymlのvolume:で指定したディレクトリにgitlabのファイルが共有されるようになる。


** 手順4 gitlabの設定ファイルにplantumlサーバとのリダイレクト設定できるように設定を追記 [#ya542138]

gitlabからplantumlへは、gitlab内のnginxサーバのプロキシ設定を以下の設定を追記することで行う。

参考: https://docs.gitlab.com/ee/administration/integration/plantuml.html

*** ファイル名:/etc/gitlab/gitlab.rb [#n3c30aa5]

 # Docker deployment
 nginx['custom_gitlab_server_config'] = "location /-/plantuml/ { \n proxy_cache off; \n    proxy_pass  http://gitlab1:8080/; \n}\n"

捕捉:ここで躓く人は、以下のサイトを見るといいのかもしれない。

https://qiita.com/RYO-4947123/items/cf138989eebf12e45601

*** 設定を反映させる [#g97cd26c]
 # 立ち上がっているdockerのコンテナ名を調べる
 docker-compose ps

 # コンテナに接続
 docker exec -it コンテナ名 bash

 # 設定を反映させる
 gitlab-ctl reconfigure

** 直接パスワードを登録する [#k5e6a568]
参考: 
https://e-penguiner.com/gitlab-with-docker-onpremise/

*** 立ち上がっているGitLabにbashで接続する [#vf6ede7f]


*** rubyのツールを立ち上げる [#a2f154ee]

dockerコンテナ内のbash上で以下のコマンドを打つ

 gitlab-rails console -e production

※起動には数分かかります

** ログインできるようにする。 [#n7bdc680]

gitlabのdocker版はメールサーバまでは入っていない。設定方法は有るらしいが、
数人で使う程度ならば、パスワードはgitlabに以下に示す手作業でいれることができる。


*** rubyのインタプリタが動作するのでパスワードを設定する [#g37735cb]

 user = User.where(id: 1).first

 user.password='設定したいパスワード'

 user.password_confirmation='設定したいパスワード'

 user.save!

 exit

*** gitの管理者でログイン [#v04d9f24]
ユーザを追加する前に、root権限でログインしておく

以下の手順で認証のメールが必要な手続きをしないようにしておく

- メインメニュー [管理者]をクリック

- 設定 [全般的]をクリック


- Sign-up restrictions [Expand]をクリック


- "Require admin approval for new sign-ups"のチェックをはずす

これで、ユーザ追加後にログインできるようになった。




*** rootユーザ以外の場合 [#kb0282f0]

ユーザ登録をすると、パスワードがランダムに割り振られるので、上記の

 user = User.where(id: 1).first

の数値1を適宜増やしてパスワードを直接いれて保存するのがよいと思う。

ただし、パスワードをいれたあと、以下の設定が無いとログインができない。




* GitLabでPlantUmlを使う手順 [#s5375ad8]

plantumlをgitlabで使うには、設定で有効にしないといけない

** 手順 [#qca3dc23]

 Main menu の Adminをクリック

 Settings の Generalをクリック

 PlantUML セクションを広げる

 Enable PlantUML のチェックボックスをオンにする

 URLには、http://gitlab1:8080 と入れる

*** 参考:gitlabのplantuml設定を有効にする  [#xccfabbb]
https://docs.gitlab.com/ee/administration/integration/plantuml.html#configure-your-plantuml-server



* SSHキーの登録 [#g8e90abe]

参考: https://click.jp/knowledge/1476/

** 手順 [#de1f1e6b]
 もし、git for windowsをインストールしていない場合はインストールする

 もし、まだ公開鍵がない場合は以下の手順で作る

以下の"ホームディレクトリ"は各自の環境のホームディレクトリに読み替えて実行されたい

git for windowsのシェルでログインした直後という前提で説明する

 # ホームディレクトリに移動
 cd ~

 mkdir .ssh

 cd .ssh

 ssh-keygen

あとはエンターキー

すると、ファイルが2つできる。

 # 生成されたファイルを確認
 ls

拡張子がpubのファイルがあったとする。
 
 なんとか.pub

そのファイルの中身をコピペしたいので

 cat なんとか.pub

とすると鍵の内容がわかるので、それをコピーする。

gitlabでプロジェクトをつくったとしたら、"ADD SSH-KEY"ボタンをクリックする

先ほどコピーしたなんとか.pubの中身を張り付ける。



これで、

 git pull

や

 git push

ができるようになる。


* krokiも使えるようにしてみる [#d2ff053a]

上記のplantumlの追加だけでも十分なのだが、ついでにkrokiも使えるようにしておく。

C4とかBPMNとか使ってみたい。

GitLabの設定参考URL: https://docs.gitlab.com/ee/administration/integration/kroki.html

** docker-compose.ymlに追加する [#hd36b7d8]

以下をdocker-compose.ymlに追加する。軽く説明すると、krokiのコアを呼ぶけど、いろいろなマークダウン風の出力を提供しているサーバのdockerたちに依存してるよ。

ぐらいの意味である。


   kroki:
     image: 'yuzutech/kroki'
     ports:
       - "8081:8000"
     depends_on:
       - blockdiag
       - mermaid
       - bpmn
       - excalidraw
     environment:
       - TZ="Asia/Tokyo"
       - KROKI_BLOCKDIAG_HOST=blockdiag
       - KROKI_MERMAID_HOST=mermaid
       - KROKI_BPMN_HOST=bpmn
       - KROKI_EXCALIDRAW_HOST=excalidraw
   blockdiag:
     image: yuzutech/kroki-blockdiag
     expose:
       - "8001"
   mermaid:
     image: yuzutech/kroki-mermaid
     expose:
       - "8002"
   bpmn:
     image: yuzutech/kroki-bpmn
     expose:
       - "8003"
   excalidraw:
     image: yuzutech/kroki-excalidraw
     expose:
       - "8004" 

ポートの8081が、こちらから使うポートになるので、番号が他のdockerで立ち上げたサーバとかぶらないようにしよう。

*** 参考にさせていただいたURL [#h774a420]
https://www.rk-k.com/archives/4399

*** GitLabの設定 [#ad539820]
plantumlのときで出てきた設定項目の2,3個上にkrokiの設定がある。


サーバのアドレスをgitlab1にしていれば、以下のリンクからでも設定画面に行くと思う。

http://gitlab1:8929/admin/application_settings/general#js-kroki-settings

チェックボックスをオンにする。

URLには、

 http://gitlab1:8081

をいれる

* krokiの追加フォーマット扱い [#q85e1831]

公式の解説URL: https://docs.kroki.io/kroki/setup/install/#images

** たとえば、BPMNを有効にしてみる [#ic6a9067]
そこには、Companion containers という欄にBPMN

が書いてあって、リンクをたどると、Dockerのページに飛ぶ。ちなみにURLは以下

https://hub.docker.com/r/yuzutech/kroki-bpmn

そこには、dockerのpullコマンドが下記のように書いてあった。

 docker pull yuzutech/kroki-bpmn

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS