メインコンテンツまでスキップ

継続的インテグレーションの設定

JHipsterアプリケーションの継続的インテグレーション(CI)のセットアップは、2つのソフトウェアスタックで構成されるビルドのメンテナンスに関連する複雑さのため、従来の一般的なSpring MVCアプリケーションよりも複雑です。

  • MavenまたはGradleを使用したJavaバックエンドコード
  • NodeJS、NPMを使用したJavaScriptフロントエンド

各スタックには、解決すべき潜在的な競合を持つ独自の依存関係管理(Mavenアーティファクト、NPMパッケージ)が付属しています。

JHipsterは、次のCIシステムをサポートします。

サブジェネレータの実行

これらの構成ファイルを生成するには、プロジェクトフォルダで次のコマンドを実行します。

jhipster ci-cd

次に、すべての質問に答えます。

どのCI/CDパイプラインを生成しますか?

生成できるCI/CDパイプラインは以下です。

  • Jenkins pipeline
  • Azure Pipelines
  • GitLab CI
  • GitHub Actions
  • Travis CI
  • CircleCI

: Jenkins pipelineを選択すると、新しいsrc/main/docker/jenkins.ymlファイルが生成されます。 そのため、次のコマンドを実行することで、Jenkinsをローカルでテストできます。

docker-compose -f src/main/docker/jenkins.yml up -d

Dockerコンテナでビルドを実行しますか?(Jenkins/GitLab)

Dockerがインストールされている場合は、Dockerコンテナ内でビルドを実行できます。

GitLab CIで、Dockerコンテナ(ヒント:GitLab.comはDockerコンテナを使用)でビルドを実行しますか?(GitLab)

プライベートGitLab CIを使用する場合は、ランナーを直接使用できます。

公式のGitLab.comパイプラインを使用する場合は、Dockerコンテナを使用する必要があります。

ビルドステータスをGitLabに送信しますか?(Jenkins)

JenkinsがGitLabリポジトリに依存している場合は、ビルドステータスをGitLabに送信できます。なおJenkinsは正しく設定されている必要があります。

どのタスク/統合を含めますか?

  • アプリケーションをArtifactoryにデプロイ
  • Sonarでコードを解析
  • Dockerイメージの構築と公開
  • Snyk:セキュリティ脆弱性の依存性スキャン(SNYK_TOKENが必要)
  • Herokuにデプロイ(CIサービスでHEROKU_API_KEYが設定されている必要があります)
  • Cypressダッシュボードを有効にしますか(CIサービスでCYPRESS_PROJECT_IDとCYPRESS_RECORD_KEYの両方が設定されている必要があります)

アプリケーションをArtifactoryにデプロイする (Jenkins/GitLab)

  • Artifactory:スナップショットのdistributionManagementのIDは何ですか?
  • Artifactory:スナップショットのdistributionManagementのURLは何ですか?
  • Artifactory:リリースのdistributionManagementのIDは何ですか?
  • Artifactory:リリースのdistributionManagementのURLは何ですか?

Sonarを使用してコードを分析

  • Sonar:Sonarサーバの名前は何ですか?

Jenkins Configurationで定義されているSonarサーバの名前を選択します。

  • Sonar:SonarサーバのURLは何ですか?
  • Sonar:Sonarサーバの組織は何ですか?

ここで、Sonar AnalyzeをSonarCloud.ioにプッシュすることを選択できます。 この場合は、SONAR_TOKEN環境変数を追加する必要があります。

Dockerイメージのビルドと公開

  • Docker:DockerレジストリのURLは何ですか?

デフォルトでは、Docker Hub(https://registry.hub.docker.com)を使用できます。

  • Docker:DockerレジストリのJenkins Credentials IDは何ですか?

デフォルトでは、docker loginを使用できます。

  • Docker:Dockerレジストリの組織名は何ですか?

Snyk:セキュリティの脆弱性に対する依存性スキャン

SNYK_TOKEN環境変数を追加する必要があります(Snykアカウントを確認してください)

詳細なドキュメントはhttps://snyk.io/にあります。

Cypress Dashboard:Cypressが提供するWebアプリケーション内でテストを記録

CYPRESS_PROJECT_IDCYPRESS_RECORD_KEY環境変数を追加する必要があります(ダッシュボードプロジェクトを確認してください)。

このレコードを無効にするには、CYPRESS_ENABLE_RECORD環境変数の値をfalseに変更します。

ドキュメントの詳細については、cypress.io/dashboardを参照してください。

Herokuにデプロイ

  • Heroku:Herokuアプリケーションの名前はなんですか?

HEROKU_API_KEY環境変数を追加する必要があります。

注:Herokuへのデプロイメントを使用する前に、Herokuサブジェネレータをローカルで使用する必要があります。 継続的インテグレーション・ツールに必要なすべてのファイルが作成されます。

追加情報

OSやプロジェクトをプッシュした場所によっては、CI/CDを使用する前にラッパーを実行可能にする必要があります。

Mavenを使用する場合は以下です。

  • chmod +x mvnw
  • git update-index --chmod=+x mvnw

Gradleを使用する場合は以下です。

  • chmod +x gradlew
  • git update-index --chmod=+x gradlew

環境変数に関するドキュメント