设置持续集成

为JHipster应用程序设置持续集成(CI)的过程比为典型的Spring MVC应用程序设置要复杂,因为需要维护由2个软件技术架构关联带来的复杂性:

  • Maven或Gradle的Java后端代码
  • NodeJS,NPM或Yarn的JavaScript前端

每个技术架构都有其自己的依赖项管理(Maven构件,NPM软件包),并具有潜在的冲突要解决。

JHipster应该开箱即用地支持以下CI系统:

运行子生成器

要生成这些配置文件,请在您的项目文件夹中运行以下命令:

jhipster ci-cd

然后回答所有问题。

您要生成什么CI/CD pipeline ?

  • 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

Would you like to perform the build in a Docker container ? (Jenkins / GitLab) (您想在Docker容器中执行构建吗?(Jenkins/ GitLab))

如果安装了Docker,则可以在Docker容器内执行构建。

In GitLab CI, perform the build in a docker container (hint: GitLab.com uses Docker container) ? (GitLab) (在GitLab CI中,在Docker容器中执行构建(提示:GitLab.com使用Docker容器)?(GitLab))

如果您使用私有的GitLab CI,则可以直接使用runners。

如果您使用官方的GitLab.com pipeline,则需要使用Docker容器。

Would you like to send build status to GitLab ? (Jenkins) (您想将构建状态发送给GitLab吗?(Jenkins))

如果您的Jenkins依赖于GitLab存储库,则可以将构建状态发送到GitLab。您的Jenkins必须正确配置。

What tasks/integrations do you want to include ? (您要包括哪些任务/集成?)

  • 将您的应用程序部署到Artifactory
  • 使用Sonar分析您的代码
  • 构建并发布Docker镜像
  • Snyk: 依赖项扫描以查找安全漏洞 (需要SNYK_TOKEN)
  • 部署到Heroku(需要在CI服务上设置HEROKU_API_KEY)
  • 是否要Cypress仪表板(需要同时在CI服务上设置CYPRESS_PROJECT_ID和CYPRESS_RECORD_KEY)

Deploy your application to an Artifactory (Jenkins / GitLab) (将您的应用程序部署到Artifactory(Jenkins / GitLab))

  • Artifactory: what is the ID of distributionManagement for snapshots ?
  • Artifactory: what is the URL of distributionManagement for snapshots ?
  • Artifactory: what is the ID of distributionManagement for releases ?
  • Artifactory: what is the URL of distributionManagement for releases ?

Analyze your code with Sonar (使用Sonar分析您的代码)

  • Sonar: what is the name of the Sonar server ?

选择在Jenkins配置中定义的Sonar服务器的名称。

  • Sonar: what is the URL of the Sonar server ?
  • Sonar: what is the Organization of the Sonar server ?

在这里,您可以选择将Sonar Analyze推送到SonarCloud.io。 在这种情况下,您必须添加SONAR_TOKEN环境变量。

Build and publish a Docker image (构建并发布Docker镜像)

  • Docker: what is the URL of the Docker registry ?

默认情况下,您可以使用Docker Hub:https://registry.hub.docker.com

  • Docker: what is the Jenkins Credentials ID for the Docker registry ?

默认情况下,您可以使用:docker login

  • Docker: what is the Organization Name for the Docker registry?

Snyk: dependency scanning for security vulnerabilities (依赖项扫描以查找安全漏洞)

您必须添加SNYK_TOKEN环境变量 (查看你的Snyk 账户)

请参阅完整的文档,网址为: https://snyk.io/

Cypress Dashboard: record your tests in a web application provided by Cypress(Cypress仪表板:将测试记录在Cypress提供的Web应用程序中)

您必须添加CYPRESS_PROJECT_IDCYPRESS_RECORD_KEY环境变量 (查看仪表盘项目)

您可以通过将环境变量CYPRESS_ENABLE_RECORD的值更改为false来禁用记录。

请参阅完整的文档,网址为: cypress.io/dashboard

Deploy to Heroku (部署到Heroku

  • *Heroku: name of your Heroku Application ?

您必须添加HEROKU_API_KEY环境变量。

注意:在将部署到Heroku之前,您需要在本地使用Heroku子生成器。 它将创建持续集成工具所需的所有文件。

更多信息

根据您的操作系统和项目的推送位置,在使用CI / CD之前,可能需要使包装程序可执行。

如果您使用Maven:

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

如果您使用Gradle:

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

有关环境变量的文档: