[[GitLab]] * 目次 [#la6e12bc] #contents * 動機 [#z55447e1] GitLabを立ち上げて、ReadMeなどの閲覧でMarkDown書いて、そんでもってPlantUmlがmarkdown内に記述できたら、以下のメリットがあるのではないかと思った ** メリット [#kab36434] テキストなので、diffを使った差分がわかるので以下のメリットがある。 - 汎用的なツールで違いを見つけることができる。つまり、低コスト - 差分だけの確認でよいので、時間の節約 - テキストなので、成果物のファイルサイズが小さくて済むので、マシンリソースの節約 - gitがつかえるので、分散管理でドキュメントの消失に強い * 完成版、docker-compose.yaml [#qd7bc3c0] 要点:以下の文章で部分的に説明していますが、結局はこれをコピペしてつかってください。 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: - "8005:8080" environment: TZ: "Asia/Tokyo" 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" * 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: 'gitlab1' 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: - "8005: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:8005 と入れる *** 参考: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 * メールサーバも連動させてみる [#vd0459ef] gmailに送信できないらしいが参考URLを手掛かりにやってみる。 メールサーバがないと、手動でユーザ登録とかなので、ローカルでSMTPのメールサーバをたて、gitlabと連動させてみる ** 追加するdocker-composeの中身 [#s523b7dd] mailserver: image: boky/postfix environment: ALLOWED_SENDER_DOMAINS: 'gitlab1' ** 追加するdocker-composeのgitlabの環境変数 [#i663924b] gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "mailserver" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_domain'] = "gitlab1" gitlab_rails['gitlab_email_from'] = 'gitlab@gitlab1' gitlab_rails['gitlab_email_reply_to'] = 'noreply@gitlab1' *** 参考URL [#nb26543c] https://hawksnowlog.blogspot.com/2021/07/run-postfix-and-gitlab-on-docker-compose.html * gmailに送るのが楽? [#w1ccdc6c] 下記のサイトには、gmailに送るのが楽と記載があった。 https://e-penguiner.com/gitlab-with-docker-onpremise/