Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Setup Ubuntu with Composer and PHP 8 | |
on: | |
push: | |
tags: | |
- '*' | |
jobs: | |
setup-ubuntu: | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check for GitHub API key | |
if: ${{ github.event_name == 'push' }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.MY_GITHUB_TOKEN }} | |
run: | | |
if [ -z "${GITHUB_TOKEN}" ]; then | |
echo "GitHub API key not found. Exiting..." | |
exit 0 | |
else | |
echo "GitHub API key found." | |
fi | |
- name: Updating Dependencies + zip | |
run: | | |
cd ~ | |
curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php | |
HASH=`curl -sS https://composer.github.io/installer.sig` | |
sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer | |
sudo update-alternatives --set php /usr/bin/php8.0 | |
cd /tmp | |
mkdir linkstack | |
cd linkstack | |
TAG_VERSION="${GITHUB_REF##*/}" | |
version=${TAG_VERSION#"v"} | |
echo "$version" > version.json | |
git clone https://github.com/LinkStackOrg/LinkStack/ | |
mkdir linkstack | |
mv LinkStack linkstack/linkstack | |
cd linkstack | |
curl -o README.md https://gist.githubusercontent.com/JulianPrieber/7a3f18a404c524d59c147a8d4f1ad33c/raw/3008f0893da2effaee56b99ee8b956fa533d9b07/README.md | |
cd linkstack | |
cp "../../version.json" "version.json" | |
composer update --no-scripts | |
php artisan migrate | |
php artisan db:seed | |
php artisan db:seed --class="PageSeeder" | |
php artisan db:seed --class="ButtonSeeder" | |
rm -r ".git" | |
rm -r ".github" | |
rm README.md | |
cd ../../ | |
rsync -av linkstack/linkstack update | |
cd update | |
mv linkstack/database/database.sqlite database.sqlite | |
curl -o "HOW TO UPDATE.md" https://gist.githubusercontent.com/JulianPrieber/afc782666cf8c8f7a1a9cb9928498af5/raw/dbbbefb3c88ecd7703efbc866209629d9d130659/HOW%2520TO%2520UPDATE.md | |
rm linkstack/INSTALLING | |
cd .. | |
rsync -av linkstack/linkstack/ "$version" | |
rm "$version/.env" | |
rm "$version/INSTALLING" | |
rm "$version/database/database.sqlite" | |
cp version.json "$version/version.json" | |
echo "v$version" > "$version/vbeta.json" | |
touch /tmp/linkstack/linkstack/linkstack/storage/app/ISINSTALLED | |
cd /tmp/linkstack | |
cd "$version" | |
zip -r "$version.zip" * | |
mv "$version.zip" ../ | |
cd .. | |
cd linkstack | |
zip -r "linkstack.zip" * | |
mv linkstack.zip ../ | |
cd .. | |
cd update | |
zip -r "update.zip" * | |
mv update.zip ../ | |
cd .. | |
- name: Create GitHub Release | |
if: ${{ github.event_name == 'push' }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.MY_GITHUB_TOKEN }} | |
run: | | |
if [ -z "${GITHUB_TOKEN}" ]; then | |
echo "GitHub API key not found. Exiting..." | |
exit 1 | |
else | |
echo "GitHub API key found." | |
cd /tmp/linkstack | |
# Get the repository name in the format 'OWNER/REPO' | |
REPO_NAME="LinkStackOrg/LinkStack" | |
# Upload 'update.zip' | |
gh release upload "${GITHUB_REF##*/}" "update.zip" --clobber -R "$REPO_NAME" | |
# Upload 'linkstack.zip' | |
gh release upload "${GITHUB_REF##*/}" "linkstack.zip" --clobber -R "$REPO_NAME" | |
fi | |
- name: Update version.json | |
if: ${{ github.event_name == 'push' }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.MY_GITHUB_TOKEN }} | |
run: | | |
if [ -z "${GITHUB_TOKEN}" ]; then | |
echo "GitHub API key not found. Exiting..." | |
exit 1 | |
else | |
# GitHub credentials | |
username="JulianPrieber" | |
token="${{ secrets.MY_GITHUB_TOKEN }}" | |
# The repository and file path | |
repo="LinkStackOrg/LinkStack" | |
file_path="version.json" | |
# Fetch the latest commit's SHA for the file | |
sha=$(curl -u "$username:$token" -s "https://api.github.com/repos/$repo/contents/$file_path" | grep -oP '(?<="sha": ")[^"]+') | |
# Get version from version.json | |
cd /tmp/linkstack | |
TAG_VERSION="${GITHUB_REF##*/}" | |
version=${TAG_VERSION#"v"} | |
# JSON payload with the new content | |
payload="{\"message\": \"Update version.json to $version\", \"content\": \"$(echo -ne "$version\n" | base64 -w 0)\", \"sha\": \"$sha\"}" | |
# API endpoint to create a new commit | |
url="https://api.github.com/repos/$repo/contents/$file_path" | |
# Make the API request to update the file | |
curl -X PUT -u "$username:$token" -d "$payload" "$url" | |
fi | |
- name: Upload to Update Server | |
if: ${{ github.event_name == 'push' }} | |
run: | | |
cd /tmp/linkstack | |
ls | |
TAG_VERSION="${GITHUB_REF##*/}" | |
version=${TAG_VERSION#"v"} | |
# Install the OpenSSH client | |
sudo apt-get install -y openssh-client | |
# Clear the remote directory | |
sshpass -p "${{ secrets.SERVER_PASSWORD }}" ssh -o StrictHostKeyChecking=no -p ${{ secrets.SERVER_PORT }} ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_IP }} "rm -rf ${{ secrets.REMOTE_PATH }}/*" | |
# Use SSH to upload the file to the remote server | |
sshpass -p "${{ secrets.SERVER_PASSWORD }}" scp -o StrictHostKeyChecking=no -P ${{ secrets.SERVER_PORT }} $version.zip ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_IP }}:${{ secrets.REMOTE_PATH }} | |