彩票走势图

项目管理工具Space使用教程:部署

翻译|行业资讯|编辑:董玉霞|2022-07-25 10:34:11.490|阅读 521 次

概述:Space团队正在发布对部署的支持,这是使Space成为真正的一体化解决方案的 另一个难题。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

JetBrains Space是整个软件开发pipeline和团队协作的统一平台。托管git存储库、查看代码、自动化CI/CD、存储和发布包、管理问题和文档以及在聊天中进行通讯——所有这些功能都集成在一起,开箱即用。

Space团队正在发布对部署的支持,这是使Space成为真正的一体化解决方案的 另一个难题。 部署是一个空间实体,表示将源代码更改交付到部署环境(部署目标)。例如,将 Web 应用程序交付到生产服务器、在商店中发布移动应用程序、将分发上传到 FTP 服务器等等。

部署在许多层面上都有帮助:

  • 作为用户:部署可让您跟踪代码更改并回答诸如“哪个产品版本现在正在生产中?”、“哪个特定提交用于部署生产版本?”、“之间有多少更改(提交)版本 A 和版本 B?”等。
  • 作为一个团队:部署使产品发布生命周期更加透明。由于您有一个预定义的部署目标列表(例如 Web、桌面、云、移动设备等),因此您始终知道您的产品部署在哪里。部署计划可让您计划部署频率。目标健康检查(尚不可用)将很快显示特定目标的情况。
  • 作为一家公司:部署还可以为公司带来好处。例如,将空间部署视为定义公司部署目标的统一标准。因此,每个发布的产品、应用程序版本或内部服务更新都会被记录和跟踪。这可以简化类似 log4j 场景中的风险管理。在 Space 中定义所有目标后,您可以轻松跟踪交付给最终用户的库版本。
部署如何工作

Space中的部署本身不会运行任何构建脚本。它只是一个跟踪当前部署状态的状态机。状态更新由 CI/CD 服务器在空间命令行工具(作为 Docker 映像提供:)public.registry.jetbrains.space/p/space/containers/space-cli:latest或 Space HTTP API 的帮助下发送。还有一个选项可以在 UI 中手动更改部署状态。这意味着您可以将部署与您选择的任何 CI/CD 工具一起使用,包括 Space Automation、JetBrains TeamCity、GitHub Actions 等。

例如,这就是包含所有可能状态的部署的样子。

项目管理工具Space

此方案中除已完成之外的所有状态都是可选的:您可以在任何状态下创建新部署。

如何开始部署

假设您有一个现有的 CI/CD 管道,可以将您的产品交付到某个环境(目标)。在最简单的情况下,您可以从跟踪部署何时开始(部署状态)和何时结束(当前状态)开始:

  1. 您在 Space 中创建一个部署目标。
  2. 你得到一个空间授权令牌。您将需要它来授权您在 Space 中的 CI/CD 工具。
  3. 触发器(创建发布分支、git push、计划等)在 CI/CD(例如 Space Automation、TeamCity 或其他工具)上运行部署脚本。这是您应该向 Space 报告部署状态的地方:
    • (可选)在 CI/CD 服务器运行脚本之前,它会创建一个处于部署状态的部署,例如,使用空间命令行工具:
      space deployments start $PROJECT_KEY $TARGET_KEY --version $VERSION --commit $COMMIT_ID。尽管此步骤是可选的,但它非常有用,因为它增加了流程的透明度。通知用户部署正在进行中。
    • 部署完成后,CI/CD 服务器必须将其状态更改为current,例如,使用space命令行工具:
      space deployments finish $PROJECT_KEY $TARGET_KEY --version $VERSION
      如果您跳过了上一步,该命令将创建一个新的当前部署。否则,它将更新现有的。详细了解如何完成部署。

      这可能是空间自动化工作中的样子:
      job("Deploy") {
         // you can store the auth token as a secret
         env["TOKEN"] = Secrets("space-auth-token")
         container("Deploy to prod", "registry.jetbrains.team/p/myprj/docker/custom-image-with-space-cli") {
            shellScript {
               // staging-server is the target key
               // JB_SPACE_EXECUTION_NUMBER serves as a version number
               content = """
                  space configure ${'$'}JB_SPACE_API_URL ${'$'}TOKEN
                  space deployments start ${'$'}JB_SPACE_PROJECT_KEY staging-server --version ${'$'}JB_SPACE_EXECUTION_NUMBER --commit my-web-app:release:${'$'}JB_SPACE_GIT_REVISION
                  ./do-deploy.sh
                   space deployments finish ${'$'}JB_SPACE_PROJECT_KEY staging-server
               """
            }
         }
      }
    • 如果部署失败,您可以将其状态更改为failed with
      space deployments fail $PROJECT_KEY $TARGET_KEY --version $VERSION。我们为空间自动化中的部署提供额外支持。您可以通过在作业中使用 Space SDK 直接处理部署。此外,Space Automation 可以自动处理部署状态。您需要做的就是使用该syncWithAutomationJob参数开始一个新的部署。它将部署状态与作业运行结果同步:
      job("Deploy") {
         container("Run deploy script", image = "gradle:7.1-jre11") {
            kotlinScript { api ->
               api.space().projects.automation.deployments.start(
                  // get id of the current project
                  project = api.projectIdentifier(),
                  // deployment target name
                  targetIdentifier = TargetIdentifier.Id("production-server"),
                  version = "1.0.0",
                  // with syncWithAutomationJob = true,
                  // Space will automatically change deployment status
                  // based on the job execution result.
                  // If the job fails, the deployment fails as well.
                  // If the job is successful, the deployment becomes 'current'.
                  syncWithAutomationJob = true
               )
               // do deployment staff
               // ...
            }
         }
      }

      脚本成功完成后,部署变为current,这意味着这是部署到目标环境的实际应用程序版本。

  4. 部署较新版本后,最新的当前版本将自动变为Completed。

    项目管理工具Space

    基本上,这足以开始。随着时间的推移,您可以改进您的工作流程,例如,在所有其他步骤之前添加部署计划。
