継続的インテグレーションの設定
JHipsterアプリケーションの継続的インテグレーション(CI)のセットアップは、2つのソフトウェアスタックで構成されるビルドのメンテナンスに関連する複雑さのため、従来の一般的なSpring MVCアプリケーションよりも複雑です。
- MavenまたはGradleを使用したJavaバックエンドコード
- NodeJS、NPMを使用したJavaScriptフロントエンド
各スタックには、解決すべき潜在的な競合を持つ独自の依存関係管理(Mavenアーティファクト、NPMパッケージ)が付属しています。
JHipsterは、次のCIシステムをサポートします。
- Jenkins
- Travis:Travisドキュメントを参照してください
- GitLab CI:GitLab CIドキュメントを参照してください
- Azure Pipelines:Azure Pipelinesドキュメントを参照してください
- GitHub Actions:GitHub Actionsドキュメントを参照してください
- CircleCI:CircleCIドキュメント
サブジェネレータの実行
これらの構成ファイルを生成するには、プロジェクトフォルダで次のコマンドを実行します。
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_ID
とCYPRESS_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
環境変数に関するドキュメント
- Jenkins pipeline:Credentials pluginを使用します。
- GitLab CI:secret-variablesに関するドキュメントを参照ください。
- Travis CI:環境変数を参照ください。
- GitHub Actions:環境変数に関するドキュメントを参照ください。
- Azure Pipelines:定義済み変数に関するドキュメントを参照ください。
- CircleCI:環境変数に関するドキュメントを参照ください。