Gitlab-ci を使用してリモート マシンに継続的にデプロイする方法 (詳細なチュートリアル)

Gitlab-ci を使用してリモート マシンに継続的にデプロイする方法 (詳細なチュートリアル)

簡単に言うと、今日は Gitlab-CI を使用してリモート サーバーに自動的にデプロイする方法について説明します。

この記事を読んだ友人は、私がサイトを Gitlab-Runner サーバーに自動的にデプロイしたことに気付くでしょう。今回は、 sshを使用してリモート マシンにデプロイします (リソースの取得を回避するために、CI サーバーとデプロイ サーバーを分離します)。

SSHパスワードフリーログイン

繰り返しになりますが、CI/CD は基本的に、手動の統合とコピー展開方法をスクリプト化したものです。リモート展開の重要な側面は、パスワード不要の制御を要求することです。

Gitlab Runner をリモート マシンにデプロイするには、リモート マシンがgitlab runnerアカウントを信頼している必要があります。

  • まずsu gitlab-runnerを実行してgitlab-runnerアカウントに切り替えます
  • CIマシン(マスター)でssh-keygenコマンドを使用して公開鍵を作成します。作成するにはssh-keygen -t rsaを使用します。プログラムは保存ディレクトリを尋ねます。変更する必要がない場合は、Enterキーを数回押して、~/.sshディレクトリのid_rsa.pubファイルを制御対象マシンの~/.sshディレクトリにコピーし、
  • ファイルの内容を~/.ssh/authorized_keysファイルにインポートします。
ホスト:
scp /home/gitlab-runner/.ssh/id_rsa.pub
制御されているパーティー:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

4. 制御対象マシンの権限を設定します。
~/.ssh権限は 700 に設定されています。
~/.ssh/authorized_keys権限は 600 に設定されています

その後、マスター CI マシンはパスワードなしでリモート マシンにログインできるようになります。

継続的にデプロイするにはどうすればいいですか?

イメージ タグを使用した継続的デプロイ: GitLab プロジェクトでは、タグを入力するだけで済みます --> イメージ構築ジョブを実行します (この git タグをイメージ タグとして使用) --> デプロイ ジョブを実行し、git タグを取得します --> タグ イメージをデプロイします

  • CI_COMMIT_REF_NAME変数は、プロジェクトがビルドされるブランチまたはタグ名を取得します。
  • デプロイメント中に挿入されたタグ変数を検出するには、docker-compose.yml でimage: ${DOCKER_REGISTRY}/eap/eap-front-end:${TAG}設定します。
build_image:フロントエンド:
 ステージ: build_image
 スクリプト:
 ビルドは docker によって実行されます。  
 - docker ログイン $DOCKER_REGISTRY_HOST -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD
 - docker push $DOCKER_REGISTRY_HOST/eap/eap-front-end:$CI_COMMIT_REF_NAME    
 タグ:  
 -私のタグ
 のみ:  
 - タグ
 
デプロイ:アルファ:
 ステージ: デプロイ
 変数:
 デプロイパス: "/home/eap/website"
 スクリプト:
 - ssh -t ***@10.202.42.252 "cd $deploy_path && export TAG=$CI_COMMIT_REF_NAME && docker-compose -f docker-compose.yml build && docker-compose -f docker-compose.yml up -d" 
 タグ:
 -私のタグ
 のみ:
 - タグ

上記の黄色の背景の行は、ssh リモート ログイン --> デプロイメント ディレクトリへの切り替え --> このビルドの git タグの挿入 --> コンテナのデプロイメントの実行というスクリプト メソッドを示しています。

以上、この記事では、gitlab-ci のリモート マシンへの継続的デプロイメントのプロセスを記録しました。ssh パスワードなしのログインは私が最近習得したもので、継続的デプロイメントの方法はシンプルで実用的です。

これで、Gitlab-ci を使用してリモート マシンに継続的にデプロイする方法 (詳細なチュートリアル) に関するこの記事は終了です。リモート マシンに継続的にデプロイする Gitlab-ci の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Dockerを使用してGitlabを素早くデプロイする方法
  • Docker+Jenkins+Gitlab+Djangoアプリケーションデプロイ実践の詳細な説明
  • Docker-compose ワンクリックデプロイ gitlab 中国語版の方法手順
  • Docker-compose を使用して GitLab をデプロイする方法

<<:  React NativeのScrollViewプルダウンリフレッシュ効果

>>:  Reactは二次連結(左右連結)を実現する

推薦する

DockerはCMDまたはENTRYPOINTコマンドを使用して複数のサービスを同時に起動します

要件: Celery は Django に導入されています。Django プロジェクトを開始するとき...

高可用性 Web クラスターを実装するための Keepalived+Nginx+Tomcat サンプル コード

高可用性 Web クラスターを実現する Keepalived+Nginx+Tomcat 1. Ngi...

JavaScript 即時実行関数の使用状況分析

一般的に、関数は実行する前に呼び出す必要があることはご存じのとおりです。以下に示すように、関数を定義...

MySQLのページング制限のパフォーマンス問題についての簡単な説明

MySQL ページング クエリは通常、制限を通じて実装されます。 limit は 1 つまたは 2 ...

MySQL の垂直テーブルを水平テーブルに変換する方法と最適化のチュートリアル

1. 縦型テーブルと横型テーブル垂直テーブル: テーブル内のフィールドとフィールド値はキーと値の形式...

Linux で推奨される 9 つの優れたコード比較ツールの概要

コードを書くとき、2 つのファイル間の違い、または同じファイルの異なるバージョン間の違いを知る必要が...

Windows環境でのMySQL 8.0.13無料インストールバージョンの設定チュートリアル

目次圧縮ファイルをダウンロードするアドレス: https://dev.mysql.com/downl...

Linux のバックグラウンドで実行するいくつかの方法 (まとめ)

1. ノーフープハングアップ信号を無視してプログラムを実行する追加メモnohup コマンドは、ハン...

要素複数フォーム検証の実装

プロジェクトでは、フォーム テストが頻繁に発生します。単一のフォーム テストについては、詳細な紹介が...

protobuf の簡単な紹介と Ubuntu 16.04 環境でのインストールチュートリアル

protobufの簡単な紹介Protobuf は、Google のオープンソースのシリアル化プロトコ...

Linux システムファイル共有 samba 設定チュートリアル

目次sambaをアンインストールしてインストールする新しい共有パスを作成し、権限を設定するSamba...

Vue検証コードコンポーネントの使い方の詳しい説明

この記事の例では、vue検証コードコンポーネントで使用される具体的な実装コードを参考までに共有してい...

HTML テーブルタグチュートリアル (12): 境界線スタイル属性 FRAME

FRAME プロパティを使用して、表の境界線のスタイル タイプを制御します。基本的な構文<T...

uniapp WeChatミニプログラムのグローバル共有を実装するためのサンプルコード

目次グローバル共有コンテンツファイルを作成するファイルをインポートしてグローバルに登録するページ共有...

CSS スティッキーフッター実装コード

この記事では、CSS スティッキー フッターの実装コードを紹介し、共有します。詳細は次のとおりです。...