【问题标题】:Bitbucket CI/CD pipeline - Deploy to AWS with Elastic BeanstalkBitbucket CI/CD 管道 - 使用 Elastic Beanstalk 部署到 AWS
【发布时间】:2020-04-11 05:36:41
【问题描述】:

我正在尝试使用 bitbucker CI/CD 管道在 aws elastic beanstalk 上部署 web api。以下是相同的配置。

image: microsoft/dotnet:sdk

pipelines:
  default:
    - step:
        caches:
          - dotnetcore
        deployment: myapi-test1
        script: # Modify the comma`nds below to build your repository.
          - pipe: atlassian/aws-elasticbeanstalk-deploy:0.5.4
            variables:
              AWS_ACCESS_KEY_ID: '<access_key>'
              AWS_SECRET_ACCESS_KEY: '<secret_key>'
              AWS_DEFAULT_REGION: 'us-east-1'
              APPLICATION_NAME: 'myapi'
              ENVIRONMENT_NAME: 'test'
              ZIP_FILE: 'https://applicationxyz.s3.amazonaws.com/applicationxyz.zip'
              S3_BUCKET: 'myapplication' # Optional.
              # VERSION_LABEL: '<string>' # Optional.
              # DESCRIPTION: '<string>' # Optional.
              # WAIT: '<boolean>' # Optional.
              # WAIT_INTERVAL: '<integer>' # Optional.
              # COMMAND: '<string>' # Optional.
              # DEBUG: '<boolean>' # Optional.

但是,zip 文件出现以下错误。

INFO:应用程序源包没有已知文件 扩展名(zip、jar 或 war)。这可能会导致一些问题。信息: 上传到 s3 存储桶:myapplication.用户提供的路径 https://applicationxyz.s3.amazonaws.com/applicationxyz.zip 没有 存在。

我不确定为什么会收到此错误。在此之前,我们已经在弹性 beanstalk 上手动部署 web api,因此可用的 zip 文件很少。所以,我什至尝试使用这些,但问题仍然没有解决。

对此的任何帮助表示赞赏!

编辑 1: 更新了 bitbucket-pipelines.yml 文件

image: atlassian/default-image:2

pipelines:
  default:
    - step:
        name: "Build and Test"
        script:
          - echo "Everything is awesome!"
          - apt-get update
          - apt-get install -y zip
          - zip -j application.zip MyApplication.WebAPI/*
          - pipe: atlassian/aws-elasticbeanstalk-deploy:0.2.3
            variables:
              AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
              AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
              AWS_DEFAULT_REGION: $AWS_DEFAULT_REGION
              APPLICATION_NAME: $APPLICATION_NAME
              COMMAND: 'upload-only'
              ZIP_FILE: 'application.zip'
              S3_BUCKET: 'bitbucketcicd'
              VERSION_LABEL: 'deployApi-$BITBUCKET_BUILD_NUMBER-multiple'
    - step:
        name: "Deploy to Test"
        deployment: test
        script:
        - echo "Deployment!"
        - pipe: atlassian/aws-elasticbeanstalk-deploy:0.2.3
          variables:
            AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
            AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
            AWS_DEFAULT_REGION: $AWS_DEFAULT_REGION
            APPLICATION_NAME: $APPLICATION_NAME
            COMMAND: 'deploy-only'
            VERSION_LABEL: 'deployApi-$BITBUCKET_BUILD_NUMBER-multiple'
            ENVIRONMENT_NAME: $ENVIRONMENT_NAME
            WAIT: 'true'

【问题讨论】:

    标签: amazon-web-services asp.net-core bitbucket amazon-elastic-beanstalk bitbucket-pipelines


    【解决方案1】:

    您需要在第一步中定义工件并将它们传递到下一步。

    image: atlassian/default-image:2
    
    pipelines:
      default:
        - step:
            name: "Build and Test"
            script:
              - echo "Everything is awesome!"
              - apt-get update
              - apt-get install -y zip
              - zip -j application.zip MyApplication.WebAPI/*
              - pipe: atlassian/aws-elasticbeanstalk-deploy:0.2.3
                variables:
                  AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
                  AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
                  AWS_DEFAULT_REGION: $AWS_DEFAULT_REGION
                  APPLICATION_NAME: $APPLICATION_NAME
                  COMMAND: 'upload-only'
                  ZIP_FILE: 'application.zip'
                  S3_BUCKET: 'bitbucketcicd'
                  VERSION_LABEL: 'deployApi-$BITBUCKET_BUILD_NUMBER-multiple'
     # Define an artifact to pass the zip file to the next step
            artifacts: 
              - application.zip
    

    【讨论】:

      【解决方案2】:

      ZIP_FILE 参数用于指定包含源代码的本地存档。您不应在 S3 中传递对象的 URL。这是一个示例(更多示例请参见README

        - pipe: atlassian/aws-elasticbeanstalk-deploy:0.5.4
          variables:
            AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
            AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
            AWS_DEFAULT_REGION: 'us-east-1'
            APPLICATION_NAME: 'my-app-name'
            ENVIRONMENT_NAME: 'production'
            ZIP_FILE: 'application.zip'
      

      【讨论】:

      • 感谢您的回复。我已经更新了 EDIT 1 下的 bitbucket-pipelines.yml 配置,现在至少弹性 beanstalk 正在尝试部署应用程序。但是,发布文件、dll 在应用程序失败的 S3 存储桶中不可用。那么,知道我怎么能得到那个吗?
      • 那么你的管道究竟什么时候失败了?当您调用“仅上传”或“仅部署”时它会失败吗?
      • 它没有给出任何错误,但是当我检查 S3 存储桶以获取发布代码文件时,这些文件不可用。在此之后,当我运行应用程序时,它会给出错误,因为找不到发布...
      • 对此有何建议?
      猜你喜欢
      • 2014-11-12
      • 2019-05-11
      • 2023-02-16
      • 2021-11-08
      • 1970-01-01
      • 2022-11-23
      • 1970-01-01
      • 2021-01-10
      • 1970-01-01
      相关资源
      最近更新 更多