1. ホーム
  2. Git

gitlabの紹介と使い方

2022-02-25 15:37:53

I. gitlabの紹介

CentOS 7へのGitlabのインストールについて説明しましたが、次はGitlabの使用について説明します。

GitLabは、リポジトリマネジメントシステムのオープンソースプロジェクトで ギット GitLabは、ウクライナのプログラマーであるDmitriy ZaporozhetsとValery Sizovによって開発された、コード管理ツール上に構築されたウェブサービスです。 ルビー が書かれた。その後、一部は Go言語 に書き換えられ、現在では国内外の大手・中堅のインターネット企業で広く利用されています。

git、gitlab、GitHubの簡単な違いについて

<ブロッククオート

git はコマンドベースのバージョン管理システムで、完全なコマンド操作、視覚的なインターフェースはありません。

gitlab は git をベースとしたオンラインコードリポジトリで、Web ビジュアル管理インターフェースを提供し、企業チーム内での共同開発によく利用される。

github は git をベースにしたオンラインコードホスティングリポジトリで、ビジュアル管理インターフェース、無料アカウントと有料アカウント、オープンとプライベートリポジトリを提供し、ほとんどのオープンソースプロジェクトはコードホスティングリポジトリとして github を選択します。

II. gitlab関連コマンド

gitlab-ctl start #Start all services
gitlab-ctl restart #restart all services
gitlab-ctl stop #Stop all services
gitlab-ctl restart nginx #restart individual services, such as restarting nginx
gitlab-ctl status #View service status
gitlab-ctl reconfigure #Take the configuration file into effect
gitlab-ctl show-config #Verify the configuration file
gitlab-ctl uninstall #Remove gitlab (keep data)
gitlab-ctl cleanse #delete all data and start fresh
gitlab-ctl tail <service name> View logs for the service
gitlab-ctl tail nginx #See the nginx logs under gitlab, for example
gitlab-rails console #Go to the console


III. gitlab共通コンポーネント

<ブロッククオート

nginx: 静的ウェブサーバ

gitlab-shell: Gitコマンドを処理したり、認可キーリストを変更するのに使います。gitlabはGitに支えられており、実際の操作は最終的にgitlab-shellコマンドを呼び出して処理されます。

gitlab-workhorse: 軽量リバースプロキシサーバ

logrotate: ログファイル管理ツール

postgresql: データベース

redis: キャッシュデータベース

sidekiq: キューイングされたタスクをバックグラウンドで実行する(非同期実行)

unicorn: GitLab Railsアプリはこのサーバーの上でホストされています。

サービスの状態を確認する: gitlab-ctl status, gitlabの依存関係を見ることができます。

<イグ

IV. gitlabのインストールディレクトリ

以下はgitlabでよく使われるデフォルトのインストールディレクトリです。

gitlabコンポーネントのログパス。/var/log/gitlab

gitlabの設定パス。/etc/gitlab/設定ファイルgitlab.rbのあるパス

アプリケーションコードとコンポーネントの依存関係 /opt/gitlab

個々のコンポーネントの保存パス。/var/opt/gitlab/

リポジトリ用のデフォルトの保存パス /var/opt/gitlab/git-data/repositories

バージョンファイルのバックアップパス /var/opt/gitlab/backups/です。

nginxのインストール先パス。/var/opt/gitlab/nginx/ です。

redis のインストールパスです。/var/opt/gitlab/redis

V. GitLabでSSHキーを設定する

1. すでにSSHキーがあるかどうか確認する

(1) デスクトップ上で右クリックし、「Git Bash」をクリックして、コマンドラインインターフェイスに入る

(2) cat ~/.ssh/id_rsa.pub で SSH 秘密鍵が存在するか確認すると、初回は生成されていないことがわかります。


(3) Generate over delete, regenerate, find C:\Usersadmin.ssh, admin は現在のユーザー名, delete the following files.

2. SSH鍵の生成 

ssh-keygen -t rsa -C "[email protected]"

以下のように、C:³³.ssh に rsa ベースの公開鍵と秘密鍵のペアを生成するためのすべての方法を入力します。

3. gitlabにSSHキーを追加する

(その 1) 公開鍵を表示し、コピーする

cat ~/.ssh/id_rsa.pub #View the public key and copy it manually yourself
cat ~/.ssh/id_rsa.pub | clip #or just copy it to the clipboard

<イグ

(2) gitlabにログインし、右端にスクロールダウンして、"Settings"をクリックして、User Settingページに移動します。

(3) 左のSSH Keysをクリックして

(4) 先ほどコピーしたSSHキーを貼り付けて、Add keyをクリックすると追加されます。

(5) 以下のように正常に追加され、削除をクリックすると削除されます。

(6) ssh -T git@"gitlab server address"、設定が成功したかどうかテスト、成功は次の通りです。

VI. バックアップとリストア

こちらもご覧ください https://docs.gitlab.com/omnibus/settings/backups.html#creating-an-application-backup

1. バックアップ用アプリケーション

デフォルトのバックアップパスです。/var/opt/gitlab/backups、バックアップフォーマット。EPOCH_YYYY_MM_DD_GitLab_version_gitlab_backup.tar
バックアップファイルの場合。1542603058_2018_11_19_11.4-ce_gitlab_backup.tar

gitユーザーのパーミッションが必要 

sudo chown git.git /var/opt/gitlab/backups/1542603058_2018_11_19_11.4-ce_gitlab_backup.tar

バックアップパスをカスタマイズする場合は、/etc/gitlab/gitlab.rb を編集してバックアップパスを指定し、gitlab-ctl reconfigure を実行して設定を再読み込みしてください。

gitlab_rails['backup_path'] = '/mnt/backups' Backup path, specify your own
gitlab_rails['backup_keep_time'] = 604800 # how long to keep each backup, default 7 days, can be omitted

1つのバックアップを生成する手動バックアップ

sudo gitlab-rake gitlab:backup:create

 時間指定バックアップ: cron -e add timer, save, restart timer service /etc/init.d/crond restart

# Backup at 2am every day from Tuesday to Saturday
0 0 2 ? * 2-6 gitlab-rake gitlab:backup:create

2. バックアップの設定

デフォルトのgitlabの設定はetc/gitlabにあるので、gitlab.rbとgitlab-secrets.jsonをバックアップする必要がありますが、便宜上etc/gitlabフォルダだけをバックアップしてください。

sudo crontab -e -u root add timer, save, restart timer service /etc/init.d/crond restart

#Backup at 2am every day from Tuesday to Saturday, set permission 0077, zip /etc/gitlab to /secret/gitlab/backups, customize the backup path
0 0 2 ? * 2-6 umask 0077; tar cfz /secret/gitlab/backups/$(date "+etc-gitlab-\%s.tgz") -C / etc/gitlab

3. リストア

こちらもご覧ください https://docs.gitlab.com/ce/raketasks/backup_restore.html#restore-for-omnibus-installations

 データベースへの接続に関連するプロセスを停止する

sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
# Verify whether to stop
sudo gitlab-ctl status

  バックアップの後、タイムスタンプ、リカバリのバージョンを指定する

# This command will overwrite the contents of your GitLab database!
sudo gitlab-rake gitlab:backup:restore BACKUP=1542603058_2018_11_19_11.4-ce

 もし、設定やgitlab.rb、gitlab-secrets.jsonを復元する必要がある場合は、バックアップtarballを/etc/gitlabパスに復元すればよいのです。

 サービスの再起動と確認

sudo gitlab-ctl restart #restart the service
sudo gitlab-rake gitlab:check SANITIZE=true #Check for recovery

VII. gitlab-ciの持続可能な統合

1. gitlab-ciの概要

<ブロッククオート

gitlab-ciのフルネームはgitlab continuous integrationで、sustainable integrationの略です。gitlab 8.0から、GitLab-ciはGitLab自体に完全に統合され、全てのプロジェクトでデフォルトで有効になり、使用しない場合は無効にできます(無効化については2を参照してください)。 共有ランナーでは ).

リポジトリのルートに gitlab-ci.yml を追加し、gitlab Runner で利用できるように設定すると、コミットやプッシュを行うたびに CI  パイプライン . gitlab-ci.ymlファイルは、GitLabランナーに何をすべきかを指示します。デフォルトでは、3つのステージからなるパイプラインが実行されます。 build test ,   deploy 3段すべてを使用する必要はありません。3つのステージをすべて使う必要はなく、使わないステージは無視してもよい。

2. GitLab-Runnerのタイプ紹介

詳しくは、以下をご参照ください。 https://docs.gitlab.com.cn/ee/ci/runners/README.html

ランナーには3つのタイプがあります。共有型ランナー、特定型ランナー、集団型ランナー

 (1)共有ランナー 共有ランナーは、複数の類似したプロジェクトに適しています。考え方は、各プロジェクトに特定のランナーを割り当てる代わりに、これらのランナーはほとんどの時間アイドル状態、つまり、各プロジェクトのランナーは一般的に同時に動作しないので、単一または少数の共有ランナーに複数のプロジェクトを処理させる方が良いです。共有ランナーはフェアキューを使用しています。共有ランナーは、FIFOを使用して特定のランナーと比較して、プロジェクトが何百も仕事を作成して共有ランナーのリソースをすべて使用しないよう、仕事を処理するのにフェアキューを使用しています。

GitLab 8.2以降、共有ランナーはデフォルトで有効になっており、手動でオンにする必要はありませんが、各gitlabプロジェクト下の設定 ➤ CI/CDページで "Disable shared runners " ボタンを押して無効にすることも可能です。管理者権限を持つユーザは、共有ランナーのインスタンスを1つだけ登録することができ、登録することができます。