开始使用部署和 TeamCity

TeamCity 工作流程看起来与上面的工作流程非常相似。通常,对于部署,您使用Deployment 构建配置。在此配置中,添加两个构建步骤,如下所示:

  • 在实际部署步骤之前添加一个。它必须在部署状态下创建部署。
  • 在部署步骤之后添加另一个。它必须将部署状态更改为current。

构建配置可能如下所示:

steps {
       script {
           name = "Space notification - start deployment"
           scriptContent = """
                   space configure %env.SPACE_DEPLOYMENT_API_URL% %env.SPACE_NOTIFICATION_PERM_TOKEN%
                   space deployments start %env.SPACE_DEPLOYMENT_PROJECT_KEY% %env.SPACE_DEPLOYMENT_TARGET_ID% --version %build.number% --commit my-web-app:%teamcity.build.branch%:%build.vcs.number% --ext-service '%env.SPACE_DEPLOYMENT_EXT_SERVICE%' --ext-label '%env.SPACE_DEPLOYMENT_EXT_LABEL%' --ext-url %env.SPACE_DEPLOYMENT_EXT_URL%
               """
           dockerImage = "%env.SPACE_CLI_DOCKER_IMAGE%"
       }
       script {
           // do deploy...
       }
       script {
           name = "Space notification - finish deployment"
           executionMode =  BuildStep.ExecutionMode.ON_SUCCESS
           scriptContent = """
                   space configure %env.SPACE_DEPLOYMENT_API_URL% %env.SPACE_NOTIFICATION_PERM_TOKEN%
                   space deployments finish %env.SPACE_DEPLOYMENT_PROJECT_KEY% %env.SPACE_DEPLOYMENT_TARGET_ID%
               """
           dockerImage = "%env.SPACE_CLI_DOCKER_IMAGE%"
       }
       script {
           name = "Space notification - fail deployment"
           executionMode =  BuildStep.ExecutionMode.ON_FAILURE
           scriptContent = """
                   space configure %env.SPACE_DEPLOYMENT_API_URL% %env.SPACE_NOTIFICATION_PERM_TOKEN%
                   space deployments fail %env.SPACE_DEPLOYMENT_PROJECT_KEY% %env.SPACE_DEPLOYMENT_TARGET_ID% 
               """
           dockerImage = "%env.SPACE_CLI_DOCKER_IMAGE%"
       }
   }

与Space整合
部署目标时间表

部署与其他空间子系统集成的方式是另一个重要因素。首先,每个部署目标和部署都有自己的时间表,用于发布部署状态更改。您还可以订阅部署事件并在您的个人Spacebox频道中接收通知。

项目管理工具Space

部署时间表

部署也有时间表。此外,部署时间表不仅仅是一个日志——它还是一个专用的聊天频道,您可以在其中与团队或公司中参与 CD 的其他人进行交流。

项目管理工具Space

与 VCS 和问题的集成

提交现在具有部署选项卡,可让您查看提交是否已部署。合并请求和问题也有一个类似的部署选项卡。

项目管理工具Space

下一步是什么
  • 空间自动化管道:部署后的下一个主要步骤。部署只跟踪预定义的状态,而管道可能包括任意数量的自定义阶段。管道将为流程带来更多控制:进入下一阶段的条件以及回滚部署或从 Space 触发新部署的能力。您可以选择使用 Space Automation 运行管道,或者仅在 Space 中定义管道并使用外部 CI/CD 工具运行所有步骤。
  • 部署目标运行状况检查:您可以选择跟踪实际部署状态。Space 将定期检查部署目标的健康状态并报告任何事件。

更多有关Space产品信息可以咨询 。

Space技术交流群:786598704       欢迎进群一起讨论


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP