継続的インテグレーションの設定
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/にあります。