-
Notifications
You must be signed in to change notification settings - Fork 805
141 lines (123 loc) · 4.84 KB
/
wpcloud.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
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
name: WPCloud Unit Testing for WPCOMSH
on:
pull_request:
push:
branches: ['trunk', '*/branch-*']
concurrency:
group: wpcloud-${{ github.event_name }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
name: Install the Monorepo and build wpcomsh
runs-on: ubuntu-latest
outputs:
wpcomsh: ${{ steps.changed.outputs.wpcomsh }}
steps:
- uses: actions/checkout@v4
with:
# codecov.io requires a fetch depth > 1.
fetch-depth: 2
# For pull requests, list-changed-projects.sh needs the merge base.
# But it doesn't have to be checked out.
- name: Deepen to merge base
if: github.event_name == 'pull_request'
uses: ./.github/actions/deepen-to-merge-base
with:
checkout: false
- name: Setup tools
uses: ./.github/actions/tool-setup
with:
php: ${{ matrix.php }}
node: ${{ matrix.node }}
- name: Monorepo install
run: |
echo "::group::Pnpm"
pnpm install
echo "::endgroup::"
- name: Detect if wpcomsh has changed
id: changed
run: |
CHANGED="$(EXTRA=test .github/files/list-changed-projects.sh)"
# WPCOMSH_CHANGED="$(jq --argjson changed "$CHANGED" -n '$changed | has( "plugins/wpcomsh" ) ')"
WPCOMSH_CHANGED="true"
echo "wpcomsh=${WPCOMSH_CHANGED}" >> "$GITHUB_OUTPUT"
- name: Build wpcomsh
if: steps.changed.outputs.wpcomsh == 'true'
run: |
find . -path ./.github -prune -o -type f -print | sort > /tmp/before.txt
echo "::group::Installing and building wpcomsh"
pnpm jetpack build -v --deps plugins/wpcomsh
echo "::endgroup::"
# We only want to save the files that were actually created or changed.
# But we can't just list them for actions/cache/save, "Argument list too long".
# So instead we delete all the unchanged files so we can tell actions/cache/save
# to save everything that's left.
git -c core.quotepath=off diff --name-only | sort > /tmp/changed.txt
if [[ -s /tmp/changed.txt ]]; then
grep -F -x -v -f /tmp/changed.txt /tmp/before.txt > /tmp/remove.txt
else
cp /tmp/before.txt /tmp/remove.txt
fi
xargs -d '\n' rm < /tmp/remove.txt
find . -type d -empty -delete
- name: Save wpcomsh build cache
if: steps.changed.outputs.wpcomsh == 'true'
id: wpcomsh-build-cache-save
uses: actions/cache/save@v4
with:
path: |
.
!./.github/
key: ${{ github.sha }}
deploy:
name: Run PHPUnit on the WPCloud test site
runs-on: ubuntu-latest
needs: build
if: needs.build.outputs.wpcomsh == 'true'
steps:
- uses: actions/checkout@v4
- name: Restore wpcomsh build cache
id: wpcomsh-build-cache
uses: actions/cache/restore@v4
with:
path: |
.
!./.github/
key: ${{ github.sha }}
fail-on-cache-miss: true
- name: Setup tools
uses: ./.github/actions/tool-setup
- name: Install monorepo
run: |
pnpm install
- name: Configure Github to be able to SSH to the Atomic site
run: |
echo "::group::Intializing"
mkdir -vp ~/.ssh/
chmod -v 700 ~/.ssh
touch ~/.ssh/id_site
touch ~/.ssh/known_hosts
chmod 600 ~/.ssh/id_site
chmod 600 ~/.ssh/known_hosts
echo "$SSH_KEY" > ~/.ssh/id_site
echo "wrote ~/.ssh/id_site"
echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
echo "wrote ~/.ssh/known_hosts"
echo "::endgroup::"
echo "::group::Transferring wpcomsh to the testing server"
pnpm jetpack rsync wpcomsh [email protected]:~/htdocs/wp-content/mu-plugins
scp -r projects/plugins/wpcomsh/bin [email protected]:/srv/htdocs/wp-content/mu-plugins/wpcomsh
scp -r projects/plugins/wpcomsh/tests [email protected]:/srv/htdocs/wp-content/mu-plugins/wpcomsh/
scp projects/plugins/wpcomsh/phpunit.xml.dist [email protected]:/srv/htdocs/wp-content/mu-plugins/wpcomsh/
echo "::engroup::"
echo "::group::execution"
ssh -i ~/.ssh/id_site [email protected] "~/htdocs/github-action-handler.sh" || CODE=$?
echo "::endgroup::"
echo "::group::teardown"
rm -rvf ~/.ssh/
echo "::endgroup::"
echo "Exiting with exit code $CODE"
exit $CODE
env:
SSH_KEY: ${{ secrets.UPDATEJETPACKSTAGING_SSH_KEY }}
SSH_KNOWN_HOSTS: ${{ secrets.UPDATEJETPACKSTAGING_SSH_KNOWN_HOSTS }}