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