Deploy a Spring Boot application to Cloud Foundry with GitLab CI/CD

原文:https://docs.gitlab.com/ee/ci/examples/deploy_spring_boot_to_cloud_foundry/

Deploy a Spring Boot application to Cloud Foundry with GitLab CI/CD

Introduction

在本文中,我们将演示如何使用连续部署方法通过 GitLab CI / CD 将Spring Boot应用程序部署到Cloud Foundry(CF) .

该项目的所有代码都可以在该GitLab 存储库中找到.

如果您有兴趣使用 GitLab CI / CD 将 Spring Boot 应用程序部署到 Kubernetes,请通读博客文章GitLab CI 和 Kubernetes 持续交付 Spring Boot 应用程序 .

Requirements

本教程假定您熟悉 Java,GitLab,Cloud Foundry 和 GitLab CI / CD.

要继续进行,您将需要:

注意:如果您没有部署到 PWS,则需要将以下所有命令中的api.run.pivotal.io URL 替换为 CF 实例的API URL .

Create your project

要创建您的 Spring Boot 应用程序,可以在创建新项目时在 GitLab 中使用 Spring 模板:

New Project From Template

Configure the deployment to Cloud Foundry

要部署到 Cloud Foundry,我们需要添加manifest.yml文件. 这是我们将用于部署应用程序的 CF CLI 的配置. 我们将在项目的根目录中创建以下内容:

  1. ---
  2. applications:
  3. - name: gitlab-hello-world
  4. random-route: true
  5. memory: 1G
  6. path: target/demo-0.0.1-SNAPSHOT.jar

Configure GitLab CI/CD to deploy your application

现在,我们需要将 GitLab CI / CD 配置文件( .gitlab-ci.yml )添加到项目的根目录. 这就是 GitLab 找出每当将代码推送到我们的存储库时需要运行哪些命令的方式. 我们将以下.gitlab-ci.yml文件添加到存储库的根目录中,GitLab 将自动检测该文件,并在推送代码后运行定义的步骤:

  1. image: java:8
  2. stages:
  3. - build
  4. - deploy
  5. before_script:
  6. - chmod +x mvnw
  7. build:
  8. stage: build
  9. script: ./mvnw package
  10. artifacts:
  11. paths:
  12. - target/demo-0.0.1-SNAPSHOT.jar
  13. production:
  14. stage: deploy
  15. script:
  16. - curl --location "https://cli.run.pivotal.io/stable?release=linux64-binary&source=github" | tar zx
  17. - ./cf login -u $CF_USERNAME -p $CF_PASSWORD -a api.run.pivotal.io
  18. - ./cf push
  19. only:
  20. - master

我们使用了java:8 Docker 映像来构建我们的应用程序,因为它在Docker Hub上提供了最新的 Java 8 JDK. 我们还添加了only子句,以确保仅当我们推送到 master 分支only进行部署.

现在,由于.gitlab-ci.yml定义的步骤需要凭据才能登录到 CF,因此您需要将 CF 凭据作为环境变量添加到 GitLab CI / CD 上. 要设置环境变量,请导航至项目的“设置”>” CI / CD”,然后展开” 变量” . 将变量命名为CF_USERNAMECF_PASSWORD并将其设置为正确的值.

Variable Settings in GitLab

设置完成后,每次推送到存储库默认分支时,GitLab CI / CD 都会将您的应用程序部署到 CF. 要查看构建日志或观看构建的实时运行,请导航至CI / CD> Pipelines .

注意:为安全性的最佳做法是为应用程序创建一个单独的部署用户,并将其凭据添加到 GitLab,而不使用开发人员的凭据.

要在 GitLab 中开始手动部署,请转到CI / CD>管道,然后单击运行管道 . 应用程序完成部署后,它将在production作业的日志中显示应用程序的 URL,例如:

  1. requested state: started
  2. instances: 1/1
  3. usage: 1G x 1 instances
  4. urls: gitlab-hello-world-undissembling-hotchpot.cfapps.io
  5. last uploaded: Mon Nov 6 10:02:25 UTC 2017
  6. stack: cflinuxfs2
  7. buildpack: client-certificate-mapper=1.2.0_RELEASE container-security-provider=1.8.0_RELEASE java-buildpack=v4.5-offline-https://github.com/cloudfoundry/java-buildpack.git#ffeefb9 java-main java-opts jvmkill-agent=1.10.0_RELEASE open-jdk-like-jre=1.8.0_1...
  8. state since cpu memory disk details
  9. #0 running 2017-11-06 09:03:22 PM 120.4% 291.9M of 1G 137.6M of 1G

然后,您可以访问已部署的应用程序(对于本示例,为https://gitlab-hello-world-undissembling-hotchpot.cfapps.io/ ),您应该看到”春天在这里!” 信息.