CI: Setup pushing-translation procedure in CI.
This commit is contained in:
parent
716b106f6c
commit
5c5120e3d7
19
.drone.yml
19
.drone.yml
@ -17,6 +17,23 @@ steps:
|
|||||||
- push
|
- push
|
||||||
- tag
|
- tag
|
||||||
|
|
||||||
|
- name: push-translation
|
||||||
|
image: debian
|
||||||
|
environment:
|
||||||
|
TRADUORA_R_CLIENT:
|
||||||
|
from_secret: TRADUORA_R_CLIENT
|
||||||
|
TRADUORA_R_SECRET:
|
||||||
|
from_secret: TRADUORA_R_SECRET
|
||||||
|
TRADUORA_W_CLIENT:
|
||||||
|
from_secret: TRADUORA_W_CLIENT
|
||||||
|
TRADUORA_W_SECRET:
|
||||||
|
from_secret: TRADUORA_W_SECRET
|
||||||
|
GITHUB_API:
|
||||||
|
from_secret: GITHUB_API
|
||||||
|
commands:
|
||||||
|
- apt update && apt install -y git python3-requests hub
|
||||||
|
- SOURCE_DIR=$(pwd) ./scripts/update_translation_to_server.sh
|
||||||
|
|
||||||
- name: translate-html
|
- name: translate-html
|
||||||
image: python:3
|
image: python:3
|
||||||
commands:
|
commands:
|
||||||
@ -126,7 +143,7 @@ steps:
|
|||||||
from_secret: GITHUB_API
|
from_secret: GITHUB_API
|
||||||
commands:
|
commands:
|
||||||
- apt update && apt install -y git python3-requests hub
|
- apt update && apt install -y git python3-requests hub
|
||||||
- SOURCE_DIR=$(pwd) ./scripts/commit_new_translation.sh
|
- PUSH=1 SOURCE_DIR=$(pwd) ./scripts/commit_new_translation.sh
|
||||||
|
|
||||||
node:
|
node:
|
||||||
location: external
|
location: external
|
||||||
|
@ -2,20 +2,32 @@
|
|||||||
|
|
||||||
git remote set-url origin https://azlux:$GITHUB_API@github.com/azlux/botamusique/
|
git remote set-url origin https://azlux:$GITHUB_API@github.com/azlux/botamusique/
|
||||||
|
|
||||||
|
echo "=> Fetching for bot-traduora branch..."
|
||||||
if git fetch origin bot-traduora; then
|
if git fetch origin bot-traduora; then
|
||||||
|
echo "==> bot-traduora branch exists"
|
||||||
git branch bot-traduora FETCH_HEAD
|
git branch bot-traduora FETCH_HEAD
|
||||||
CREATE_PR=false
|
CREATE_PR=false
|
||||||
else
|
else
|
||||||
|
echo "==> bot-traduora branch doesn't exist, create one"
|
||||||
git branch bot-traduora
|
git branch bot-traduora
|
||||||
CREATE_PR=true
|
CREATE_PR=true
|
||||||
fi
|
fi
|
||||||
git checkout bot-traduora
|
git checkout bot-traduora
|
||||||
|
|
||||||
|
echo "=> Fetching updates from the server..."
|
||||||
|
|
||||||
$SOURCE_DIR/scripts/sync_translation.py --lang-dir $SOURCE_DIR/lang/ --client $TRADUORA_R_CLIENT --secret $TRADUORA_R_SECRET --fetch
|
$SOURCE_DIR/scripts/sync_translation.py --lang-dir $SOURCE_DIR/lang/ --client $TRADUORA_R_CLIENT --secret $TRADUORA_R_SECRET --fetch
|
||||||
git add lang/*
|
git add lang/*
|
||||||
git status
|
git status
|
||||||
|
|
||||||
if GIT_COMMITTER_NAME='Traduora Bot' GIT_COMMITTER_EMAIL='noreply@azlux.fr' git commit -m 'Bot: Update translation' --author "Traduora Bot <noreply@azlux.fr>"; then
|
if $PUSH; then
|
||||||
|
echo "=> Pushing updates to bot-traduora branch..."
|
||||||
|
if GIT_COMMITTER_NAME='Traduora Bot' GIT_COMMITTER_EMAIL='noreply@azlux.fr' git commit -m 'Bot: Update translation' --author "Traduora Bot <noreply@azlux.fr>"; then
|
||||||
git push origin bot-traduora
|
git push origin bot-traduora
|
||||||
sleep 2
|
sleep 2
|
||||||
if $CREATE_PR; then GITHUB_USER="azlux" GITHUB_TOKEN="$GITHUB_API" hub pull-request -m "Bot: TRADUORA Update"; fi
|
if $CREATE_PR; then GITHUB_USER="azlux" GITHUB_TOKEN="$GITHUB_API" hub pull-request -m "Bot: TRADUORA Update"; fi
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
echo "==> There's nothing to push."
|
||||||
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
48
scripts/update_translation_to_server.sh
Executable file
48
scripts/update_translation_to_server.sh
Executable file
@ -0,0 +1,48 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
PYTHON=$SOURCE_DIR/venv/bin/python
|
||||||
|
|
||||||
|
git remote set-url origin https://azlux:$GITHUB_API@github.com/azlux/botamusique/
|
||||||
|
git pull origin master
|
||||||
|
|
||||||
|
echo "=> Checking if translations in this commit differ from the server..."
|
||||||
|
|
||||||
|
git branch testing-translation master
|
||||||
|
git checkout testing-translation
|
||||||
|
$PYTHON $SOURCE_DIR/scripts/sync_translation.py --lang-dir $SOURCE_DIR/lang/ --client $TRADUORA_R_CLIENT --secret $TRADUORA_R_SECRET --fetch
|
||||||
|
|
||||||
|
if [ -z "$(git diff)" ]; then
|
||||||
|
echo "==> No difference found."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "==> Modifications found."
|
||||||
|
echo "=> Check if the modifications are based on the translations on the server..."
|
||||||
|
|
||||||
|
n=1
|
||||||
|
COMMON_FOUND=false
|
||||||
|
|
||||||
|
while [ $n -le 10 ]; do
|
||||||
|
echo "==> Comparing server's translations with master~$n ($(git show --oneline --quiet master~$n))"
|
||||||
|
CHANGED_LANG_FILE=$(git diff --name-only master~$n | grep "lang/" || true)
|
||||||
|
if [ -z "$CHANGED_LANG_FILE" ]; then
|
||||||
|
COMMON_FOUND=true
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
let n++
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ ! $COMMON_FOUND ]; then
|
||||||
|
echo "==> CONFLICTS: Previous commits doesn't share the same translations with the server."
|
||||||
|
echo " There are unmerged translation updates on the server."
|
||||||
|
echo " Please manually update these changes or wait for the pull request"
|
||||||
|
echo " created by the translation bot get merged."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "==> master~$n ($(git show --oneline --quiet master~$n)) shares the same translations with the server."
|
||||||
|
|
||||||
|
echo "=> Preparing to push local translation updates to the server..."
|
||||||
|
$PYTHON $SOURCE_DIR/scripts/sync_translation.py --lang-dir $SOURCE_DIR/lang/ --client $TRADUORA_W_CLIENT --secret $TRADUORA_W_SECRET --push
|
||||||
|
exit 0
|
Loading…
x
Reference in New Issue
Block a user