forked from stdlib-js/stdlib
-
Notifications
You must be signed in to change notification settings - Fork 0
122 lines (104 loc) · 4.16 KB
/
pr_rebase_develop.yml
File metadata and controls
122 lines (104 loc) · 4.16 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
#/
# @license Apache-2.0
#
# Copyright (c) 2024 The Stdlib Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#/
# Workflow name:
name: pr_rebase_develop
# Workflow triggers:
on:
# Allow the workflow to be triggered by other workflows
workflow_call:
# Define the input parameters for the workflow:
inputs:
pull_request_number:
description: 'PR number'
required: true
type: number
# Define the secrets accessible by the workflow:
secrets:
STDLIB_BOT_GITHUB_TOKEN:
description: 'GitHub token for stdlib-bot'
required: true
STDLIB_BOT_GPG_PRIVATE_KEY:
description: 'GPG private key for stdlib-bot'
required: true
STDLIB_BOT_GPG_PASSPHRASE:
description: 'GPG passphrase for stdlib-bot'
required: true
# Workflow jobs:
jobs:
rebase:
# Define a display name:
name: 'Rebase PR Branch onto Develop'
# Define the type of virtual host machine:
runs-on: ubuntu-latest
# Define the job's steps:
steps:
# Get PR details:
- name: 'Get PR details'
id: pr-details
run: |
pr_response=$(curl -s \
-H "Accept: application/vnd.github.v3+json" \
-H "Authorization: Bearer ${{ secrets.STDLIB_BOT_GITHUB_TOKEN }}" \
"https://api.github.com/repos/stdlib-js/stdlib/pulls/${{ inputs.pull_request_number }}")
# Escape control characters:
pr_response=$(echo "$pr_response" | tr -d '\000-\031')
# Extract the needed details:
pr_branch=$(echo "$pr_response" | jq -r '.head.ref')
pr_repo_full_name=$(echo "$pr_response" | jq -r '.head.repo.full_name')
echo "branch=$pr_branch" >> $GITHUB_OUTPUT
echo "repository=$pr_repo_full_name" >> $GITHUB_OUTPUT
# Checkout the repository:
- name: 'Checkout repository'
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ steps.pr-details.outputs.branch }}
repository: ${{ steps.pr-details.outputs.repository }}
token: ${{ secrets.STDLIB_BOT_GITHUB_TOKEN }}
fetch-depth: 0
# Disable Git hooks:
- name: 'Disable Git hooks'
run: |
rm -rf .git/hooks
# Import GPG key to sign commits:
- name: 'Import GPG key to sign commits'
# Pin action to full length commit SHA
uses: crazy-max/ghaction-import-gpg@e89d40939c28e39f97cf32126055eeae86ba74ec # v6.3.0
with:
gpg_private_key: ${{ secrets.STDLIB_BOT_GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.STDLIB_BOT_GPG_PASSPHRASE }}
git_user_signingkey: true
git_commit_gpgsign: true
# Rebase on develop branch:
- name: 'Rebase on develop branch'
env:
REPO_GITHUB_TOKEN: ${{ secrets.STDLIB_BOT_GITHUB_TOKEN }}
USER_NAME: stdlib-bot
BRANCH_NAME: ${{ steps.pr-details.outputs.branch }}
REPO_NAME: ${{ steps.pr-details.outputs.repository }}
run: |
# Configure Git user:
git config --local user.email "82920195+stdlib-bot@users.noreply.github.com"
git config --local user.name "$USER_NAME"
# Add upstream remote pointing to the original repository:
git remote add upstream https://github.com/stdlib-js/stdlib.git
# Fetch the develop branch from upstream:
git fetch upstream develop
# Rebase current branch onto upstream develop:
git rebase upstream/develop
# Force push the updated branch back to the forked repository:
git push --force-with-lease "https://$USER_NAME:$REPO_GITHUB_TOKEN@github.com/$REPO_NAME.git" $BRANCH_NAME