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

推薦する

HTML における画像タグの使用方法の詳細な説明

HTML では、<img> タグはテキスト内の画像タグを定義するために使用されます。その...

Docker+gitlab+jenkins は、ゼロから自動デプロイメントを構築します

目次序文: 1. Dockerをインストールする2. DockerでJenkinsをインストールする...

MySQL 5.7 解凍版のインストールとアンインストール、およびよくある問題の概要

1. インストール1. ダウンロードMySQLをダウンロードするには、MySQL公式サイトhttp:...

Nginx の場所と proxy_pass パスの設定の問題の概要

目次1. Nginxロケーションの基本設定1.1 Nginx 設定ファイル1.2 Pythonスクリ...

Vueバスの簡単な使い方

Vueバスの簡単な使い方シナリオの説明:コンポーネント A にはコンポーネント B と C が含まれ...

MySQL 5.7 のインストールと設定方法のグラフィックチュートリアル

このチュートリアルでは、MySQL 5.7のインストールと設定方法を参考までに紹介します。具体的な内...

Linux の一般的な基本コマンドと使用方法

この記事では、一般的な基本的な Linux コマンドとその使用方法を例を使って説明します。ご参考まで...

HTML ユーザー登録ページ設定ソースコード

上記の Web ページをデザインします。 <!DOCTYPE html> <htm...

js の通常形式の日付と時刻に 0 を自動的に追加する 2 つのソリューション

目次背景解決策1アイデア:コード:解決策2アイデア:要約する参照する背景日付と時間をフォーマットする...

Vue Element Sortablejs を使用してテーブル列をドラッグする詳細な説明

1. css: ドラッグテーブル.css @charset "UTF-8"; ....

音楽プレーヤーアプリ(アプリケーションソフトウェア)の分析と再設計 美しい音楽プレーヤーインターフェースの設計方法

無線インタラクションにずっと興味があったので、今回は実践してみようと思います〜この分析と評価は iO...

Linux カーネル デバイス ドライバー カーネル リンク リストの使用上の注意

/******************** * カーネルにおけるリンクリストの応用********...

フロントエンド開発に必須:推奨されるブラウザ互換性テストツール 12 選

フロントエンド開発者にとって、さまざまな主要ブラウザのさまざまなバージョンでコードが適切に動作するこ...

Vueのスロットの詳細な説明

Vue でのコードの再利用により、mixnis が提供されます。テンプレートの再利用により、スロット...

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

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