繁体   English   中英

Github 将 static 站点部署到 AWS S3 的操作

[英]Github actions to deploy static site to AWS S3

我正在尝试将 static 内容从 Github 操作部署到 AWS S3。 我创建了 AWS id 和秘密环境变量

并将其作为 main.yml

name: S3CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - 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-west-2
    - name: Build static site
    - run: yarn install && npm run-script build
    - name: Deploy static site to S3 bucket
      run: aws s3 sync ./dist/ s3://awss3-blog --delete

但是 Github 操作因错误而失败

无效的工作流文件

DETAILS 每个步骤都必须定义一个 uses 或 run key

通常,实际上根据我自己的经验,GitHub 会清楚地显示 YAML 的无效部分。 就我而言,几乎总是抱怨制表符而不是空格,是的,我对此非常生气!!!

在您的情况下,正如@smac89 已经提到的,它是开头的行- run ,由于该破折号,它错误地与前一个- name不相关联,因此- name成为孤儿。

就部署到 S3 而言:我强烈建议(因为我已经在其他地方做过)仅使用 CLI 来完成,而无需任何额外的操作/插件。

它很简单:

- name: Deploy static site to S3 bucket
  env:
    AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
    AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
  run: aws s3 sync ./dist/ s3://awss3-blog --delete

如您所见,从秘密的角度来看,这是完全相同的工作,但更简单、独立、更干净等。顺便说一句,区域不是必需的,可以安全地省略。

它与这一行有关:

- run: yarn install && npm run-script build

但它特别抱怨这一步:

- name: Build static site

如果您希望上述步骤使用该运行命令,请删除run-

这是一个完整的例子。 只需注意您必须设置的变量,如果不需要,请删除 Cloudfront 失效。 这个 repo: https://github.com/caiocsgomes/caiogomes.me已经实现,用 Hugo 构建一个 static 网站并部署到 s3。

# Workflow name
name: S3 Deploy

on:
  workflow_dispatch:
  push:
    paths:
      - 'app/**'
      - '.github/workflows/deploy.yml'


jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    env:
      AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
      AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
      AWS_DEFAULT_REGION: sa-east-1
      BUCKET_NAME: caiogomes.me
    steps:
        - name: Install hugo
          run: sudo apt install hugo

        - name: Install aws cli
          id: install-aws-cli
          uses: unfor19/install-aws-cli-action@v1
          with:
            version: 2
            verbose: false
            arch: amd64
            rootdir: ""
            workdir: "" 

        - name: Set AWS credentials
          run: export AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }} && export AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }}

        - name: Checkout repository
          uses: actions/checkout@v3
          with:
            submodules: 'true'

        - name: Build
          run: cd app/ && hugo

        - name: Upload files to S3
          run: aws s3 sync app/public/ s3://${{ env.BUCKET_NAME }}/ --exact-timestamps --delete

  create-cloudfront-invalidation:
    needs: build-and-deploy
    runs-on: ubuntu-latest
    env:
      AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
      AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
      AWS_DEFAULT_REGION: sa-east-1
      CLOUDFRONT_DISTRIBUTION_ID: ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }}
    steps:
      - name: Install aws cli
        id: install-aws-cli
        uses: unfor19/install-aws-cli-action@v1
        with:
          version: 2
          verbose: false
          arch: amd64
          rootdir: ""
          workdir: "" 

      - name: Set AWS credentials
        run: export AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }} && export AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }}

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

暂无
暂无

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

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