Untitled

 avatar
unknown
yaml
2 months ago
3.0 kB
4
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"
Leave a Comment