【问题标题】:How to use GitHub Actions to deploy on tag to Netlify?如何使用 GitHub Actions 将标签部署到 Netlify?
【发布时间】:2020-08-29 17:14:23
【问题描述】:

我在 netlify 中有一个带有 2 个环境的反应应用程序。到目前为止,我一直在使用 2 个分支管理持续部署,但有时在进行修补程序时会变得非常混乱。 我想建立一个持续部署系统,它将部署在同一分支上的 git 标签上,而不是拥有不同的分支。我认为这是最好的方法,因为如果它是同一个分支。

经过一番研究,我发现可以使用 github 操作(我们已经将它用于 git)和 netlify cli 来基于标签进行构建。

从文档看来我应该使用:

on: push
name: Publish on Netlify

jobs:
  publish:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@master

    - name: Publish
      uses: netlify/actions/build@master
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
        NETLIFY_BASE: site
        NETLIFY_CMD: npm build
        NETLIFY_DIR: site/_build

来自https://github.com/netlify/actions/tree/master/build

在 github 操作中使用标签的代码是:

on:
  push:
    tags:
    - '*'

发表在这篇文章上:https://github.community/t5/GitHub-Actions/How-to-run-GitHub-Actions-Workflow-only-for-new-tags/td-p/29413#

我理解应该是这样的:

on:
  push:
    tags:
    - '*'
name: Publish on Netlify

jobs:
  publish:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@master

    - name: Publish
      uses: netlify/actions/build@master
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
        NETLIFY_BASE: site
        NETLIFY_CMD: npm build
        NETLIFY_DIR: site/_build

但它不起作用。有什么想法吗?

【问题讨论】:

  • 我们需要更多信息,什么不起作用?是否触发了 Github Action?不清楚。

标签: github continuous-deployment netlify github-actions


【解决方案1】:

嘿,正如 zzarbi 评论的那样,不清楚你面临什么麻烦,所以我可以举一个适合我的例子。

  1. 将文件夹 ./github/workflows 添加到您的项目根目录
  2. 添加文件production.yml并粘贴步骤3的代码
  3. 您可能需要将包管理器和/或构建命令更改为例如纱线
#  Name of workflow
name: Production workflow

# When workflow is triggered
on:
  push:
    tags:
      - "v*"

# Jobs to carry out
jobs:
  deploy:
    # Operating system to run job on
    runs-on: ubuntu-latest
    # Steps in job
    steps:
      # Get code from repo
      - name: Checkout code
        uses: actions/checkout@v1
      # Install NodeJS
      - name: Use Node.js 12.x
        uses: actions/setup-node@v1
        with:
          node-version: 12.x
      # Run npm install and build on our code
      - run: npm install
      - run: npm run build --if-present
      # Deploy to Netlify using our production secrets
      - name: Deploy to netlify
        uses: netlify/actions/cli@master
        env:
          NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
          NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
        with:
          args: deploy --dir=build --prod
          secrets: '["NETLIFY_AUTH_TOKEN", "NETLIFY_SITE_ID"]'
  1. 将机密添加到您的存储库。
  • 转到 repo > settings > secrets 并添加变量名NETLIFY_AUTH_TOKEN
  • 对于值,转到 Netlify > 用户设置 > 应用程序并创建一个新令牌
  • 在 GitHub 中创建另一个秘密并将其命名为 NETLIFY_SITE_ID(例如,可以将其更改为 NETLIFY_SITE_ID_DEV,只需确保在 production.yml 中也进行更改
  • 在 Netlify 中,转到您的站点 > 站点设置 > 常规并复制 API ID 并将其用作值

注意: 您可能需要禁用自动部署过程,例如 netlify 中的拉取请求

通过该设置,每个新标签都将运行 GitHub 操作。

提示: 我使用标准版包进行发布管理(https://www.npmjs.com/package/standard-version)

致谢:我可以从https://dev.to/curtiscodes/ci-cd-pipeline-with-netlify-and-github-actions-bcm获得所有想法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-20
    • 2020-10-16
    • 2020-04-17
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    相关资源
    最近更新 更多