Untitled
unknown
yaml
10 months ago
3.0 kB
6
Indexable
name: Archive Script
on:
workflow_dispatch:
env:
ARCHIVE_DIR: '/archives'
BASE_STORAGE_DIR: '/apps'
APP_NAME: ${{ github.event.repository.name }}
jobs:
archive:
runs-on: ubuntu-latest
steps:
- name: Connect to remote server and perform archiving
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.NAZWA_HOST }}
username: ${{ secrets.NAZWA_USERNAME }}
password: ${{ secrets.NAZWA_PASSWORD }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
passphrase: ${{ secrets.SSH_PASSPHRASE }}
script_stop: true
script: |
APP_DIR="${BASE_STORAGE_DIR}/${APP_NAME}_PROD" # katalog aplikacji
WORK_DIR="${ARCHIVE_DIR}/apps/${APP_NAME}" # katalog roboczy w archiwum
STORAGE_DIR="${APP_DIR}/storage/app" # katalog storage w aplikacji
ENV_FILE="${APP_DIR}/.env" # plik .env
DUMP_FILE="/_sqldump_/${APP_NAME}-Dump.sql" # dump bazy danych
# tworzenie katalogu roboczego
mkdir -p "$WORK_DIR/app"
# kopiowanie plików storage/app
# storage_dir wskazuje na folder storage/app do skopiowania
if [ -d "$STORAGE_DIR" ]; then
# flaga -d sprawdzamy czy sciezka jest folderem
cp -r "$STORAGE_DIR"/* "$WORK_DIR/app/"
# flaga -r pozwala kopiowac foldery z ich zawartośścia
echo "Copied storage/app to $WORK_DIR/app/"
else
echo "Storage directory not found: $STORAGE_DIR"
exit 1
fi
# kopiowanie pliku .env
# dzieki -f sprawdzamy czy plik to file jesli tak to kopiujemy
if [ -f "$ENV_FILE" ]; then
cp "$ENV_FILE" "$WORK_DIR/.env"
echo "Copied .env to $WORK_DIR"
else
echo ".env file not found: $ENV_FILE"
exit 1
fi
# przenoszenie dumpa bazy danych
# tu podobnie dzieki fladze -f sprawdzamy czy to plik i czy istnieje jesli tak to kopiujemy
if [ -f "$DUMP_FILE" ]; then
cp "$DUMP_FILE" "$WORK_DIR/database_dump.sql"
echo "Copied database dump to $WORK_DIR"
else
echo "Database dump not found: $DUMP_FILE"
echo "Skipping database dump."
fi
# tworzenie finalnego ZIP z WORK_DIR
cd "${ARCHIVE_DIR}/apps"
# zipujemy plik dzieki fladze -r czyli rekurencyjnemu archiwizowaniu, umozliwia to zagniezdzanie folderiw i ich zawartosci w zip
zip -r "${APP_NAME}.zip" "${APP_NAME}"
echo "Created final archive: ${ARCHIVE_DIR}/apps/${APP_NAME}.zip"
# usuwanie starego folderu projektu
# usuwamy caly folder projektowy dzieki -r flagi i -f poniewaz r flaga usuwa caly folder a f flaga sprawdza czy to folder
rm -rf "$APP_DIR"
echo "Removed old project directory: $APP_DIR"
Editor is loading...
Leave a Comment