gitlabの紹介と使い方
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
-
ランナー登録コマンドです。
sudo gitlab-runner register
-
GitLabのURLを入力します。
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com ) https://192.168.1.74:8080 #gitlab address
-
Runnerで登録したトークンを入力します。
Please enter the gitlab-ci token for this runner xxx #Token credentials to enter the runner
-
ランナーの説明を入力します。GitLab のビジュアルインターフェースで変更することもできます。
Please enter the gitlab-ci description for this runner [hostname] my-runner #runner's description
-
入力する ランナー タグで、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
-
実行を入力する ランナーエグゼキュータ というように
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
関連
-
git commit to GitHub エラー、プロンプト ! [リモート拒否] master -> master (pre-receive hook declined) エラー: 失敗しました。
-
gitlab をアップロード ! [リモート拒否] dev -> dev (受信前のフックが拒否されました)
-
解決策 このリポジトリでは、別の git プロセスが実行されているようです。たとえば、「git commit」によって開かれたエディタなどです。
-
fatal: リモート参照マスタが見つかりませんでした。
-
Git Bashが致命的に表示される:この操作は作業ツリーで実行する必要がある
-
Gitのエラーについて覚えておく-すべて最新にする
-
Git がエラーを報告しました。現在のブランチの先端が遅れているため、更新が拒否されました。
-
git pushで "Updates were rejected because your current branch is behind "というエラーが報告される。
-
giteaを使ったGitサービスの構築
-
ファイル名が長すぎるため、作業ツリーをチェックアウトできない警告が表示されました。クローンには成功しましたが、チェックアウトに失敗しました。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
undefinedmaster -> master (non-fast-forward) と git ! [拒否] master -> master (フェッチファースト)
-
undefinedGitのプッシュコードには、! [rejected] master -> master (fetch first) 問題があります。
-
git pull エラー: .git/FETCH_HEAD を開けない: パーミッションが拒否されました。
-
エラーが発生しました。マージされていないファイルがあるため、プリングはできません
-
git push は最新の解決策を提供します。
-
hint: 現在のブランチの先端が hint: そのリモートカウントより遅れているため、更新が拒否されました。
-
Git error: cannot spawn ssh.の回避策。そのようなファイルやディレクトリはありません
-
GitのPlease enter a commit messageで、このマージが必要な理由を説明してください。
-
Git エラー: ヒント: リモートにあなたが持っていない作業が含まれているため、更新が拒否されました ヒント: あなたが持っていない作業です。
-
Git: bash: cd: 引数が多すぎる