-
Notifications
You must be signed in to change notification settings - Fork 1
155 lines (136 loc) · 4.76 KB
/
pull-request.yml
File metadata and controls
155 lines (136 loc) · 4.76 KB
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
--- # PR: create pull requests for pushed branches
name: "PR: Create"
on:
push:
branches-ignore:
- master
- main
- develop
- "release/**"
- "hotfix/**"
permissions:
contents: read
pull-requests: write
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
env:
HEAD_REF: ${{github.head_ref}}
BASE_REF: ${{github.base_ref}}
REPO: ${{github.repository}}
REPO_OWNER: ${{github.repository_owner}}
jobs:
pull-request:
runs-on: [self-hosted, linux, build]
env:
CREATE_DRAFT: true
REPO_STATUS: private
steps:
- name: "Initialise Workspace"
if: runner.environment == 'self-hosted'
shell: bash
run: sudo chown -R "$USER:$USER" "$GITHUB_WORKSPACE"
- name: "Set Active Environment"
shell: bash
run: |
{
echo "ACTIVE_RUNNER_NAME=${{runner.name}}"
echo "ACTIVE_HOSTNAME=$HOSTNAME"
echo "ACTIVE_USER=$USER"
} >> "$GITHUB_ENV"
- name: "Checkout source"
uses: actions/checkout@v6.0.2
with:
clean: true
fetch-depth: 1
- name: "Find PR For branch"
id: findPr
uses: ./.github/actions/find-pull-request
with:
branch: ${{github.ref_name}}
- name: "Existing PR Information"
if: steps.findPr.outputs.number != ''
uses: actions/github-script@v9.0.0
env:
PR_NUMBER: ${{steps.findPr.outputs.number}}
with:
script: |
core.info(`Pull request already exists with id: ${process.env.PR_NUMBER}`);
core.info(`URL: https://github.com/${process.env.REPO}/pull/${process.env.PR_NUMBER}`);
- name: "Read PR Template"
id: pr-template
if: steps.findPr.outputs.number == ''
uses: ./.github/actions/read-file
with:
path: ./.github/PULL_REQUEST_TEMPLATE.md
- name: "Get last commit info"
id: commit-info
if: steps.findPr.outputs.number == ''
shell: bash
run: |
title="$(git log -1 --pretty=%s)"
echo "commit-title=$title" >> "$GITHUB_OUTPUT"
- name: "Check Required Secrets"
if: steps.findPr.outputs.number == ''
shell: bash
run: |
if [ -z "${{secrets.SOURCE_PUSH_TOKEN}}" ]; then
echo "::error::SOURCE_PUSH_TOKEN is required but not set"
exit 1
fi
- name: "Check Repo Visibility"
if: env.REPO_STATUS == '' && steps.findPr.outputs.number == ''
uses: ./.github/actions/check-repo-visibility
id: visibility
with:
github-token: ${{secrets.SOURCE_PUSH_TOKEN}}
- name: "Override DRAFT Flag"
id: draft-flag
if: |-
steps.findPr.outputs.number == ''
&& env.REPO_OWNER != 'funfair-tech'
&& env.REPO_STATUS == 'private'
shell: bash
run: echo "create-draft=false" >> "$GITHUB_OUTPUT"
- name: "Status"
uses: actions/github-script@v9.0.0
env:
FIND_PR_NUMBER: ${{steps.findPr.outputs.number}}
with:
script: |
core.info(`Repo: ${process.env.REPO}`);
core.info(`Owner: ${process.env.REPO_OWNER}`);
core.info(`Repo Status: ${process.env.REPO_STATUS}`);
core.info(`PR OK: ${process.env.FIND_PR_NUMBER === ''}`);
core.info(`Owner OK: ${process.env.REPO_OWNER !== 'funfair-tech'}`);
core.info(`Status OK: ${process.env.REPO_STATUS === 'private'}`);
- name: "Create Pull Request"
if: steps.findPr.outputs.number == ''
id: open-pr
uses: ./.github/actions/create-pull-request
with:
github-token: ${{github.token}}
destination-branch: "main"
assignee: ${{github.actor}}
labels: "auto-pr"
draft: ${{steps.draft-flag.outputs.create-draft || env.CREATE_DRAFT}}
title: ${{steps.commit-info.outputs.commit-title}}
body: ${{steps.pr-template.outputs.content}}
- name: "New PR Details"
if: steps.findPr.outputs.number == ''
uses: actions/github-script@v9.0.0
env:
PR_URL: ${{steps.open-pr.outputs.pr_url}}
PR_NUMBER: ${{steps.open-pr.outputs.pr_number}}
HAS_CHANGED_FILES: ${{steps.open-pr.outputs.has_changed_files}}
with:
script: |
core.info(`URL: ${process.env.PR_URL}`);
core.info(`PR: ${process.env.PR_NUMBER}`);
core.info(`CF: ${process.env.HAS_CHANGED_FILES}`);
- name: "Sync Labels"
if: steps.findPr.outputs.number == ''
uses: ./.github/actions/sync-labels
with:
github-token: ${{secrets.SOURCE_PUSH_TOKEN}}
pr-number: ${{steps.open-pr.outputs.pr_number}}