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

使用Godot CI的GitHub Actions在ubuntu-latest上遇aws: not found错误

解决GitHub Actions中Godot CI容器下AWS CLI未找到的问题

问题原因

你遇到的aws: not found错误,是因为当前使用的barichello/godot-ci:4.3容器镜像并未预装AWS CLI。虽然默认的ubuntu-latest托管运行器自带AWS CLI,但一旦指定了容器,整个job的执行环境就切换到容器内部,无法直接使用宿主环境的工具。

解决方案

方案一:在容器内安装AWS CLI

在配置AWS凭证的步骤之前,添加安装AWS CLI的命令,直接在Godot CI容器内完成安装:

jobs:
  export-web:
    name: Web Export
    runs-on: ubuntu-latest
    container:
      image: barichello/godot-ci:4.3
    steps:

      # ... 保留原有Checkout、Setup、Web Build、Upload Artifact步骤 ...

      - name: Install AWS CLI
        run: |
          apt-get update && apt-get install -y awscli

      - name: Configure AWS Credentials
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: us-east-1

      # ... 保留原有Publish到S3、CloudFront失效步骤 ...

方案二:拆分构建与部署Job(推荐)

将构建Godot项目和部署到AWS的步骤拆分为两个独立job:

  1. 第一个job使用Godot CI容器完成Web构建,并上传产物为artifact
  2. 第二个job使用默认ubuntu-latest环境(自带AWS CLI),下载artifact后执行部署操作

修改后的Workflow配置如下:

jobs:
  export-web:
    name: Web Export
    runs-on: ubuntu-latest
    container:
      image: barichello/godot-ci:4.3
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          lfs: true

      - name: Setup
        run: |
          mkdir -v -p ~/.local/share/godot/export_templates/
          mv /root/.local/share/godot/export_templates/${GODOT_VERSION}.stable ~/.local/share/godot/export_templates/${GODOT_VERSION}.stable

      - name: Web Build
        run: |
          mkdir -v -p build/web
          EXPORT_DIR="$(readlink -f build)"
          cd $PROJECT_PATH
          godot --headless --verbose --export-release "Web" "$EXPORT_DIR/web/index.html"

      - name: Upload Artifact
        uses: actions/upload-artifact@v4
        with:
          name: web
          path: build/web

  deploy-to-aws:
    name: Deploy to AWS
    runs-on: ubuntu-latest
    needs: export-web # 依赖构建job完成
    steps:
      - name: Download Artifact
        uses: actions/download-artifact@v4
        with:
          name: web
          path: build/web

      - name: Configure AWS Credentials
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: us-east-1

      - name: Publish to AWS S3
        run: aws s3 cp --recursive ./build/web/ s3://${{ secrets.AWS_DISTRIBUTION_S3_BUCKET }}/

      - name: Invalidate AWS CloudFront distribution
        run: aws cloudfront create-invalidation --distribution-id ${{ secrets.AWS_CLOUDFRONT_DISTRIBUTION_ID }} --paths "/*"

方案对比

  • 方案一:操作简单,无需调整Job结构,但每次运行都要重新安装AWS CLI,会增加少量执行时间
  • 方案二:实现了构建与部署环境的分离,避免工具冲突,后续维护更清晰,是更推荐的实践方式

内容的提问来源于stack exchange,提问作者Nick Charney Kaye

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 19:37:06