関連する依存関係のインストールドッカー国内のインストールは遅すぎるので、https://docs.docker.com/desktop/ を使用するとダウンロードが高速化されます。 DockerでJenkinsをインストールする# jenkins イメージをプルする docker pull jenkins/jenkins # 外部ポート番号 3080、リンクされたデータボリューム ~/docker/jenkins を使用して、jk という名前のサービスをバックグラウンドで実行します。docker run -d --name jk -p 3080:8080 -v ~/docker/jenkins:/var/jenkins_home jenkins/jenkins コマンドを実行すると、ポート番号 3080 で http サービスを開始し、ブラウザを開くことができます。
Dockerにgitlabをインストールする docker pull gitlab/gitlab-ce docker run -d --name gitlab -p 443:443 -p 9001:80 -p 222:22 -v ~/docker/gl/config:/etc/gitlab:Z -v ~/docker/gl/logs:/var/logs/gitlab:Z -v ~/docker/gl/data:/var/opt/gitlab:Z gitlab/gitlab-ce
# http プロトコルで使用されるアクセス アドレスを設定します。ポート番号を追加しない場合、デフォルトは 80 です。 外部URL 'http://192.168.1.2:9001' # SSHプロトコルで使用されるアクセスアドレスとポートを設定します gitlab_rails['gitlab_ssh_host'] = '192.168.1.2' gitlab_rails['gitlab_shell_ssh_port'] = 222 # このポートは実行中にポート 22 にマッピングされる 222 ポートです # nginx はポート 80 を listen します。そうでない場合は、external_url のポート番号がデフォルトで使用され、ポート マッピングが失敗します nginx['listen_port'] = 80 :wq #設定ファイルを保存して終了し、コンテナを再起動します ssh メソッドが失敗した場合は、サーバー上のキー ファイルのアクセス許可が正しくないことが原因と考えられます。 docker exec -it gitlab sh コンテナに入り、/etc/gitlab ディレクトリ内の ssh_host_ecdsa_key、ssh_host_ed25519_key、ssh_host_rsa_key の 3 つのファイルのユーザー名とグループが git (ユーザーを変更するには chown、グループを変更するには chgrp) になっているか、ファイルのパーミッションが 600 (chmod コマンドで変更可能) になっているかを確認します。 Dockerにnginxをインストールするdocker プル nginx docker run -d --name nginx -p 80:80 -v ~/nginx/html:/usr/share/nginx/html nginx まとめ
構成1. GitLab関連のプラグインをインストールするホーム -> システム管理 -> プラグイン管理 次に、オプションのプラグインに切り替えて、gitlabを検索し、gitlabプラグインを選択します(すでにインストールされているため、ここには表示されません)。次に、左下隅のボタンを選択して、インストールが完了するまで待ちます。 2. ホーム -> システム管理 -> システム構成資格情報に、GitLab API トークンを追加する必要があります。 GitLabAPI トークンの取得方法は下図の通りです。生成されたトークンはセキュリティ確保のため、更新後に非表示になります。 設定が完了したら、設定が正しいことを確認するためにテスト接続ボタンをクリックすることをお勧めします。 3. 新しいジョブを作成する4. タスク名を入力し、フリースタイルを選択します 5. 関連するビルドオプションを構成する1. 一般設定で、前のシステム設定で入力したオプションを選択します。選択しないと、ビルド ステータスが GitLab に送り返されません。 2. ソースコード管理 URL は http 形式のみであるため、以下の認証情報にはユーザー名とパスワードを使用する必要があります。間違ったものを選択すると、コードを取得できなくなります。 以下の構成は、マスターと ci で始まるブランチでのみビルドが実行されることを意味します。具体的なルールについては、右側の疑問符をクリックして詳細をご覧ください。 3. ビルド トリガーの [変更が GitLab にプッシュされたときにビルドする] をオンにします。右側には GitLab の Webhook URL があり、その下にはビルドをトリガーするタイミングのオプションがいくつかあります (GitLab の設定と調整する必要があります)。 jenkins プラグインによって提供される webhooj URL は、jenkins がログインを必要とし、外部 API もログインを必要とするため、直接使用することはできません。そうでない場合は、HTTP 401 が返されます。幸いなことに、この種のログインは HTTP 基本認証で処理できます。 まずは保存してみましょう。次に、gitlab に移動して設定します。 4. GitlabがWebhook URLを設定する 次に、デプロイするプロジェクトを開き、[設定] -> [Webhook] の順に進み、前の手順で連結した URL を入力し、対応するイベントを選択して、[追加] をクリックします。正常に追加されたら、「テスト」をクリックして、フックがスムーズに動作しているかどうかをテストできます ()。 5. ビルド環境 フロントエンドビルドでは必然的にノードの使用が必要になるため、ここでは Node と npm bin/ フォルダーを PATH に指定するチェックボックスをオンにする必要があります (チェックされていない場合は、プラグインセンターに移動してインストールしてください)。 6. 構築する プラグイン センターにアクセスし、Publish Over SSH というプラグインをインストールします。このプラグインは主に、生成されたファイルをリモート サーバーに送信するために使用されます。 -> システム管理 -> システム構成でプラグインを構成する必要があります。 2. ビルドタブでビルドステップを追加し、シェルの実行を選択します。 # 前のファイルを削除します rm -rf /tmp/html.tar.gz # テストを実行する npm run test # npm ビルド、パッケージ スクリプト npm run b # プロジェクトディレクトリに切り替えます cd /var/jenkins_home/workspace/gl # ターゲット フォルダーを圧縮ファイルにパッケージ化します tar -zcvf /tmp/html.tar.gz --exclude .git -C ./dist . # 圧縮ファイルをプロジェクトディレクトリに置いて、SSH 経由で公開できないようにしてください。mv /tmp/html.tar.gz ./ ビルドタブ、ビルドステップを追加、ファイルの送信またはSSH経由でのcommonadsの実行を選択 # 最初に /tmp/html を削除してから、新しいものを作成します。エラーを防ぐ rm -rf /tmp/html mkdir /tmp/html # 圧縮ファイルを /tmp/html に解凍し、圧縮ファイルを削除します tar -xvf ~/html/html.tar.gz -C /tmp/html rm -rf ~/html/html.tar.gz #解凍したファイルを~/nginx/html(以前にdocker nginxによってマップされたローカルパス)にコピーします。 cd /tmp/html cp -R /tmp/html/* ~/nginx/html 7. ビルド後の手順 「ビルド後の操作手順を追加」をクリックし、「ビルド ステータスを Gitlab に公開」を選択します。Jenkins ビルドが完了すると、ビルドのステータスは Gitlab の CI/CD でも確認できます。 6. コードをプッシュしてビルドをトリガーします。コードをプッシュした後、すべてがうまくいけば、ここにビルド履歴が表示されます。うまくいかなかった場合は、構成を確認してください。 7. ウェブサイトの閲覧コードをプッシュした後は静的ファイルのみがデプロイされるため、新しいコンテンツを表示するために nginx を再起動する必要はありません。 要約する
jenkins+gitlab+nginx デプロイメントのフロントエンドアプリケーション実装に関するこの記事はこれで終わりです。jenkins gitlab nginx デプロイメントの関連コンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
Centos7 の起動プロセス: 1.post(電源投入時のセルフテスト) 電源投入時のセルフテスト...
Fuser コマンドとは何ですか? fuser コマンドは、特定のファイル、ディレクトリ、またはソケ...
コンテナ間の通信1. コンテナのネットワーク共有このモードの Docker コンテナはネットワーク ...
この記事の例では、参考までにセルの結合を実現するためのel-tableの具体的なコードを共有していま...
この記事では、シンプルなショッピングカートを実装するためのJavaScriptの具体的なコードを参考...
目次1. はじめに2. Vue JS のパフォーマンス最適化が必要な理由は何ですか? 3. Vueの...
WeChat 関連サービスをデバッグする場合など、職場のサーバー環境でリモートデバッグを行う必要があ...
この記事では、ネイティブ JS で実装されたデジタル時計エフェクトを紹介します。エフェクトは次のとお...
目次1. 準備2. コマンドラインの記述2.1 バージョンと説明を追加する2.2 パスワードの長さを...
インデックス定義: ディスク上に保存される個別のデータベース構造であり、データ テーブル内のすべての...
序文ゲートウェイプロジェクトを開発する場合、署名 sign_key 情報はリクエスト時にリクエスト ...
//文法: @media mediatype and | not | only (メディア機能) ...
目次1. はじめに2. インストール3. 基本的な使い方3.1、-rパラメータ3.2、-aパラメータ...
少し前に、docker ディスク容量が小さすぎてデータを書き込めないという問題が発生しました。理由は...
login.html 部分: <!DOCTYPE html> <html lang...