-
Notifications
You must be signed in to change notification settings - Fork 5
149 lines (148 loc) · 5.59 KB
/
sage-test.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
142
143
144
145
146
147
148
149
name: Sage Install Tests
on:
push:
paths:
- '.github/workflows/sage-test.yml'
pull_request:
branches:
- main
paths:
- 'private/scripts/**'
jobs:
test:
name: Sage Install Tests
env:
TERM: xterm-256color
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
php-version: [8.0, 8.1, 8.2, 8.3]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install SSH keys
uses: webfactory/[email protected]
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
- name: Get and Set PR number
id: pr
run: |
pr_num=$(gh pr view --json number -q .number || echo "")
echo "pr_num=$pr_num" >> $GITHUB_ENV
env:
GITHUB_TOKEN: ${{ github.token }}
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
- name: Generate multidev name
id: generate_name
run: |
os_short=""
case "${{ matrix.os }}" in
ubuntu-latest)
os_short="nix"
;;
macos-latest)
os_short="mac"
;;
windows-latest)
os_short="win"
;;
esac
php_short=$(echo "${{ matrix.php-version }}" | tr -d '.')
echo "PR number: $pr_num"
echo "OS: $os_short"
echo "PHP: $php_short"
multidev_name="${os_short}-${php_short}-${pr_num}"
echo "Generated multidev name: $multidev_name"
echo "multidev_name=$multidev_name" >> $GITHUB_ENV
- name: Get latest Terminus release
run: |
latest_version=$(curl --silent "https://api.github.com/repos/pantheon-systems/terminus/releases/latest" | jq -r .tag_name)
echo "Latest Terminus version: $latest_version"
if [[ "${{ matrix.os }}" == "macos-latest" ]]; then
echo "☕ Installing Terminus on macOS from Homebrew..."
brew install pantheon-systems/external/terminus
else
echo "💻 Installing Terminus from phar on Linux..."
curl -L "https://github.com/pantheon-systems/terminus/releases/download/$latest_version/terminus.phar" -o terminus
chmod +x terminus
sudo mv terminus /usr/local/bin/
fi
# Test that terminus works...
terminus --version
- name: Validate Pantheon Host Key
run: |
echo "Host *.drush.in HostKeyAlgorithms +ssh-rsa" >> ~/.ssh/config
echo "Host *.drush.in PubkeyAcceptedKeyTypes +ssh-rsa" >> ~/.ssh/config
echo "StrictHostKeyChecking no" >> ~/.ssh/config
- name: Log into Terminus and Check for updates
run: |
terminus auth:login --machine-token=${{ secrets.TERMINUS_TOKEN }}
terminus upstream:updates:apply wpcm-sage-install-tests.dev --accept-upstream
- name: Clone site and create multidev
run: |
echo "Cloning site..."
terminus local:clone wpcm-sage-install-tests
cd ~/pantheon-local-copies/wpcm-sage-install-tests
if [[ -n $(git status --porcelain) ]]; then
echo "❌ Local clone is dirty. Exiting..."
exit 1
fi
# If sage-test exists, delete it.
if [[ -d "web/app/themes/sage-test" ]]; then
echo "Deleting existing sage-test..."
rm -rf web/app/themes/sage-test
fi
terminus multidev:create wpcm-sage-install-tests.dev $multidev_name
echo "Checking out multidev..."
git fetch --all
git checkout $multidev_name
- name: Copy latest repository changes
run: |
# Sync the files from checked-out repo to pantheon-local-copies, excluding the .git folder
rsync -av --exclude='.git/' ${{ github.workspace }}/ ~/pantheon-local-copies/wpcm-sage-install-tests/
# Navigate to Pantheon local copies directory
cd ~/pantheon-local-copies/wpcm-sage-install-tests/
git config --global user.email "[email protected]"
git config --global user.name "Pantheon TestBot"
# Add, commit and push
git add .
git commit -m "Sync latest changes to test environment"
git push origin $multidev_name
- name: Install Composer Dependencies
run: |
cd ~/pantheon-local-copies/wpcm-sage-install-tests
composer install
- name: Run Sage Install Script
run: |
export SAGENAME=sage-test
export SITENAME=wpcm-sage-install-tests
export CI=1
export SITEENV=$multidev_name
export PHPVERSION=${{ matrix.php-version }}
cd ~/pantheon-local-copies/$SITENAME
composer install-sage || exit_code=$?
if [[ -n "${exit_code}" ]]; then
echo "❌ Sage Install Script Failed with exit code ${exit_code}"
exit $exit_code
else
echo "✅ Sage Install Script passed!"
exit 0;
fi
- name: Delete multidev
if: always()
run: terminus multidev:delete --delete-branch --yes wpcm-sage-install-tests.$multidev_name
- name: Delete the multidev build artifact
if: always()
run: |
cd ~/pantheon-local-copies/wpcm-sage-install-tests
git fetch --tags origin
# Allow these to fail.
git tag -d pantheon_build_artifacts_$multidev_name || true
git push origin --delete pantheon_build_artifacts_$multidev_name || true