Spring boot 有人能为我的Azure DevOps部署提供一个好的实践建议吗

Spring boot 有人能为我的Azure DevOps部署提供一个好的实践建议吗,spring-boot,azure-devops,continuous-integration,Spring Boot,Azure Devops,Continuous Integration,下午好 我正在Azure DevOps中构建CI管道,这对我来说是一个新领域。我成功地创建并添加了我想要的构建任务。虽然还存在一些问题。我在这里解释这些问题 trigger: - master jobs: - job: Build displayName: 'Build Maven project and Docker build' steps: - task: replacetokens@3 displayName: 'Replace tokens' i

下午好

我正在Azure DevOps中构建CI管道,这对我来说是一个新领域。我成功地创建并添加了我想要的构建任务。虽然还存在一些问题。我在这里解释这些问题

trigger:
- master
jobs:
- job: Build
  displayName: 'Build Maven project and Docker build'
  steps:
    - task: replacetokens@3
      displayName: 'Replace tokens'
      inputs:
        targetFiles: |
          **/application.properties
    - task: Maven@3
      displayName: 'Build Maven project'
      inputs:
        mavenPomFile: 'pom.xml'
        goals: 'package'
        jdkVersionOption: 11
        publishJUnitResults: true
    - task: Docker@2
      displayName: 'Build Docker image'
      inputs:
        repository: '<my_repo_name>'
        command: 'build'
        Dockerfile: '**/Dockerfile'
        tags: $(Build.BuildId)
    - task: Docker@2
      displayName: 'Push Docker image to Docker hub'
      inputs:
        containerRegistry: 'Dockerhub connection'
        repository: '<my_repo_name>'
        command: 'push'
        Dockerfile: '**/Dockerfile'
        tags: $(Build.BuildId)
- deployment: VMDeploy
  displayName: 'Deployment to VPS'
  pool:
    vmImage: 'Ubuntu-20.04'
  environment:
   name: CDB_VPS
   resourceName: <my_vps_resource_name>
   resourceType: VirtualMachine
  strategy:
    runOnce:
      deploy:
        steps:
        - script: docker pull <my_repo_name>:latest
        - script: docker stop $(docker ps -aq)
        - script: docker run -p 8085:8085 <my_repo_name>:latest
问题1

我误解了最新标签的含义。我认为它会自动从指定的Docker中心提取最新/最新版本

当前我的Docker构建如下所示:

- task: Docker@2
  displayName: 'Build Docker image'
  inputs:
    repository: '<my_repo_name>'
    command: 'build'
    Dockerfile: '**/Dockerfile'
    tags: $(Build.BuildId)
-任务:Docker@2
displayName:“生成Docker映像”
投入:
存储库:“”
命令:“构建”
Dockerfile:“**/Dockerfile”
标记:$(Build.BuildId)
这个管道YAML将部署到我在管道->环境下添加的生产VPS中。 以下是管道的部署步骤:

- deployment: VMDeploy
  displayName: 'Deployment to VPS'
  pool:
    vmImage: 'Ubuntu-20.04'
  environment:
   name: CDB_VPS
   resourceName: <my_resource_name>
   resourceType: VirtualMachine
  strategy:
    runOnce:
      deploy:
        steps:
        - script: docker pull <my_repo_name>:latest
        - script: docker stop $(docker ps -aq)
        - script: docker run -p 8085:8085 <my_repo_name>:latest
-部署:VMDeploy
displayName:“部署到VPS”
游泳池:
vmImage:'Ubuntu-20.04'
环境:
名称:川东北VPS
资源名称:
资源类型:虚拟机
战略:
跳动:
部署:
步骤:
-脚本:docker pull:最新
-脚本:docker stop$(docker ps-aq)
-脚本:docker run-p8085:8085:最新版本
问题2 在运行它时,我没有在管道中得到任何错误。但我想知道这是否是一个好的做法。通过使用此选项,它将始终运行最新版本。我也不认为我应该这样部署

第3期 部署块在构建和推送块完成之前执行。为了提供更多信息,我将在这里发布整个YAML文件

