-
-
Notifications
You must be signed in to change notification settings - Fork 0
111 lines (90 loc) · 3.67 KB
/
ci-generate-integrations.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
name: "CI: Generate Integrations"
on:
push:
branches:
- development
concurrency: ${{ github.workflow }}-${{ github.ref }}
env:
target-branch: development
generated-branch: robozinho-do-ladesa/generated-integrations
jobs:
generate-integrations:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
repository-projects: write
steps:
- name: Checkout Repo
uses: actions/checkout@v4
- name: Install
uses: ./.github/actions/prepare/install
with:
install-node: "true"
- id: build-integrations
name: Build integrations
run: |
pnpm exec nx run-many -t build --projects=tag:integrations
if [ "$(git diff --exit-code > /dev/null; echo $?)" -eq "1" ]; then
echo "has_changes=true" >> "$GITHUB_OUTPUT";
else
echo "has_changes=false" >> "$GITHUB_OUTPUT";
fi
- name: Retrieve GitHub App credentials
uses: actions/create-github-app-token@v1
id: app-token
if: steps.build-integrations.outputs.has_changes == 'true'
with:
app-id: ${{ secrets.LADESA_BOT_ID }}
private-key: ${{ secrets.LADESA_BOT_SECRET }}
- name: Get GitHub App User ID
id: get-user-id
if: steps.build-integrations.outputs.has_changes == 'true'
run: |
echo "user-id=$(gh api "/users/${{ steps.app-token.outputs.app-slug }}[bot]" --jq .id)" >> "$GITHUB_OUTPUT"
env:
GH_TOKEN: ${{ steps.app-token.outputs.token }}
- name: Setup git with GitHub App name and email
if: steps.build-integrations.outputs.has_changes == 'true'
run: |
git config --global user.name '${{ steps.app-token.outputs.app-slug }}[bot]'
git config --global user.email '${{ steps.get-user-id.outputs.user-id }}+${{ steps.app-token.outputs.app-slug }}[bot]@users.noreply.github.com>'
- name: Checkout to branch and commit changes
if: steps.build-integrations.outputs.has_changes == 'true'
run: |
(git branch -D ${{ env.generated-branch }} &>/dev/null || true);
git checkout -b ${{ env.generated-branch }};
git add -A;
git commit -m "chore: generate integrations";
- name: Force push into branch
if: steps.build-integrations.outputs.has_changes == 'true'
run: |
git push -f origin ${{ env.generated-branch }};
- name: Create or update pull request
if: steps.build-integrations.outputs.has_changes == 'true'
run: |
# source: https://github.com/cli/cli/discussions/5792#discussioncomment-10410197
PR_URL="$(gh pr list -B "${{ env.target-branch }}" -H "${{ env.generated-branch }}" --state open --json url --jq .[].url)"
# PR_REVIEWER="@ladesa-ro/backend"
NOW=$(date +'%Y-%m-%dT%H:%M:%S')
PR_TITLE="chore: generate integrations"
PR_BODY="**Job**: ${{ github.job }}.\n**Run number**: ${{ github.run_number }}.\nUpdated at: ${NOW}."
PR_BODY_FILE="/tmp/pr-body.txt"
echo -e "${PR_BODY}" > ${PR_BODY_FILE}
if [[ -n "${PR_URL}" ]]; then
echo "PR already exists -> ${PR_URL}"
gh pr edit \
"${PR_URL}" \
--title "${PR_TITLE}" \
--body-file "${PR_BODY_FILE}" \
;
else
gh pr create \
-B "${{ env.target-branch }}" \
-H "${{ env.generated-branch }}" \
--title "${PR_TITLE}" \
--body-file "${PR_BODY_FILE}" \
;
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}