diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..86df120f90b28e802c0e5178186e762178f1f772
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,17 @@
+image: python:3.8-alpine
+
+stages:
+  - upload
+
+upload:
+  stage: upload
+  variables:
+    PYPI_USERNAME: gitlab-ci-token
+    PYPI_PASSWORD: $CI_JOB_TOKEN
+    PYPI_REPO: $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/pypi
+  script:
+    - apk add bash make gcc g++ linux-headers musl-dev
+    - make release
+  only:
+    - master
+    - tags
diff --git a/Makefile b/Makefile
index ad7f7ad39ecb67a27ea12f56943558f00362c200..9f769e5cd0df670c5557f181ae0e8b0c97d9ebfb 100644
--- a/Makefile
+++ b/Makefile
@@ -58,9 +58,7 @@ dist: clean generate
 	ls -l dist
 
 release: clean generate
-	devpi use $(PYPI_REPO)
-	devpi login root --password $(PYPI_PASSWORD)
-	devpi upload --no-vcs
+	TWINE_PASSWORD=$(PYPI_PASSWORD) TWINE_USERNAME=$(PYPI_USERNAME) python -m twine upload --repository-url $(PYPI_REPO) dist/*
 
 install: clean generate install-requirements
 	python setup.py install
diff --git a/build-requirements.txt b/build-requirements.txt
index feb633d56bfc098eef6d1422a1aff9eef69aba71..398026531b19a4bbc5924dee96f64dc66c6ca062 100644
--- a/build-requirements.txt
+++ b/build-requirements.txt
@@ -1,19 +1,21 @@
 appdirs==1.4.4
 backports.entry-points-selectable==1.1.1
+bleach==4.1.0
 build==0.7.0
 certifi==2021.10.8
 chardet==4.0.0
 charset-normalizer==2.0.12
 check-manifest==0.47
-devpi-client==5.2.3
-devpi-common==3.6.0
+colorama==0.4.4
 distlib==0.3.4
+docutils==0.18.1
 filelock==3.6.0
 flake8==4.0.1
 grpcio==1.43.0
 grpcio-tools==1.43.0
 idna==3.3
 importlib-metadata==4.11.2
+keyring==23.5.0
 lazy==1.4
 mccabe==0.6.1
 packaging==21.3
@@ -25,13 +27,20 @@ protobuf==3.19.4
 py==1.11.0
 pycodestyle==2.8.0
 pyflakes==2.4.0
+Pygments==2.11.2
 pyparsing==3.0.7
+readme-renderer==34.0
 requests==2.27.1
+requests-toolbelt==0.9.1
+rfc3986==2.0.0
 six==1.16.0
 toml==0.10.2
 tomli==2.0.1
 tox==3.24.5
+tqdm==4.63.0
+twine==3.8.0
 typing_extensions==4.1.1
 urllib3==1.26.8
 virtualenv==20.13.2
+webencodings==0.5.1
 zipp==3.7.0