翻譯|行業資訊|編輯:董玉霞|2022-07-25 10:34:11.490|閱讀 617 次
概述:Space團隊正在發布對部署的支持,這是使Space成為真正的一體化解決方案的 另一個難題。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
JetBrains Space是整個軟件開發pipeline和團隊協作的統一平臺。托管git存儲庫、查看代碼、自動化CI/CD、存儲和發布包、管理問題和文檔以及在聊天中進行通訊——所有這些功能都集成在一起,開箱即用。
Space團隊正在發布對部署的支持,這是使Space成為真正的一體化解決方案的 另一個難題。 部署是一個空間實體,表示將源代碼更改交付到部署環境(部署目標)。例如,將 Web 應用程序交付到生產服務器、在商店中發布移動應用程序、將分發上傳到 FTP 服務器等等。
部署在許多層面上都有幫助:
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 等。
例如,這就是包含所有可能狀態的部署的樣子。
此方案中除已完成之外的所有狀態都是可選的:您可以在任何狀態下創建新部署。
假設您有一個現有的 CI/CD 管道,可以將您的產品交付到某個環境(目標)。在最簡單的情況下,您可以從跟蹤部署何時開始(部署狀態)和何時結束(當前狀態)開始:
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 """ } } }
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,這意味著這是部署到目標環境的實際應用程序版本。
TeamCity 工作流程看起來與上面的工作流程非常相似。通常,對于部署,您使用Deployment 構建配置。在此配置中,添加兩個構建步驟,如下所示:
構建配置可能如下所示:
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%" } }
部署與其他空間子系統集成的方式是另一個重要因素。首先,每個部署目標和部署都有自己的時間表,用于發布部署狀態更改。您還可以訂閱部署事件并在您的個人Spacebox頻道中接收通知。
部署也有時間表。此外,部署時間表不僅僅是一個日志——它還是一個專用的聊天頻道,您可以在其中與團隊或公司中參與 CD 的其他人進行交流。
提交現在具有部署選項卡,可讓您查看提交是否已部署。合并請求和問題也有一個類似的部署選項卡。
更多有關Space產品信息可以咨詢 。
Space技術交流群:786598704 歡迎進群一起討論
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn