Files
kupshop/bin/import_demo.sh
2025-08-02 16:30:27 +02:00

94 lines
2.8 KiB
Bash

#!/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