gitlab一覧

GitLab CI Runner の構築

GitLab を更新したこともあって、ようやくまともに GitLab CI Runner を使うことが出来るようになりました。
基本的に設定で迷うようなところはないのですが、 GitLab が外向きと内向きで使用すべきアドレスが違うといった状況では、 CI Runner をうまく動作させるのに一手間があったので記録として残しておきます。
同じように詰まっている人の助けになれば幸いです。

GitLab CI Runner の準備

とりあえず別の環境で CentOS をインストールして、 GitLab CI Runner の準備を行いました。各ビルドごとに環境を汚さないようにするため、 Docker コンテナで各タスクをこなすような Runner の構築としました。

インストールが完了したら Docker を起動しておきます。

以下のコマンドで、Runner の初期設定を行います。実行すると対話形式で各設定を入力します。

配置しているGitLab のアドレスや、そこに対するアクセストークンが必要になります。executor の設定では、 docker を指定し、 Docker image としては ubuntu:latest を設定しました。

続きを読む


GitLab on Docker を構築する

運用している GitLab が古いこともあって、 CentOS 7 (1803) の上で再構築することにしました。
GitLab 本体のバージョンを更新しやすく&サーバー移動するかも、という2点から、 Docker の上に GitLab を動かすことを考えてみました。

CentOS の準備

使用した CentOS は 7 (1804) 64bit です。これは RHEL 7.5 ベースのものとなります。
最新パッケージにすることや、必要最小限に留めたい理由より、 Minimum の構成でインストールしました。
以降の説明は selinux の無効化や、ネットワーク接続は出来ている前提で話を進めます。

まずは以下のコマンドでパッケージを更新しておきます。

Docker 関連の準備

以下のコマンドで Docker をインストールします。インストール後、バージョンを確認したところ 1.13.1 がインストールされたようです。

続いて Docker-Compose をインストールします。
Docker-Compose のページから最新版をインストールしました。
このページにインストール方法も書いてありますが、以下のようなコマンドを実行しました。

ここで Docker を起動しておきます。

GitLabのインストール

