You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elastic Beanstalk平台升级至2.5.1后Bitbucket Pipeline部署失败

解决Bitbucket Pipeline部署AWS Elastic Beanstalk 2.5.1版本失败问题

问题背景

  • 部署栈:.NET 6项目,通过Bitbucket Pipeline部署至AWS Elastic Beanstalk
  • 原Elastic Beanstalk配置:
    • 平台:.NET Core on Linux
    • 平台分支:.NET Core running on 64bit Amazon Linux 2
    • 平台版本:2.3.5
  • 升级后平台版本:2.5.1
  • 所用Bitbucket Pipeline配置片段:
- pipe: atlassian/aws-elasticbeanstalk-deploy:1.0.2
  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
    ENVIRONMENT_NAME: $ENVIRONMENT_NAME
    ZIP_FILE: 'release.zip'
    VERSION_LABEL: 'pipeline-testing-deploy-$BITBUCKET_BUILD_NUMBER'
    WAIT: 'true'
  • 报错信息:

✖ Deployment failed. Environment environment-name is running a different version pipeline-test-deploy-239.

问题分析

该错误核心是Elastic Beanstalk环境当前运行的应用版本与Pipeline尝试部署的版本标签存在冲突,或旧版Atlassian部署Pipe对EB 2.5.1的版本校验逻辑不兼容。由于官方pipe长期未更新,需通过替代方案解决兼容性问题。

解决方案

1. 清理冲突的应用版本

  • 登录AWS Elastic Beanstalk控制台,进入对应应用的应用版本列表
  • 查找是否存在与报错中同名的pipeline-test-deploy-239版本
  • 若该版本未被当前环境使用,直接删除;若已被使用,确认后替换为新版本再删除
  • 重新触发Bitbucket Pipeline部署

2. 确保版本标签绝对唯一

修改Pipeline的VERSION_LABEL,加入Git提交哈希值避免重复:

- pipe: atlassian/aws-elasticbeanstalk-deploy:1.0.2
  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
    ENVIRONMENT_NAME: $ENVIRONMENT_NAME
    ZIP_FILE: 'release.zip'
    VERSION_LABEL: 'pipeline-testing-deploy-$BITBUCKET_BUILD_NUMBER-$BITBUCKET_COMMIT'
    WAIT: 'true'

3. 用AWS CLI替代官方Pipe部署

由于官方pipe长期未维护,直接使用AWS CLI命令部署兼容性更强:

# 先添加构建打包并上传S3的步骤
- step:
    name: Build & Upload to S3
    script:
      - dotnet publish -c Release -o ./publish
      - zip -r release.zip ./publish
      - aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID
      - aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY
      - aws configure set region $AWS_DEFAULT_REGION
      - aws s3 cp release.zip s3://your-s3-bucket/release-$BITBUCKET_BUILD_NUMBER.zip

# 再添加EB部署步骤
- step:
    name: Deploy to Elastic Beanstalk
    image: amazon/aws-cli:latest
    script:
      - aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID
      - aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY
      - aws configure set region $AWS_DEFAULT_REGION
      # 创建应用版本
      - aws elasticbeanstalk create-application-version --application-name $APPLICATION_NAME --version-label "pipeline-testing-deploy-$BITBUCKET_BUILD_NUMBER-$BITBUCKET_COMMIT" --source-bundle S3Bucket="your-s3-bucket",S3Key="release-$BITBUCKET_BUILD_NUMBER.zip"
      # 更新环境版本
      - aws elasticbeanstalk update-environment --application-name $APPLICATION_NAME --environment-name $ENVIRONMENT_NAME --version-label "pipeline-testing-deploy-$BITBUCKET_BUILD_NUMBER-$BITBUCKET_COMMIT"
      # 等待部署完成
      - aws elasticbeanstalk wait environment-updated --application-name $APPLICATION_NAME --environment-name $ENVIRONMENT_NAME

注意:需确保AWS权限包含S3上传、EB应用版本创建及环境更新权限。

4. 验证项目与EB 2.5.1的兼容性

  • 查看EB 2.5.1平台变更日志,确认.NET运行时版本是否匹配项目依赖
  • 手动打包项目,通过AWS控制台上传部署测试,排除项目本身的兼容性问题

内容的提问来源于stack exchange,提问作者Lukas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 15:02:16