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は二次連結(左右連結)を実現する

推薦する

Linuxにpipパッケージをインストールする方法

1. システムの Python バージョンに応じて、pip インストール パッケージをダウンロードし...

MySQL データベースは SQL ステートメントを知っている必要があります (拡張バージョン)

拡張版です。質問とSQL文は以下の通りです。ユーザー テーブルを作成し、id、name、gender...

WindowsでcmdからDOSウィンドウに入り、MySQLデータベースにアクセスします。

1. win + R を押して cmd と入力し、DOS ウィンドウに入ります。 2. MySQL...

Flex レイアウトで適応型ページを作成する (構文と例)

Flex レイアウトの紹介英語の Flex はフレキシブル ボックス、つまり伸縮性のあるボックスを...

ランダム点呼 Web ページを実装するための JavaScript

JavaScriptは、参考のためにランダムな点呼Webページを作成します。具体的な内容は次のとお...

MySQL の非主キー自己増分使用例の分析

この記事では、例を使用して、MySQL の非主キーの自己増分の使用方法を説明します。ご参考までに、詳...

ログインボックスのメールプロンプトを実装するネイティブJS

この記事では、登録またはログイン時に電子メール アドレスを入力する際のドロップダウン プロンプトのネ...

VueはTeleportをベースにModalコンポーネントを実装します

目次1. テレポートについて知る2. テレポートの基本的な使い方3. 最初のステップの最適化4. 第...

Tomcat でのコネクタ構成

JBoss は Tomcat を Web コンテナとして使用するため、JBoss の Web コンテ...

CSS で平均レイアウトを実現するためにネガティブ マージン テクノロジーを使用する方法

通常、IE ブラウザでの CSS の互換性の問題を解決するために、フロート レイアウトが使用されます...

Nginx ロードバランシング/SSL 構成の実装

負荷分散とは何ですか?ドメイン名が複数の Web サーバーを指している場合は、nginx ロード バ...

Linux コマンド クエリ アプレットでの WePY クラウド開発の実践

みなさんこんにちは。今日は Linux コマンド クエリ アプレットでの WePY クラウド開発の実...

VScode リモート SSH リモート編集とデバッグコード

Visual Studio Code の最新の Insider バージョンには、コードのリモート デ...

Linuxでディスクをマウントする方法

仮想マシンを使用しているときに、ディスク容量が不足し、継続使用するためにディスクをマウントする必要が...

MySQLのkillがスレッドをkillできない理由

目次背景問題の説明原因分析シミュレーションする総括する背景日常の使用において、MySQL で個別また...