こちら(https://gitlab.com/gitlab-org/omnibus-gitlab/)で公開されている docker-compose.yml を使用します。
適当な場所に docker-compose.yml ファイルをダウンロードしておきます。

docker-compose.yml に構築のパラメータが詰まっているので、先に編集します。

サブディレクトリで GitLab を運用したいので、 external_url を編集します。
ポート番号を指定する場合にはここで必要となります。

以下のコマンドで、コンテナを起動させます。初回には、 公式のリポジトリからイメージを取得するため、時間がかかるものと思われます。
この記事を書いているときには、11.2.3 の GitLab のイメージが取得されました。

この docker-compose.yml により、 gitlab のコンテナが動き出します。自分の環境では実行開始してからアクセスが出来るようになるまではしばらく時間がかかりました。
進行状況などのログを見るには以下のコマンドを実行します。

定常状態になったことを確認できたら、ブラウザでアクセスして期待通りの表示が出るかを確認します。
GitLab のログイン画面が表示されるようであれば成功です。

細かな設定など

細かな設定などは docker-compose.yml ファイルを編集することで出来ると思いますが、
自分は /srv/gitlab/config にある gitlab.rb ファイルを編集することにしました。

編集した後は次のコマンドで設定を反映させます。

まとめ

最近 Docker で環境作りばかりやっている気がします。
しかし、かつてはソースやrpmパッケージを入れてサービスを構築していましたが、それが docker-compose で入るようになってきて導入が色々と楽になってきたように思います。環境が閉じているので、いざというときには稼働インスタンスも変更させやすいですし、いい時代になりました。



Gitリポジトリに巨大ファイルを追加してみる

Git リポジトリってバイナリファイルが苦手(ソースコード類に比べれば)という話と、巨大なバイナリファイルがまずいという話が効いたことがあっので確認してみました。

確認した環境は Windows 上の 1.9.5-preview20141217 版の git と tortoiseGit でです。以下の内容は特に git vs tortoiseGit で差が無かったので、本体の問題(仕様)だと思います。

  • 600M くらいのバイナリファイルを追加
  • 2GB弱のバイナリファイルを追加
  • 4GB弱のバイナリファイルを追加

これでどうなるか、見てみました。 続きを読む


Gitlab (7.13.1) のその他の項目確認

メールサーバーの設定

新規にローカルのユーザーを作成した際にはメールで通知がいくようで、それがないとそのユーザーはパスワードを設定できないようです。
そのためにもメールサーバーの設定は済ませておく必要がありそうです。

これもまた /etc/gitlab/gitlab.rb ファイルに設定があるので適当なエディタで開きます。すると以下のような行が見つかるので、この部分を編集していきます。

これらをざっくりと以下のような感じにします

各設定項目は、メールサーバーの状態に合わせて設定します。
問題がなければユーザーを作成したりグループを作成したりといったタイミングでメール通知が飛ぶようになるかと思われます。

自分の環境ではメールが確認できず苦戦しましたが、外部メールサーバーを使う前提でローカルの Postfix を停止させたところうまくメールが飛ぶようになりました。同じような現象に出遭っている人はもしかするとコレで改善するかもしれません。

リポジトリの一覧

GitBucket 導入後に、公開リポジトリの一覧が見れたらいいなと思っていたので、 GitLab ではどうか確認してみました。
ここでは適当に2ユーザーくらい作ってそれぞれにリポジトリを作ってみました。

サインインしない状態で一覧みることができるかも気になりましたが、以下の画面に示すリンクから飛べるようです。

gitlab-search-repo-1

そこから All Projects というメニューを選ぶと以下のように既にあるリポジトリをリストとして見ることが出来ました。この画面を見るとさらに検索が出来るようなので多くのリポジトリがあっても大丈夫そうに見えます。(あくまでプロジェクト名での検索の模様です)

gitlab-repos-list

グループでのリストの様子もうかがえますし、さすがに機能がそろっているなと感じました。

リポジトリの操作

リポジトリへのプッシュ種別

HTTP でも SSH でもプッシュが可能なようです。プロキシのこととか考えると、httpが対応してくれているのはありがたいですね

リポジトリのフォーク

ちゃんとforkして作業が出来るようでした。fork元がどのくらい fork されたのかを正しく把握するのは難しそうです。フォークされた数がわかるようです。また forkした側は、どこからフォークしたのかが表示として出てくるみたいです。

マージリクエスト

いわゆるGitHubのプルリクエスト相当の機能で、マージリクエストと呼ぶリクエストを出すことが出来ます。forkしたブランチで何かしらの実装を行い、それを fork 元にマージしてもらって本家に反映する、というフローをするために使われます。
 マージリクエストを出されると、ちゃんとメールで通知が行われました。GitBucket のときのリクエストはメールが飛ばないような感じだったので、こちらはちゃんと使えそうな印象です。


Gitlab (7.13.1) でユーザー認証に LDAP を使う

タイトルの通りですが、認証に LDAP というか Active Directory を使えるかどうかを試してみました。Enterprise Edition だと間違いなく LDAP の機能を備えているのですが、 Community Edition でもこの機能が使えるかどうかがとても気になりました。

LDAPを使うように設定する

WebUI の画面からは設定することが不可能でした。
そこで、設定ファイルを編集して LDAP 認証を有効化します。

/etc/gitlab/gitlab.rb ファイルがあるのでこれを適当なエディタで開きます。すると以下のような行が見つかるので、この部分を編集していきます。

先頭の # がコメントの意味なので必要な部分をコメントから外します。このとき、後続の EOS の行もコメントになっているので外します。忘れがちなので注意します。この部分を見ると GitLab は2つめの LDAP サーバーを設定できるようですね。
コメントを外したら各項目を設定します。

設定したら、 reconfigureを実行します。
# gitlab-ctl stop
# gitlab-ctl reconfigure
# gitlab-ctl start

Webブラウザでアクセスして、再びログイン画面を開いてみます。するとログイン入力する箇所で以下のように変更されているかと思います。つまりこの画面にならなかったら、まず LDAP が有効化されていないので、設定を見直す必要があります。

gitlab-signin-ldap-7_13_1

当たり前ですが、ログインユーザーの種別に応じたタブでサインインしないと認証が通らないようです。

まとめ

LDAP (Active Directory) が認証に使えることがわかり、やりたいことの1つがクリアできました。Enterprise版だけの機能かと内心思っていただけに使うことが出来てよかったです。


CentOS6.5 に Gitlab 7.13.1 をインストール

GitBucket にほしい機能があったのですが、 GitLab にはあるかなと思ったので久しぶりにインストールしてみることにしました。欲しい機能というのは、リポジトリの横断的な探索機能とか一覧機能とかです。メンバーで寄って集ってコードを置くような場所だと一覧や検索は欲しい機能です。

CentOS7ではあまりにシステム周りが変わっているようなので、手慣れている CentOS 6.5 でまずは試してみることにしました。
ちなみにインストールタイプは Minimal として設定しています。
定番の SELinux無効化 も行っておきます。

Gitの更新

CentOS 6.5 の yum で Git インストールすると今となっては古いバージョンなので比較的新しいバージョンを入れることにします。

新しい git のために、古い git でソースリポジトリを clone して make します

こんな感じでやろうとしたら git がまだ入っていなかったようなので、以下のようにしてもうまとめて実行(Minimalインストールだからだと思います)

これをやってから再び git の clone を実行してソース類を取得します。

なにやら途中でエラーが出たので、別のパッケージを追加

改めて make all を実行します。

インストールが終わったので古い方を削除

GitLab本体のインストール

昔は1つ1つ手作業でインストールおよび設定していて、大変な思いをした記憶がありますが、最近はパッケージ化されて随分とインストールしやすくなりました。公式のページにもその手順は書いてあるので、スムーズに入れることが出来ると思います。
以下の手順は公式ページのものほぼそのままだったりしますが、問題なくインストールすることが出来ました。

こんな感じとなります。回線がやや遅いようで、320M程度といってもそこそこの時間がかかります。

日本語化

日本語化パッチを作っている方がいらっしゃるのでそれも利用させてもらうことにしました。英語のまま使う場合にはこの手順は不要です。
現時点においては 7.9.4 までのバージョンに対応しているようなので、その範囲で日本語化を行えるような印象です。英語が直接コーディングされているようなので、バージョンが変更になるとうまく日本語化できない箇所も多くあるようです。

うまくパッチを当てられる部分だけあてるので、このあと Y や Enter 連打だったりします。

Gitlab起動

それでは以下のコマンドを実行して起動してみます。最初はそこそこ時間がかかります。

なんかエラーが出てしまったのですがもう1回実行してみます。

サーバーの IP アドレスをいれて最初の画面が出るか確認します。問題なければ以下のような画面が出ると思います。ここでデフォルト管理者のID/パスワードでログインします(この情報は公式ページを参照)

gitlab-home-7_13_1

gitlab-signin-7_13_1

まとめ。次回へ続く

長くなってきたので1回ここらで区切りとします。昔は大変だった GitLab のインストールも随分とやりやすくなりました。さすがにコンテナ1つ配備して終了できる GitBucket 並ではありませんが、手こずる部分はなくなったと言えると思います。
 次回は GitLab の操作や設定そのものをチェックしてみたいと思います。


GitLab 6.3

先日 RhodeCode Enterprise になっていて、GitLabのほうはどうだろうと調べてみました。こちらも GitLab Enterprise がありますが、こちらはCommunityEdition版も提供してくれており更新は続いています。ちょうど 6.3 が出たところだったので見てみました。

以前はできなかったパブリックなリポジトリを作ることができるようになっていました。自分がRhodeCode 推ししようとした際には、パブリックなリポジトリが作れることで決めた節もあったので、これで GitLab も検討できそうな感じです。このまま開発が継続されてくれれば、こちらのほうがよいですし。

(6.2でパブリックなリポジトリの機能が入っていたようです)

6.3 では Webインターフェース関連が改良されているようです。

個人的にはいつの間にか入っていた Git HTTP も相まって、(RhodeCode代替としては)これでいいんじゃないかと思っています。


GitLab

GitLab 4.1が先日公開されました。この4.1がなかなか魅力的だったのでここで紹介したいと思います。

今までのGitLabは無料のGitHubで出来ない、プライベートなリポジトリを持つことを前提として、
公開リポジトリに関してはサポートしないという位置づけでした。
これが今回の4.1では、パブリックなリポジトリをGitLab上で管理できるように機能が拡張されました。

これすごく欲しかったんですよね・・・。2.4のころにサポートされていればこちらをじっくり検討したかもしれない・・・。

4.0ではCIまわりで手が入っているし、これはぼちぼち再チェックした方がよさそうな雰囲気を感じました。


GitlabとRhodecodeのメール設定

GitlabとRhodecodeを調べていてメール関連でどちらも設定を放置していたので調べてみました。

Gitlabの場合

gitlab.yml の email セクションの host という項目に対して、メールサーバーのアドレスを設定します。
たいていlocalhostのままなので、ここにメールサーバーのアドレスを記載します。
localhostのままでメールを送れるようにするためには、gitlabを動かしているサーバーでPostfixなりssmtpなりのメールサーバーを動かす必要があります。

Rhodecodeの場合

production.ini ファイルの中に smtp_server という項目があるので、そこにメールサーバーのアドレスを記載します。送信についてSMTP認証がかかっていたりする場合には、smtp_serverの行付近にアカウント情報を設定するような項目があったので、そこで設定してあげればよいように思います。

ついでに、email_prefix という項目もあるので、何かしら設定しておくと、メール振り分け設定の指標になるし便利だと思います。