forked from platypush/platypush
Moved CI automation from Platypush hooks to Gitlab CI
This commit is contained in:
parent
a1cd25fe5a
commit
10e11d66dc
3 changed files with 155 additions and 0 deletions
62
.gitlab-ci.yml
Normal file
62
.gitlab-ci.yml
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
sync-to-github:
|
||||||
|
stage: build
|
||||||
|
script:
|
||||||
|
- echo "Synchronizing repo state to Github"
|
||||||
|
- export REPO_DIR="$(mktemp -d /tmp/platypush-XXXXX)"
|
||||||
|
- git clone git@git.platypush.tech:platypush/platypush.git "$REPO_DIR"
|
||||||
|
- cd "$REPO_DIR"
|
||||||
|
- git remote add github git@github.com:/BlackLight/platypush.git
|
||||||
|
- git checkout $CI_COMMIT_BRANCH
|
||||||
|
- git pull
|
||||||
|
- git push --mirror -v github
|
||||||
|
|
||||||
|
run-tests:
|
||||||
|
stage: test
|
||||||
|
script:
|
||||||
|
- ./.gitlab/run_ci_tests.sh
|
||||||
|
|
||||||
|
rebuild-docs:
|
||||||
|
stage: deploy
|
||||||
|
only:
|
||||||
|
- master
|
||||||
|
script:
|
||||||
|
- ./.gitlab/rebuild_docs.sh
|
||||||
|
|
||||||
|
update-aur-packages:
|
||||||
|
stage: deploy
|
||||||
|
only:
|
||||||
|
- master
|
||||||
|
script:
|
||||||
|
- echo "Updating AUR packages"
|
||||||
|
- export REPO_DIR="$(mktemp -d /tmp/platypush-distutils-XXXXX)"
|
||||||
|
- git clone git@fabiomanganiello.com:/home/git/platypush-distutils.git "$REPO_DIR"
|
||||||
|
- cd "$REPO_DIR"
|
||||||
|
- git submodule init
|
||||||
|
- git submodule update
|
||||||
|
- cd distro/arch/git
|
||||||
|
- git checkout master
|
||||||
|
- git pull --rebase
|
||||||
|
- cd ../../../
|
||||||
|
- cd distro/arch/stable
|
||||||
|
- git checkout master
|
||||||
|
- git pull --rebase
|
||||||
|
- cd ../../../
|
||||||
|
- ./update.sh
|
||||||
|
- cd distro/arch/git
|
||||||
|
- changes="$(git status --porcelain --untracked-files=no)"
|
||||||
|
- "[[ -n \"$changes\" ]] && git commit -a -m '[Automatic] Package updated' && git push || echo 'No changes'"
|
||||||
|
- cd ../../../
|
||||||
|
- cd distro/arch/stable
|
||||||
|
- changes="$(git status --porcelain --untracked-files=no)"
|
||||||
|
- "[[ -n \"$changes\" ]] && git commit -a -m '[Automatic] Package updated' && git push || echo 'No changes'"
|
||||||
|
|
||||||
|
upload-pip-package:
|
||||||
|
stage: deploy
|
||||||
|
only:
|
||||||
|
- tags
|
||||||
|
script:
|
||||||
|
- rm -rf build dist *.egg-info
|
||||||
|
- export VERSION=$(grep -e '^\s*__version__\s*=' platypush/__init__.py | sed -r -e 's/^\s*__version__\s*=\s*.(.+?).\s*$/\1/')
|
||||||
|
- source ~/.credentials/pypi.env
|
||||||
|
- python setup.py sdist bdist_wheel
|
||||||
|
- twine upload ./dist/platypush-${VERSION}.tar.gz
|
33
.gitlab/rebuild_docs.sh
Executable file
33
.gitlab/rebuild_docs.sh
Executable file
|
@ -0,0 +1,33 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
LOGFILE="./docs.log"
|
||||||
|
STATUS_IMG_PATH="./docs-status.svg"
|
||||||
|
|
||||||
|
build_docs() {
|
||||||
|
cd ./docs || exit 1
|
||||||
|
make html 2>&1 | tee "../$LOGFILE"
|
||||||
|
ret=$?
|
||||||
|
cd .. || exit 1
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
########
|
||||||
|
# MAIN #
|
||||||
|
########
|
||||||
|
|
||||||
|
build_docs
|
||||||
|
ret=$?
|
||||||
|
|
||||||
|
log_base_path="$(date +/opt/tests/platypush/logs/docs/%Y-%m-%dT%H:%M:%S.%m)"
|
||||||
|
if [[ $ret == 0 ]]; then
|
||||||
|
wget -O "$STATUS_IMG_PATH" https://ci.platypush.tech/docs/passed.svg
|
||||||
|
cp "$LOGFILE" "${log_base_path}_PASSED.log"
|
||||||
|
else
|
||||||
|
wget -O "$STATUS_IMG_PATH" https://ci.platypush.tech/docs/failed.svg
|
||||||
|
cp "$LOGFILE" "${log_base_path}_FAILED.log"
|
||||||
|
fi
|
||||||
|
|
||||||
|
mv "$STATUS_IMG_PATH" /opt/tests/platypush/logs/docs/
|
||||||
|
mv "$LOGFILE" /opt/tests/platypush/logs/latest.log
|
||||||
|
cp -r docs/build/html /opt/repos/platypush/docs/build/
|
||||||
|
exit $ret
|
60
.gitlab/run_ci_tests.sh
Executable file
60
.gitlab/run_ci_tests.sh
Executable file
|
@ -0,0 +1,60 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
BASE_DIR="$(mktemp -d '/tmp/platypush-ci-tests-XXXXX')"
|
||||||
|
VENV_DIR="$BASE_DIR/venv"
|
||||||
|
TEST_LOG="./test.log"
|
||||||
|
STATUS_IMG_PATH="./status.svg"
|
||||||
|
|
||||||
|
cleanup() {
|
||||||
|
echo "Cleaning up environment"
|
||||||
|
rm -rf "$BASE_DIR"
|
||||||
|
}
|
||||||
|
|
||||||
|
prepare_venv() {
|
||||||
|
echo "Preparing virtual environment"
|
||||||
|
python -m venv "$VENV_DIR"
|
||||||
|
cd "$VENV_DIR" || exit 1
|
||||||
|
source ./bin/activate
|
||||||
|
cd - || exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
install_repo() {
|
||||||
|
echo "Installing latest version of the repository"
|
||||||
|
pip install '.[http]'
|
||||||
|
}
|
||||||
|
|
||||||
|
run_tests() {
|
||||||
|
echo "Running tests"
|
||||||
|
pytest 2>&1 | tee "$TEST_LOG"
|
||||||
|
deactivate
|
||||||
|
|
||||||
|
if grep -e '^FAILED ' "$TEST_LOG"; then
|
||||||
|
return 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 0 # PASSED
|
||||||
|
}
|
||||||
|
|
||||||
|
########
|
||||||
|
# MAIN #
|
||||||
|
########
|
||||||
|
|
||||||
|
cleanup
|
||||||
|
prepare_venv
|
||||||
|
install_repo
|
||||||
|
run_tests
|
||||||
|
ret=$?
|
||||||
|
cleanup
|
||||||
|
|
||||||
|
log_base_path="$(date +/opt/tests/platypush/logs/%Y-%m-%dT%H:%M:%S.%m)"
|
||||||
|
if [[ $ret == 0 ]]; then
|
||||||
|
wget -O "$STATUS_IMG_PATH" https://ci.platypush.tech/passed.svg
|
||||||
|
cp "$TEST_LOG" "${log_base_path}_PASSED.log"
|
||||||
|
else
|
||||||
|
wget -O "$STATUS_IMG_PATH" https://ci.platypush.tech/failed.svg
|
||||||
|
cp "$TEST_LOG" "${log_base_path}_FAILED.log"
|
||||||
|
fi
|
||||||
|
|
||||||
|
mv "$STATUS_IMG_PATH" /opt/tests/platypush/logs/status.svg
|
||||||
|
mv "$TEST_LOG" /opt/tests/platypush/logs/latest.log
|
||||||
|
exit $ret
|
Loading…
Reference in a new issue