Docker を用いてコンテナ起動するのが簡単です。
HOST_NAME=gitlab.example.com
PORT_HTTP=3000
PORT_SHTTP=10443
PORT_SSH=10022
GITLAB_HOME=`pwd`
mkdir -p $GITLAB_HOME/config
mkdir -p $GITLAB_HOME/logs
mkdir -p $GITLAB_HOME/data
# SELinuxを有効にしている場合は下記を実施
chcon -R -t container_file_t $GITLAB_HOME/config
chcon -R -t container_file_t $GITLAB_HOME/logs
chcon -R -t container_file_t $GITLAB_HOME/data
docker run --detach \
--hostname ${HOST_NAME}:${PORT_HTTP} \
--publish ${PORT_SSH}:22 \
--publish ${PORT_HTTP}:${PORT_HTTP} \
--publish ${PORT_SHTTP}:443 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
gitlab/gitlab-ee:latest
コンテナ起動後、ログインできるようになるまでしばらく時間がかかります。http://{サーバアドレス}:3000/ に Webアクセスできるようになるまで数分、アクセスできるようになってもさらに数分間は 502 エラーが返されます。初期設定が完了するとログイン画面が表示されます。root の初期パスワードは下記を実行することで取得できます。24時間経過すると削除されますので注意してください。
[Menu]-[Admin]-[Overview]-[Users]-[New user]
[Menu]-[Admin]-[Overview]-[Users]-(User name)-[Edit]
[User]-[Preference]-[Password]
[User]-[Preference]-[Preferences]-[Localization]-[Language]
[User]-[Preference]-[Profile]-[Time settings]
下記で SSH の公開鍵(id_rsa.pub)と秘密鍵(id_rsa)を作成する。
# ssh-keygen -t rsa -b 2048
作成した公開鍵(~/.ssh/id_rsa.pub)の内容を [ユーザー設定(User Settings)]-[SSH Keys]-[Key] に貼り付けて [Add key]
グループはユーザーの集合です。グループ配下にサブグループを作成することができます。
[Menu]-[Groups]-[Create group]
(Group Menu)-[Group information]-[Members]-[Invite member]
プロジェクトはユーザーまたはグループ配下に作成することができます。
[Menu]-[Projects]-[Create new project]
(Project)-[Settings]-[General]-[Advanced]-[Expand]-[Delete project]
(Project)-[Project Information]-[Members]-[Invite member]
ブランチは、ひとつのプロジェクトに対していくつかのバージョンを管理するために使用します。一番メインとなるブランチは main です。以前は master と呼んでいましたが、master という単語が人種差別的な意味合いを持つことから最近は main ブランチに変更されました。例えば main ブランチが本番環境、staging ブランチがステージング環境、develop/v1.0 がバージョン 1.0 の開発環境、feature-xxx ブランチが機能開発用、hotfix-xxx ブランチがバグ修正用などのバージョンを管理します。何種類かのフローパターンがあるので、詳細は GitLab Flow などを検索してみてください。
(Project)-[Repository]-[Branches]-[New branch]
(Project)-[Repository]-[Branches]-[Delete branch]
(Project)-[Repository]-[Branches]-[Merge request]
(Project)-[Repository]-[Branches]-(Merge request)-[Merge]
下記を参考に /etc/gitlab/gitlab.rb
を編集し、gitlab-ctl reconfigure
を実行する。
gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "mail.example.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "foo@example.com" gitlab_rails['smtp_password'] = "********" gitlab_rails['smtp_domain'] = "example.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = true gitlab_rails['smtp_pool'] = false gitlab_rails['gitlab_email_enabled'] = true gitlab_rails['gitlab_email_from'] = 'foo@example.com'
GitLab Runner は CI/CD 機能のひとつで、コミットなどが行われた際に、構文チェック、ユニットテスト、コンパイルなどの自動作業を行います。GitLab サーバと別に、GitLab Runner を動作させるマシンを用意します。最もシンプルな、GitLab から GitLab Runner 上の Shell をキックする例を示します。
[GitLab] - [GitLab Runner(Shell)]
GitLab Runner からさらに SSH で別マシン上でジョブを実行したり、Docker, Kubernetes などでコンテナを生成してジョブを実行することもできます。
(プロジェクト)-[Settings]-[CI/CD]-[Runners] から Specific runners の URL とトークンを確認します。
URL: http://gitlab.example.com:3000/ Token: AbcDEfgHiJKlKMoPqRsT
GitLab Runner となるマシン上で GitLab Runner をインストールします。
# curl -L --output /usr/local/bin/gitlab-runner \ https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64 # chmod +x /usr/local/bin/gitlab-runner # useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash # gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner # gitlab-runner start # gitlab-runner register Runtime platform arch=amd64 os=linux pid=9991 revision=58ba2b95 version=14.2.0 Running in system-mode. Enter the GitLab instance URL (for example, https://gitlab.com/): http://gitlab.example.com:3000/ # 上記で確認したURL Enter the registration token: AbcDEfgHiJKlKMoPqRsT # 上記で確認したトークン Enter a description for the runner: [centos7a]: runner-1 # GitLabのRunner一覧で表示される名前 Enter tags for the runner (comma-separated): # とりあえず空欄 Registering runner... succeeded runner=M-sY-PrV Enter an executor: custom, docker-ssh, parallels, docker-ssh+machine, kubernetes, docker, shell, ssh... shell # shellを選択 Runner registered successfully. Feel free to start it, but if it's running already the ...
Dockerコンテナ版の GitLab Runner を使用する場合は下記の様に準備します。
# docker run -d -it --name runner1 -h runner1 gitlab/gitlab-runner
# docker exec -it runner1 /bin/bash
# chown gitlab-runner /home/gitlab-runner
# echo "192.168.2.124 gitlab.example.com" >> /etc/hosts # 必要に応じて
# gitlab-runner register
(設定内容は上記参照)
再度 (プロジェクト)-[Settings]-[CI/CD]-[Runners] を確認すると Runner が登録されています。
次にプロジェクトの直下に .gitlab-ci-yml ファイルを作成します。
job1: script: echo "Execute Job-1" job2: script: echo "Execute Job-2"
.gitlab-ci.yml の詳細は下記を参照してください。
プロジェクトに対して何らかのファイルを push するとジョブが自動実行されます。ジョブの実行結果は (プロジェクト)-[CI/CD]-[Pipelines] で確認することができます。