我正在开发一个管道,其中有很多包含不同服务的文件夹。 每次完成拉取请求时,所有服务都会重新部署,因为我们不知道哪一个可能已更改。
此任务正在 GH 操作上完成
我一直在研究的方法:
第二种方法感觉更自然,因为获取已更改内容的列表以便对其进行处理似乎是合乎逻辑的。 可以通过以下方式轻松提取列表文件:
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。
有人知道如何做吗?
如果您的服务组织在存储库中的不同文件夹中,您可以利用 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