繁体   English   中英

java 代码的本地部署使用 azure ci cd

[英]On-premises deployment of java code using azure ci cd

我想将我的应用程序的 war 文件部署到本地 Linux 机器。 我正在使用 Azure CI/CD yaml 管道进行构建和发布。

作为 CI 的一部分,我正在生成工件并将其放置在放置位置。

请参阅下面的 azure-pipeline.yml 代码:

trigger:
- main

stages: 
  - stage: Build
    jobs:
      - job: BuildWebApp
        pool:
          name: LinuxAgent
          demands: maven

        steps:
        - task: Maven@3
          displayName: 'Maven pom.xml'
          inputs:
            mavenPomFile: 'pom.xml'

        - task: CopyFiles@2
          displayName: 'Copy Files to: $(build.artifactstagingdirectory)'
          inputs:
            SourceFolder: '$(system.defaultworkingdirectory)'
            Contents: '**/*.jar'
            TargetFolder: '$(build.artifactstagingdirectory)'
          condition: succeededOrFailed()

        - task: PublishBuildArtifacts@1
          displayName: 'Publish Artifact: Artfifact'
          inputs:
            PathtoPublish: '$(build.artifactstagingdirectory)'
          condition: succeededOrFailed()
          
  - stage: DeployDev
    displayName: 'Deploy to Dev'
    jobs:
      - deployment:
        pool:          
          name: LinuxAgent
        environment: 'Dev'
        strategy:
         runOnce:
           deploy:
             steps:
             - task: CopyFiles@2
               inputs:
                 SourceFolder: '$(System.DefaultWorkingDirectory)/_maven-modular.git/drop/module1/'
                 Contents: '**'
                 TargetFolder: '/home/test-user/azure-agents/test'
             

           

如果这是正确的方法,谁能指导我?

错误:##[错误]未处理:未找到 SourceFolder:/home/test-user/azure-agents/_work/19/s/_maven-modular.git/drop/module1/target

在部署作业中,您应该使用下载构建工件任务将您在构建作业中发布的工件下载到部署作业的工作目录。

即使部署作业和构建作业在同一管道中,发布的工件也不会自动下载或复制到部署作业。

您尝试复制 jar 文件,但您想要战争文件。 也许可以。

- task: CopyFiles@2
          displayName: 'Copy Files to: $(build.artifactstagingdirectory)'
          inputs:
            SourceFolder: '$(system.defaultworkingdirectory)'
            **Contents: '**/*.jar'**
            TargetFolder: '$(build.artifactstagingdirectory)'
          condition: succeededOrFailed()

正如您所询问的正确方法 - 您应该使用发布管道而不是构建管道进行部署。 由于您已经在 CI 管道中发布了工件,因此您可以轻松地在发布管道中使用已发布的工件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM