文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Node.js GitHub Actions 进阶指南:自动化大师级

2024-02-15 22:47

关注

1. 自定义工作流

默认情况下,GitHub Actions 提供了一组预定义的工作流。但是,您可以轻松创建自定义工作流以满足特定需求。例如,以下工作流在每次推送到主分支时触发,运行 lint、测试和部署任务:

name: Node CI/CD
on:
  push:
    branches:
      - master
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: "16"
      - run: npm install
      - run: npm run lint
      - run: npm run test
  deploy:
    runs-on: ubuntu-latest
    needs: build
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: "16"
      - run: npm install
      - run: npm run deploy

2. 使用矩阵策略

矩阵策略允许您在一个工作流中运行具有不同变量集的任务。例如,以下工作流在使用 Node.js 的不同版本时运行测试:

name: Node Test Matrix
on: push
jobs:
  test:
    strategy:
      matrix:
        node-version: ["12", "14", "16"]
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: "${{ matrix.node-version }}"
      - run: npm install
      - run: npm run test

3. 管理秘密

GitHub Actions 支持通过秘密安全地存储敏感信息,例如密码或密钥。您可以使用 set-secret 操作存储秘密,并使用 get-secret 操作在工作流中访问它们。

name: Secret Manager
on: push
jobs:
  manage-secret:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/set-secret@v1
        with:
          name: my-secret
          value: "super-secret-value"
      - uses: actions/get-secret@v1
        with:
          name: my-secret
          id: secret-value
      - run: echo ${{ secrets.secret-value }}

4. 并行化工作流

GitHub Actions 允许您并行运行工作,从而加快流程。例如,您可以并行运行 lint 和测试任务:

name: Parallel CI
on: push
jobs:
  ci:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: "16"
      - run: npm install
      - run: npm run lint & npm run test

5. 部署到云平台

GitHub Actions 轻松地集成到各种云平台,包括 AWS、Azure 和 GCP。您可以使用特定平台的操作将应用程序部署到云上。例如,以下工作流将应用程序部署到 AWS EC2:

name: AWS Deployment
on: push
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: "16"
      - run: npm install
      - run: npm run build
      - uses: actions/aws-ec2@v1
        with:
          access-key-id: "${{ secrets.AWS_ACCESS_KEY_ID }}"
          secret-access-key: "${{ secrets.AWS_SECRET_ACCESS_KEY }}"
          region: "us-east-1"
          instance-type: "t2.micro"
          ami: "ami-id"
          script: |
            sudo apt-get update
            sudo apt-get install nginx
            sudo service nginx start

6. 集成第三方工具

GitHub Actions 支持与各种第三方工具集成,包括数据库、消息队列和监控系统。您可以使用特定的操作连接到这些工具并在工作流中使用它们。例如,以下工作流使用 MongoDB 操作将数据导入数据库:

name: MongoDB Integration
on: push
jobs:
  import-data:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: "16"
      - run: npm install
      - run: npm run build
      - uses: actions/mongodb-data-api@v1
        with:
          uri: "${{ secrets.MONGODB_URI }}"
          database: "my-database"
          collection: "my-collection"
          payload: "@/data.json"

7. 自定义缓存

GitHub Actions 缓存机制可以存储构建工件,从而加快后续运行。您可以自定义缓存键以控制缓存的内容。例如,以下工作流仅缓存 node_modules 目录:

name: Custom Cache
on: push
jobs:
  ci:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/cache@v2
        with:
          path: node_modules
          key: ${{ runner.os }}-node-modules-${{ hashFiles("**/package-lock.json") }}
      - uses: actions/setup-node@v2
        with:
          node-version: "16"
      - run: npm install
      - run: npm run test

8. 故障处理和重试

GitHub Actions 提供了强大的故障处理和重试功能。您可以使用 try/catch 语句处理错误,并使用 retry 操作重试失败的任务。

name: Fault Handling
on: push
jobs:
  ci:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - try:
          steps:
            - uses: actions/setup-node@v2
              with:
                node-version: "16"
            - run: npm install
            - run: npm run test
      - catch:
          steps:
            - run: echo "Test failed"
            - fail
      - retry:
          attempts: 3
          steps:
            - run: echo "Retrying..."
            - run: npm run test

9. 使用 GitHub Events

GitHub Actions 与 GitHub 事件紧密集成。您可以触发工作流的特定动作,例如推送、提交、发布或问题创建。

name: Event Trigger
on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - main
jobs:
  ci:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: "16"
      - run: npm install
      - run: npm run test

10. 自定义输出

GitHub Actions 允许您自定义工作流输出。这对于与其他工具和服务集成或保存要用于后续步骤的数据非常有用。

name: Custom Output
on: push
jobs:
  ci:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: "16"
      - run: npm install
      - run: npm run test
    outputs:
      test-results: ${{ steps.test.outputs.test-results }}
jobs:
  report:
    needs: ci
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - run: echo ${{ needs.ci.outputs.test-results }}

通过利用这些 Node.js GitHub Actions 进阶技术,您可以自动化软件开发管道,提高效率并确保代码质量。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