Bitbucket CI/CD 管道 - 使用 Elastic Beanstalk 部署到 AWS



我正在尝试使用 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文件的错误。

信息:应用程序源包没有已知文件 扩展(拉链,罐子或战争(。这可能会导致一些问题。 信息: 上传到 s3 存储桶:我的应用程序。 用户提供的路径 https://applicationxyz.s3.amazonaws.com/applicationxyz.zip 没有 存在。

我不确定为什么会出现此错误。在此之前,我们已经在 elastic 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'

您需要在第一步中定义artifats并将它们传递给下一步。

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

ZIP_FILE 参数用于指定包含源代码的本地存档。您不应在 S3 中传递对象的 URL。下面是一个示例(自述文件中提供了更多示例(:

- 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'

最新更新