通过提交sha获取拉取请求ID

问题描述 投票:0回答:1

我正在开发一个管道,其中有很多包含不同服务的文件夹。 每次完成拉取请求时,所有服务都会重新部署,因为我们不知道哪一个可能已更改。

此任务正在 GH 操作上完成

我一直在研究的方法:

  • 区分两次提交
  • 从正在合并的 pr 中获取所有文件

第二种方法感觉更自然,因为获取已更改内容的列表以便对其进行处理似乎是合乎逻辑的。 可以通过以下方式轻松提取列表文件:

URL="https://api.github.com/repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/files" #URL =“https://api.github.com/repos/${{github.repository}}/pulls/${{steps.pr.outputs.pull_request_number}}/files” FILES=$(curl -s -X GET -H "授权:持有者 ${{ Secrets.GITHUB_TOKEN }}" $URL | jq -r '.[] | .filename')

我没有成功尝试将 PR 链接到 PUSH 的 SHA。

有人知道如何做吗?

merge github-actions pull-request
1个回答
0
投票

如果您的服务组织在存储库中的不同文件夹中,您可以利用 GitHub Actions 的路径过滤器仅触发实际更改的服务的部署。这样,只有修改文件的服务才会被重新部署。

name: Deploy services
on:
  pull_request:
    types: [opened, synchronize]

jobs:
  service_a:
    if: github.event_name == 'pull_request'
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Deploy Service A
        if: ${{ github.event.pull_request.head.ref }}
        run: echo "Deploying Service A"
    paths:
      - 'services/service_a/**'
  
  service_b:
    ... same goes for b
© www.soinside.com 2019 - 2024. All rights reserved.