使用Github Action将静态网站样式化部署到AWS

GitHub Actions因其简单性以及已经在GitHub中存在大量存储库而变得越来越流行。有了Actions的普遍可用性,现在可以轻松地将您的CI / CD实践整合到存储库中。在我们不得不使用诸如Travis CI,CircleCI或其他CI / CD提供程序之类的第三方工具之前。但是,借助GitHub Actions,我们可以将所有CI / CD流程保持在存储库旁边,并且只需一个简单的步骤即可。 yaml 文件。

在本文中,我们将快速探索如何使用GitHub Actions将静态网站连续部署到AWS S3。这篇文章假设您在AWS S3之外托管一个静态网站,并且您拥有一个位于GitHub的Git存储库。如果您当前在AWS S3上没有托管静态网站,请考虑查看此文章以开始使用,或查看我的“使用它学习AWS”价格以进行更深入的了解。

如果您满足了这两个先决条件,那么让我们开始为GitHub存储库设置CI / CD工作流。

AWS设置步骤

在创建工作流之前,我们需要在我们的AWS账户中设置一个用户,该用户将被允许将静态网站部署到我们的S3存储桶。为此,我们首先需要登录到我们的AWS账户并导航到IAM控制台。

到达那里后,我们需要创建一个新用户,该用户将以编程方式访问我们的AWS账户。我们希望限制此用户只能对我们的帐户拥有S3访问权限,因此我们将选择 AmazonS3FullAccess 许可政策。有关逐步指南,请参见下面的GIF。

创建新用户后的最后一页,我们会看到他们的编程访问键,即 access_keysecret_access_key。将它们复制到文件中的某个位置,因为我们接下来将它们添加到GitHub。

设置我们的GitHub Action Secrets

要从GitHub Action部署到我们的AWS S3存储桶,我们首先需要在存储库中配置两个新密钥。这些秘密是给我们的 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY

导航到 Settings GitHub存储库部分,然后找到 Secrets 部分在左侧。到达那里后,我们将为 AWS_ACCESS_KEY_ID 并粘贴在 access_key 我们进入了IAM步骤。然后,我们将为 AWS_SECRET_ACCESS_KEY 并粘贴到我们的 secret_access_key。最后,我们应该在GitHub存储库中有两个新的秘密。

我们已经配置了GitHub Secrets,并且我们的IAM用户有权将内容上传到我们的S3存储桶。现在,我们可以配置Action以在Git推送上连续部署到存储桶中。

通过GitHub Actions设置持续部署

GitHub Actions使用了 workflow 确定要运行哪些作业和这些作业中的步骤。为了进行设置,我们首先要在我们的存储库中创建一个新目录,GitHub Actions将监视该目录以了解执行哪些步骤。

从存储库的根目录运行以下命令:

$mkdir .github/workflows/
$touch .github/workflows/main.yml

在我们里面 main.yml 文件,我们将添加以下内容:

name: CI
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:// --delete

在这里,我们看到了我们定义的三个步骤 build 工作。第一个是AWS提供的操作,它采取我们配置的机密并使用它们来设置我们的AWS CLI凭证。然后,根据静态网站的构建和配置方式,您需要先构建网站,然后再将其上传到S3。然后,我们的最后一步正在运行 aws s3 sync 通过AWS CLI同步我们的 dist 文件夹到我们的S3存储桶。我们使用 --delete CLI调用中的标记以删除S3存储桶中但不在我们的存储桶中的所有文件 dist 夹。

现在,如果我们提交这个新的工作流程文件,那么我们应该能够在 Actions 作业运行到完成的GitHub存储库部分。

now现在,我们为位于GitHub上的静态网站存储库配置了连续部署,但已部署到我们的S3存储桶。

结论

如今,有数十种方法可以持续部署我们的应用程序和网站。在本文中,我们展示了使用GitHub Actions并将其部署到AWS S3的一种方法。但这只是一对选择,还有更多类似的选择。

我的希望是,在这篇文章中,您已经看到设置新的GitHub操作非常容易。这使得像这样的简单的连续部署设置变得轻而易举。最重要的是,如果您已经在AWS上托管了静态站点,那么这是从GitHub操作将站点推送到S3的一小步。

是否想查看我的其他项目?

我是DEV社区的忠实粉丝。如果您有任何疑问或想就有关重构的不同想法进行讨论,请访问Twitter或在下面发表评论。

在博客之外,我创建了“使用它学习AWS”价格。在价格中,我们将重点学习如何实际使用Amazon Web Services托管,保护和交付静态网站。这是一个简单的问题,有许多解决方案,但是对于增强您对AWS的理解而言,它是完美的。我最近在价格中增加了两个新的奖励章节,重点介绍了“基础结构即代码和持续部署”。

我还策划自己的每周新闻。每周做的“边做边学”时事通讯挤满了很棒的云,编码和DevOps文章。注册以在收件箱中获取它。

资讯来源:由0x资讯编译自DEV,原文:https://dev.to/kylegalbraith/deploying-your-static-websites-to-aws-in-style-using-github-actions-a8 ,版权归作者所有,未经许可,不得转载
你可能还喜欢