How to Gitlab 最初の話

How To シリーズをはじめました、今回はGitlabです
How Toってのがどういう意味なのかは不明ですが…

イントロダクト

今回はGitLabのわかばちゃん向けの内容を書いておきます

Gitlabに関しての記事がこれほどありますが…

http://35.78.51.61/archives/tag/gitlab

結局、何するものか?という部分を置いてきぼりかなぁ〜なんて思ったわけです

Gitlabとはなにか!

GitLabとはなにか!この答えはシンプルこれです!

https://about.gitlab.com/

どーーーん!

で?読むの?とは言いません。

似てる単語 GitHubの対抗馬です!それだけ知っていたらOKです

GitLab は GitHub にインスパイアされて作られた Git リポジトリをホスティングをするソフトウェアです。

https://qiita.com/masakura/items/29f8949379fa86dac22c

ま、最初はパクったものです!

なぜGitlabなのか!

GitHubをパクっただけならパクリ元を使うのが一番ですが、Gitlabの大きなポイントがあります。

それは、ローカル環境でも動きます!どやさっ!

料金はこんな感じ…

Gitlab.com
 Free : 無料
 Premium : $19/user
 Ultimate : $99/user

https://www.gitlab.jp/pricing/#gitlab-com

セルフマネージド (オンプレミスなど)
 Free : 無料
 Premium : $19/user
 Ultimate : $99/user 

https://www.gitlab.jp/pricing/#self-managed

かわんねぇ〜w

子細見ればあるけど、普通の人、プロジェクトではFreeで十分です!
よほどの規模とトリッキーにならないとFree以上の壁が見えませんw

ポイントはオンプレミスです

要するに、ローカルネットワークにサーバを立てて使えるということです。
GitHubは公式サイトで使うので、そんなふうに使いたければGitlab.comを使いましょう

導入方法!

インストールとか色々調べれば出るので排除しますが、私が構築の試行錯誤の結果をまとめておきます!

最終、運用環境!

PC : iMac 2017
VM : Virtual Box
OS : ubuntu
     x86_64 x86_64 GNU/Linux
     VERSION="20.04.1 LTS (Focal Fossa)"
Gitlab : 14.2.4-ee

こんな感じが最終形態です

色々やりましたが、ケチらず構築の優位順は

  1. 物理サーバ
  2. VMWare on 物理サーバ
  3. Docker on 物理サーバ

うん、悩ましいですが、こんな感じです。
私は導入時に1.物理サーバが飛んだのでかなり試行錯誤しました

一番導入が簡単そうなDockerが結構問題でした。
作成時にlatestなんて指定すると、アップグレードどうするの?となりました、
作成時に14.2.4-eeを指定して… 定義変えて、起動… migrate動かない気がします… 結構な頻度で

一番ラクなのはapt-get install gitlab-ee markにしておいて、上げるときには外せばapt-get 上がるときにMigrationが明示的に走ってくれます。

新機能はどんどんでるので、新しい物好きにはたまりません

あ、インストール方法はこちら : https://www.gitlab.jp/install/

そもそもそもそもそもそも、GitLab(GitHub)を導入する意味

え?ここから書くの?と思われますが、ここから私の頭をまとめております。

むかぁ〜し、むかし、プログラマたちは書いたプログラムをファイルで管理していました。
ファイルを書いては、古いのは _old とか書いて管理していました。
複数人が作業をしていると、_oldにだけ含まれる他人の変更が入ることが… (コンフリクトだな)
_oldは大量に発生するは、最終更新者の保存だけが最新になるわけで… 崩壊していきました。 ← Excelはここで終わている
ある雨が激しく降っておる日じゃった、突如、木に雷がどか〜!んと落ちて…
とか言うことがあって、バージョン管理が生まれました(CVSとか?)… 時代が進みバージョン管理はGItに成長しました。
バージョン管理は便利で、ある特定の場所にファイルの保存先を作って、差分だけをみんなで更新し合うという形でした。衝突すると、差分通しを比較して更新して入れ込むことで最新上書き問題も解消していきました。
んんで、色々ありまして、オープンソースの管理をする場合には、ファイルの保存先を公開するというのは微妙に使いづらい… そこで現れたのはGitHubでした、そいつは認証とファイルの共有などなどWebサイトで色々できるものでした。こいつがヒット!みんながそれを使ってハッピーになりました… おしまい…

人の欲は収まらないのは事実で、それはGitに関してもあるわけです…
全員アクセスできれば意味ないじゃん!誰でも編集できれば意味ないじゃん!
となるわけですねwLinuxのユーザでやっていまいたが、めんどくさい…
だったら管理がやりやすいWebユーザ管理をしました!

これで平和にはならずGitHubにカスタマイズしたい人が生まれ、コミュニティとしてGitlab-ceが生まれました。
そして… こんな感じに

ということで、GitLabとはGitの管理、ユーザ管理システムです!中核はそれだけです!どーん

え?それだけですよ。基本は!

進化する欲望と機能の話

Gitを使えばテキストファイルの管理が楽になります。
うふふふふ… うふふふふ…
プログラムの場合はちょっと困ったことが起きました。

「だれじゃぁ〜!!壊れたプログラム上げたやつ!」

はい、壊れたプログラムを上げて、pullした全員があぼーんする事態が発生することがありました。

だったら、どうするか!?

テストすればいいんじゃない?

全部テストして…. 「アホか!どんだけ項目があるだと思っていんじゃ!」

そこで目についた物がkentのxUnitです、自動テストです。

Gitが更新タイミングで自動テストが走り、OKならそのまま、NGなら鬼電です!

「だれじゃ〜!今、上げたやつ!みんなpullするなよ!」

ちょっとは安心になりました。

これがCI (Continuous Integration)です。

そもそも、xUnitがあると便利なのはGitに上げる前には必ず走らせてください!とルールを決めれば鬼電の頻度は下がります。
万が一忘れて上げてしまっても問題発見は楽になります。

ただし!ちゃんとxUnitを自分で作る必要があります!

GitHubでは… CIなかったよね;; Travis CIとか古いけどJenkinsとか使うといいわけですが…
GitLabでは、中にあります!w

そう、GitLabは何でもオールインワンにしたがっていますw (こっちを見ている)

主要部分のCI / CDの部分を考えるとこんな感じです。
途中でコケたらあとに通さないようにしています

CD / CDepに関しては私流です。 CD CDepの違いを書くと

  • CDというのは出来上がったソースをリリースできる状態にする
  • CDepは自動的にサーバに反映する


CD, CDep間を自動化しないとすると、

  • ボタン押したら自動で置き換える
  • CDの成果物をサーバにSFTP転送する

そんな作業なので… だれが承認したんだ問題になるアレゲな部分です

本番に関してはそうなりますが、Stagingとかの環境では自動で上げてもらうほうが楽でしょう!

ま、そんなのができるのがGitLabです。

終いに

ちょっと濃淡があれでしたが、だいたいGitLabとはなんだい?って部分は入ったとは思います。
How to Gitlabに関してはこんなネタを書いていきます。