94 lines
2.8 KiB
Bash
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
|