forked from flutter/gallery
-
Notifications
You must be signed in to change notification settings - Fork 0
103 lines (76 loc) · 4.59 KB
/
ext-dependency-update.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
name: Dispatch Receiver for External Updates
on:
repository_dispatch:
types: dependency_update
jobs:
build:
name: Process update from App Repo
if: |
!contains(github.event.client_payload.github.event.head_commit.message, 'ci skip')
&& !contains(github.event.client_payload.github.event.pull_request.title, 'ci skip')
&& (github.event.client_payload.github.repository == '<enter>')
runs-on: ubuntu-latest
steps:
- name: Dump the client payload context
env:
PAYLOAD_CONTEXT: ${{ toJson(github.event.client_payload) }}
run: echo "$PAYLOAD_CONTEXT"
# Checkout the pull request branch
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab #v3.5.2
with:
token: ${{ secrets.PA_TOKEN }}
fetch-depth: 10
- name: Update dependency
run: |
if [[ "${{ github.event.client_payload.github.event_name }}" == "pull_request" ]]; then
COMMIT=$(echo ${{ github.event.client_payload.github.event.pull_request.head.sha }} | cut -c1-7)
else
COMMIT=$(echo ${{ github.event.client_payload.github.sha }} | cut -c1-7)
fi
echo "SOURCE_COMMIT : $COMMIT"
# Commit the change
- name: Commit
timeout-minutes: 2
env:
GITHUB_TOKEN: ${{ secrets.PA_TOKEN }}
run: |
git config --global user.name 'gitops-bot'
git config --global user.email '52609384+gitops-bot@users.noreply.github.com'
MASTER_BRANCH=`git remote show origin | grep HEAD | awk '{print $3;}'`
if [[ "${{ github.event.client_payload.github.event_name }}" == "pull_request" || "${{ github.event.client_payload.github.event_name }}" == "release" ]]; then
# Create PR
git add -A
if [[ "${{ github.event.client_payload.github.event_name }}" == "pull_request" ]]; then
git commit --allow-empty -s -m '[ops] ${{ github.event.client_payload.github.event.pull_request.user.login }} opened PR#${{ github.event.client_payload.github.event.pull_request.number }} for ${{ github.event.client_payload.github.repository }}:${{ github.event.client_payload.github.event.pull_request.base.ref }} - ${{ github.event.client_payload.github.event.pull_request.title }}'
elif [[ "${{ github.event.client_payload.github.event_name }}" == "release" ]]; then
git commit --allow-empty -s -m '[ops] ${{ github.event.client_payload.github.event.release.author.login }} released ${{ github.event.client_payload.github.event.release.tag_name }} in ${{ github.event.client_payload.github.repository }} - ${{ github.event.client_payload.github.event.release.name }}'
fi
REMOTE_BRANCH=app-updates
git remote set-branches origin '*'
git fetch --depth 10
if ! git ls-remote --exit-code --heads origin $REMOTE_BRANCH; then
git checkout -b $REMOTE_BRANCH
else
while [ -z $( git merge-base $MASTER_BRANCH origin/$REMOTE_BRANCH ) ]; do
git fetch --deepen=100 origin $MASTER_BRANCH $REMOTE_BRANCH;
done
git checkout $REMOTE_BRANCH
fi
git merge -Xtheirs $MASTER_BRANCH
while ! git push --force-with-lease origin $REMOTE_BRANCH; do
git pull --deepen=100 -Xours origin $REMOTE_BRANCH
done
curl -fsSL https://github.com/github/hub/raw/$MASTER_BRANCH/script/get | bash -s 2.14.1
bin/hub pull-request -a genx7up -m "[ci skip] Dependency updated" || :
else
git add -A
if echo "${{ github.event.client_payload.github.ref }}" | grep '/tags/'; then
git commit -s -m "[ops] ${{ github.event.client_payload.github.event.pusher.name }} created a tag ${{ github.event.client_payload.github.repository }}:$(echo ${{ github.event.client_payload.github.ref }} | sed 's/refs\/tags\///')" || exit 0
else
git commit -s -m "[ops] ${{ github.event.client_payload.github.event.pusher.name }} pushed $(echo ${{ github.event.client_payload.github.sha }} | cut -c1-7) to ${{ github.event.client_payload.github.repository }}:$(echo ${{ github.event.client_payload.github.ref }} | sed 's/refs\/heads\///') - ${{ github.event.client_payload.github.event.head_commit.message }}" || exit 0
fi
# Push if trigger by a commit in apps repo
# Optionally we can decide to raise a PR instead for unreliable source commits
git pull --depth 10 --ff-only origin $MASTER_BRANCH
git push --force-with-lease
fi