Untitled
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