#!/bin/bash -xe if [ "$#" == 0 ]; then . ../utils/library.sh DATABASE=$(get_current_database) set -- root strongpassword mariadb "$DATABASE" "/vagrant/home/shop" fi cd "$5" export GITLAB_TOKEN=Q7oFxHDwBqfB_1MaKZwb BRANCH=$(php -r "echo urlencode(\"prod/komponenty-wpj\");") # Pokus o stazeni artefaktu if curl -# -L -f --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" \ "https://gitlab.wpj.cz/api/v4/projects/2/jobs/artifacts/${BRANCH}/download?job=dump-database" \ -o data.zip; then echo "Artefakt uspesne stazen." else echo "Artefakt se nepodarilo stahnout, spoustim job..." # Ziskani ID posledniho uspesneho pipeline PIPELINE_ID=$(curl -s --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" \ "https://gitlab.wpj.cz/api/v4/projects/2/pipelines?status=success&ref=${BRANCH}" \ | jq -r '.[0].id') # Ziskani informaci o jobu JOB_INFO=$(curl -s --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" \ "https://gitlab.wpj.cz/api/v4/projects/2/pipelines/${PIPELINE_ID}/jobs" \ | jq -r '.[] | select(.name == "dump-database")') JOB_ID=$(echo "$JOB_INFO" | jq -r '.id') JOB_STATUS=$(echo "$JOB_INFO" | jq -r '.status') echo "Job ID: $JOB_ID" echo "Status: $JOB_STATUS" # Rozhodnutí mezi play nebo retry if [[ "$JOB_STATUS" == "manual" ]]; then echo "Spoustim job" curl -s --request POST --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" \ "https://gitlab.wpj.cz/api/v4/projects/2/jobs/${JOB_ID}/play" elif [[ "$JOB_STATUS" == "failed" || "$JOB_STATUS" == "success" || "$JOB_STATUS" == "canceled" ]]; then echo "Opakovane spoustim job" curl -s --request POST --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" \ "https://gitlab.wpj.cz/api/v4/projects/2/jobs/${JOB_ID}/retry" else echo "Job nelze spustit (stav: $JOB_STATUS)" fi # Cekani na dokonceni jobu JOB_STATE="" while true; do JOB_STATE=$(curl -s --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" \ "https://gitlab.wpj.cz/api/v4/projects/2/jobs/${JOB_ID}" \ | jq -r '.status') echo -n "[$(date +%H:%M:%S)] Stav jobu: $JOB_STATE" >&2 if [[ "$JOB_STATE" == "success" ]]; then echo " ✅" break elif [[ "$JOB_STATE" == "failed" || "$JOB_STATE" == "canceled" ]]; then echo "Job selhal nebo byl zrusen. Ukoncuji." exit 1 else echo -n . sleep 3 fi done # Druhy pokus o stazeni curl -# -L -f --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" \ "https://gitlab.wpj.cz/api/v4/projects/2/jobs/artifacts/${BRANCH}/download?job=dump-database" \ -o data.zip fi # Pokud se podarilo stahnout ZIP, pokracuj s importem if [ -e data.zip ]; then unzip -o data.zip # Import databaze bunzip2 -c database.sql.bz2 | mysql -u "$1" -p"$2" -h"$3" "$4" rm data.zip database.sql.bz2 else echo "Chyba: ZIP soubor se nepodarilo ziskat." exit 1 fi