Skip to content

Commit 35106ea

Browse files
committed
Create release.yml
1 parent d126410 commit 35106ea

File tree

1 file changed

+179
-0
lines changed

1 file changed

+179
-0
lines changed

.github/workflows/release.yml

Lines changed: 179 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
name: Setup Ubuntu with Composer and PHP 8
2+
on:
3+
push:
4+
tags:
5+
- '*'
6+
7+
jobs:
8+
setup-ubuntu:
9+
runs-on: ubuntu-latest
10+
11+
steps:
12+
- name: Check for GitHub API key
13+
if: ${{ github.event_name == 'push' }}
14+
env:
15+
GITHUB_TOKEN: ${{ secrets.MY_GITHUB_TOKEN }}
16+
run: |
17+
if [ -z "${GITHUB_TOKEN}" ]; then
18+
echo "GitHub API key not found. Exiting..."
19+
exit 0
20+
else
21+
echo "GitHub API key found."
22+
fi
23+
24+
- name: Install PHP cli + composer
25+
run: |
26+
sudo apt update
27+
sudo apt install php-cli unzip
28+
cd ~
29+
curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php
30+
HASH=`curl -sS https://composer.github.io/installer.sig`
31+
sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer
32+
33+
cd /tmp
34+
mkdir linkstack
35+
cd linkstack
36+
37+
echo "${GITHUB_REF##*/}" > version.json
38+
39+
TAG_VERSION="${GITHUB_REF##*/}"
40+
version=${TAG_VERSION#"v"}
41+
42+
git clone https://github.com/LinkStackOrg/LinkStack/
43+
44+
mkdir linkstack
45+
mv LinkStack linkstack/linkstack
46+
47+
cd linkstack
48+
49+
curl -o README.md https://gist.githubusercontent.com/JulianPrieber/7a3f18a404c524d59c147a8d4f1ad33c/raw/3008f0893da2effaee56b99ee8b956fa533d9b07/README.md
50+
51+
cd linkstack
52+
53+
cp "../../version.json" "version.json"
54+
55+
composer update --no-scripts -vvv
56+
57+
php artisan migrate
58+
php artisan db:seed
59+
php artisan db:seed --class="PageSeeder"
60+
php artisan db:seed --class="ButtonSeeder"
61+
62+
rm -r ".git"
63+
rm -r ".github"
64+
rm README.md
65+
cd ../../
66+
67+
rsync -av linkstack/linkstack update
68+
69+
cd update
70+
71+
mv linkstack/database/database.sqlite database.sqlite
72+
73+
curl -o "HOW TO UPDATE.md" https://gist.githubusercontent.com/JulianPrieber/afc782666cf8c8f7a1a9cb9928498af5/raw/dbbbefb3c88ecd7703efbc866209629d9d130659/HOW%2520TO%2520UPDATE.md
74+
75+
rm linkstack/INSTALLING
76+
77+
cd ..
78+
79+
rsync -av linkstack/linkstack/ "$version"
80+
81+
rm "$version/.env"
82+
rm "$version/INSTALLING"
83+
rm "$version/database/database.sqlite"
84+
cp version.json "$version/version.json"
85+
echo "v$version" > "$version/vbeta.json"
86+
87+
touch /tmp/linkstack/linkstack/linkstack/storage/app/ISINSTALLED
88+
89+
cd /tmp/linkstack
90+
91+
cd "$version"
92+
zip -r "$version.zip" *
93+
mv "$version.zip" ../
94+
cd ..
95+
96+
cd linkstack
97+
zip -r "linkstack.zip" *
98+
mv linkstack.zip ../
99+
cd ..
100+
101+
cd update
102+
zip -r "update.zip" *
103+
mv update.zip ../
104+
cd ..
105+
106+
- name: Create GitHub Release
107+
if: ${{ github.event_name == 'push' }}
108+
env:
109+
GITHUB_TOKEN: ${{ secrets.MY_GITHUB_TOKEN }}
110+
run: |
111+
if [ -z "${GITHUB_TOKEN}" ]; then
112+
echo "GitHub API key not found. Exiting..."
113+
exit 1
114+
else
115+
echo "GitHub API key found."
116+
cd /tmp/linkstack
117+
118+
# Get the repository name in the format 'OWNER/REPO'
119+
REPO_NAME="LinkStackOrg/LinkStack"
120+
121+
# Upload 'update.zip'
122+
gh release upload "${GITHUB_REF##*/}" "update.zip" --clobber -R "$REPO_NAME"
123+
124+
# Upload 'linkstack.zip'
125+
gh release upload "${GITHUB_REF##*/}" "linkstack.zip" --clobber -R "$REPO_NAME"
126+
fi
127+
128+
- name: Update version.json
129+
if: ${{ github.event_name == 'push' }}
130+
env:
131+
GITHUB_TOKEN: ${{ secrets.MY_GITHUB_TOKEN }}
132+
run: |
133+
if [ -z "${GITHUB_TOKEN}" ]; then
134+
echo "GitHub API key not found. Exiting..."
135+
exit 1
136+
else
137+
# GitHub credentials
138+
username="JulianPrieber"
139+
token="${{ secrets.MY_GITHUB_TOKEN }}"
140+
141+
# The repository and file path
142+
repo="LinkStackOrg/LinkStack"
143+
file_path="version.json"
144+
145+
# Fetch the latest commit's SHA for the file
146+
sha=$(curl -u "$username:$token" -s "https://api.github.com/repos/$repo/contents/$file_path" | grep -oP '(?<="sha": ")[^"]+')
147+
148+
# Get version from version.json
149+
cd /tmp/linkstack
150+
TAG_VERSION="${GITHUB_REF##*/}"
151+
version=${TAG_VERSION#"v"}
152+
153+
# JSON payload with the new content
154+
payload="{\"message\": \"Update version.json to $version\", \"content\": \"$(echo "$version" | base64 -w 0)\", \"sha\": \"$sha\"}"
155+
156+
# API endpoint to create a new commit
157+
url="https://api.github.com/repos/$repo/contents/$file_path"
158+
159+
# Make the API request to update the file
160+
curl -X PUT -u "$username:$token" -d "$payload" "$url"
161+
fi
162+
163+
- name: Upload to Update Server
164+
if: ${{ github.event_name == 'push' }}
165+
run: |
166+
cd /tmp/linkstack
167+
ls
168+
TAG_VERSION="${GITHUB_REF##*/}"
169+
version=${TAG_VERSION#"v"}
170+
171+
# Install the OpenSSH client
172+
sudo apt-get install -y openssh-client
173+
174+
# Clear the remote directory
175+
sshpass -p "${{ secrets.SERVER_PASSWORD }}" ssh -o StrictHostKeyChecking=no -p ${{ secrets.SERVER_PORT }} ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_IP }} "rm -rf ${{ secrets.REMOTE_PATH }}/*"
176+
177+
# Use SSH to upload the file to the remote server
178+
sshpass -p "${{ secrets.SERVER_PASSWORD }}" scp -o StrictHostKeyChecking=no -P ${{ secrets.SERVER_PORT }} $version.zip ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_IP }}:${{ secrets.REMOTE_PATH }}
179+

0 commit comments

Comments
 (0)