(2)特定のランナー specific runnerは、特定の要件を持つジョブや特別なニーズを持つプロジェクトに使用されます。ジョブがある特定の要件を持っている場合、センターで特定のランナーを設定することができますが、すべてのランナーがそうなるわけではありません。例えば、特定のプロジェクトをデプロイしたい場合、設定 ➤ CI/CDページでトークン( 上の画像で赤い線が引かれているところ 特定のランナーは、FIFOキューを使用してジョブを処理します。

(3)グループランナー グループランナーは、グループ内に複数のプロジェクトがあり、グループ内のすべてのプロジェクトがグループランナーにアクセスできるようにしたい場合に使用します。グループランナーは、FIFOキューを使用してジョブを処理します。設定 ➤ CI/CDのページで、グループCI/CDの設定( 上の画像の右下の青字の部分 というトークンを取得します。

3. GitLab-Runnerのインストール

詳しくは、以下をご参照ください。 https://docs.gitlab.com/runner/install/

ウェイI

1. GitLabの公式yumリポジトリを追加する

# For RHEL/CentOS/Fedora
 curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash


 2. 最新版のランナーをインストールする

 # For RHEL/CentOS/Fedora, yum installs the latest version by default
 sudo yum install gitlab-runner
or
# for RPM based systems # RPM installs the specified version, lists all versions that contain duplicates, in descending order
 yum list gitlab-runner --showduplicates | sort -r
#For example, to install 10.0.0-1
sudo yum install gitlab-runner-10.0.0-1


ウェイ2

(1)ダウンロード

sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

(2) 実行可能なパーミッションの追加

 sudo chmod +x /usr/local/bin/gitlab-runner

(3) GitLab CIのユーザーを作成する

 sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash

 (4) gitlab-runnerサービスをインストールします。

 #Install to /home/gitlab-runner
 sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner

4.ランナーのCIへの登録

詳しくは https://docs.gitlab.com/runner/register/index.html

  1. ランナー登録コマンドです。

     sudo gitlab-runner register
    
    
    
  2. GitLabのURLを入力します。

     Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
     https://192.168.1.74:8080 #gitlab address
    
    
    
  3. Runnerで登録したトークンを入力します。

     Please enter the gitlab-ci token for this runner
     xxx #Token credentials to enter the runner
    
    
    
  4. ランナーの説明を入力します。GitLab のビジュアルインターフェースで変更することもできます。

     Please enter the gitlab-ci description for this runner
     [hostname] my-runner #runner's description
    
    
    
  5. 入力する ランナー タグで、GitLab の視覚的なインターフェイスで変更することもできます。

     Please enter the gitlab-ci tags for this runner (comma separated):
     my-tag #runner tag, equivalent to a name, to specify which runner is running the job
    
    
    
  6. 実行を入力する ランナーエグゼキュータ というように

     Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
     shell # select the executor method of executing the runner, here no other one like docker is used, select shell
    
    
    
    

5. gitlab-ci.yml の設定

詳細については https://docs.gitlab.com.cn/ee/ci/yaml/README.html

GitLab バージョン 7.12 以降、GitLab CI は以下のようになります。 YAML ファイル( .gitlab-ci.yml これはリポジトリのルートに置かれ、プロジェクトをビルドする方法を定義します。

パイプラインです。 パイプラインは実際にはビルドタスクに相当し、依存関係のインストール、テストの実行、コンパイル、テストサーバーのデプロイ、本番サーバーのデプロイなど、複数の処理を含むことができる

のジョブです。 ジョブはビルドジョブを表し、ステージ内部で実行されるジョブを表します。Stage内部には複数のJobを定義することができ、これらのJobは以下のような特徴を持つことになります。同じStage内のジョブは並列に実行され、Stageは同じStage内の全てのジョブが正常に実行された場合のみ成功し、いずれかのジョブが失敗した場合はStageも失敗、すなわちビルド(パイプライン)も失敗します。

ステージ ステージはビルドステージを表し、はっきり言って上記のようなプロセスである。1つのPipelineに複数のStageを定義することができ、これらのStageは以下の特徴を持ちます:全てのStageが順番に実行される、つまり、あるStageが完了すると次のStageが始まる、全てのStageが完了したときのみビルドタスク(Pipeline)は成功する、いずれかのStageが失敗すると、次のStageが実行できずビルド(Pipeline)失敗となる。

# Define stages, stages keyword to define each build stage in a Pipeline
stages:
  - build
  - test
  - deploy
# Define job, can be multiple
job 1:
  stage: build #stage specifies the build stage
  script: make build dependencies #script is the task that each job performs

job 2:
  stage: build
  script: make build artifacts

job 3:
  stage: test
  script: make test

job 4:
  stage: deploy
  script: make deploy

gitlab-ci.ymlを追加します。

プロジェクトのルートに移動し、"Set up CI/CD"をクリックして、gitlab-ci.ymlを設定する。

以下のように設定し、設定後に投稿することができます。

6. gitlab-runnerを起動する

sudo gitlab-runner start #start gitlab-runner

7. パイプラインの作業状況の確認

プロジェクトのルートパスに移動し、"CI/CD" Pipelinesをクリックして、ステータスを確認します。

パイプラインが次のように動作しているのがわかります。

 失敗した場合は、問題を発見した後、右側の "パイプラインの実行" をクリックして再実行することも可能です

参考 https://docs.gitlab.com.cn/ee/ssh/README.html

参考 https://docs.gitlab.com.cn/ee/ci/quick_start/README.html

参考 https://docs.gitlab.com.cn/ee/ci/README.html

参考 https://docs.gitlab.com.cn/runner/

参考 http://www.cnblogs.com/zdqc/p/9666994.html