trigger:
- master
jobs:
- job: Build
  displayName: 'Build Maven project and Docker build'
  steps:
    - task: replacetokens@3
      displayName: 'Replace tokens'
      inputs:
        targetFiles: |
          **/application.properties
    - task: Maven@3
      displayName: 'Build Maven project'
      inputs:
        mavenPomFile: 'pom.xml'
        goals: 'package'
        jdkVersionOption: 11
        publishJUnitResults: true
    - task: Docker@2
      displayName: 'Build Docker image'
      inputs:
        repository: '<my_repo_name>'
        command: 'build'
        Dockerfile: '**/Dockerfile'
        tags: $(Build.BuildId)
    - task: Docker@2
      displayName: 'Push Docker image to Docker hub'
      inputs:
        containerRegistry: 'Dockerhub connection'
        repository: '<my_repo_name>'
        command: 'push'
        Dockerfile: '**/Dockerfile'
        tags: $(Build.BuildId)
- deployment: VMDeploy
  displayName: 'Deployment to VPS'
  pool:
    vmImage: 'Ubuntu-20.04'
  environment:
   name: CDB_VPS
   resourceName: <my_vps_resource_name>
   resourceType: VirtualMachine
  strategy:
    runOnce:
      deploy:
        steps:
        - script: docker pull <my_repo_name>:latest
        - script: docker stop $(docker ps -aq)
        - script: docker run -p 8085:8085 <my_repo_name>:latest
触发器:
-主人
工作:
-工作:建造
displayName:“构建Maven项目和Docker构建”
步骤:
-任务:replacetokens@3
displayName:“替换令牌”
投入:
目标文件:|
**/应用程序属性
-任务:Maven@3
displayName:“构建Maven项目”
投入:
mavenPomFile:'pom.xml'
目标:“一揽子计划”
jdkVersionOption:11
结果:正确
-任务:Docker@2
displayName:“生成Docker映像”
投入:
存储库:“”
命令:“构建”
Dockerfile:“**/Dockerfile”
标记:$(Build.BuildId)
-任务:Docker@2
displayName:“将Docker映像推送到Docker hub”
投入:
containerRegistry:“Dockerhub连接”
存储库:“”
命令:“推”
Dockerfile:“**/Dockerfile”
标记:$(Build.BuildId)
-部署:VMDeploy
displayName:“部署到VPS”
游泳池:
vmImage:'Ubuntu-20.04'
环境:
名称:川东北VPS
资源名称:
资源类型:虚拟机
战略:
跳动:
部署:
步骤:
-脚本:docker pull:最新
-脚本:docker stop$(docker ps-aq)
-脚本:docker run-p8085:8085:最新版本

如果要在特定图像上执行此操作,请用
$(Build.BuildId)
替换
最新的

步骤:
-脚本:docker pull:$(Build.BuildId)
-脚本:docker stop$(docker ps-aq)
-脚本:docker运行-p8085:8085:$(Build.BuildId)
如果您想要
VMDeploy
等待
Build
请添加
dependsOn

-部署:VMDeploy
迪佩德森:建造

如果要在特定图像上执行此操作,请用
$(Build.BuildId)
替换
最新的

步骤:
-脚本:docker pull:$(Build.BuildId)
-脚本:docker stop$(docker ps-aq)
-脚本:docker运行-p8085:8085:$(Build.BuildId)
如果您想要
VMDeploy
等待
Build
请添加
dependsOn

-部署:VMDeploy
迪佩德森:建造
问题1

docker任务中的标记的意思是:在单独的行中列出标记。这些标记用于build、push和buildAndPush命令。我们可以在docker中看到标签,如下所示

问题2

我们可以在docker和Azure DevOps管道日志中检查最新部署,以确保它始终运行最新版本

第3期

你可以查看Krzysztof Madej的答案

问题1

docker任务中的标记的意思是:在单独的行中列出标记。这些标记用于build、push和buildAndPush命令。我们可以在docker中看到标签,如下所示

问题2

我们可以在docker和Azure DevOps管道日志中检查最新部署,以确保它始终运行最新版本

第3期


您可以查看Krzysztof Madej的答案。

只需登录查看此问题是否仍在阻碍您?是否有此问题的更新?是否正在检查此问题是否仍在阻止您?这个问题有更新吗?