diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index dd9925840d5f942ea53c1778524b214f12619820..64b861512165ea7692621a9f5745204167d51928 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,6 +1,6 @@
 # Official language image. Look for the different tagged releases at:
 # https://hub.docker.com/r/library/python/tags/
-image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/python:3.7
+image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/python:latest
 
 # Change pip's cache directory to be inside the project directory since we can
 # only cache local items.
@@ -26,13 +26,50 @@ before_script:
 
 stages:          # List of stages for jobs, and their order of execution
   - test
+  - check-warnings
   - build
   - deploy
 
 unit-test-job:  
   stage: test
   script:
-    - make test
+    - make test 2>&1 | tee errors.log
+  artifacts:
+    when: always
+    paths:
+      - errors.log
+    reports:
+      junit: nose2-junit.xml
+
+unit-test-3.7-job:
+  image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/python:3.7
+  stage: test
+  script:
+    - make test 2>&1 | tee errors-3.7.log
+  artifacts:
+    when: always
+    paths:
+      - errors-3.7.log
+
+unit-test-3.8-job:
+  image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/python:3.8
+  stage: test
+  script:
+    - make test 2>&1 | tee errors-3.8.log
+  artifacts:
+    when: always
+    paths:
+      - errors-3.8.log
+
+unit-test-3.9-job:
+  image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/python:3.9
+  stage: test
+  script:
+    - make test 2>&1 | tee errors-3.9.log
+  artifacts:
+    when: always
+    paths:
+      - errors-3.9.log
 
 pylint-test-job:
   stage: test
@@ -44,6 +81,34 @@ pyflakes-test-job:
   script:
     - make pyflakes
 
+check-deprecation-warnings:
+  before_script: []
+  stage: check-warnings
+  script:
+    - "if [[ $(grep DeprecationWarning errors.log) ]]; then cat errors.log; exit 1; fi"
+  allow_failure: true
+
+check-deprecation-warnings-3.7:
+  before_script: []
+  stage: check-warnings
+  script:
+    - "if [[ $(grep DeprecationWarning errors-3.7.log) ]]; then cat errors-3.7.log; exit 1; fi"
+  allow_failure: true
+
+check-deprecation-warnings-3.8:
+  before_script: []
+  stage: check-warnings
+  script:
+    - "if [[ $(grep DeprecationWarning errors-3.8.log) ]]; then cat errors-3.8.log; exit 1; fi"
+  allow_failure: true
+
+check-deprecation-warnings-3.9:
+  before_script: []
+  stage: check-warnings
+  script:
+    - "if [[ $(grep DeprecationWarning errors-3.9.log) ]]; then cat errors-3.9.log; exit 1; fi"
+  allow_failure: true
+
 build-job:
   stage: build
   script:
@@ -105,4 +170,4 @@ pages:
       - public
   only:
     - master
-    - devel
\ No newline at end of file
+    - devel
diff --git a/Makefile b/Makefile
index 9678d4e52355c503407d9767ebc6b10af558e59e..bc447386b6df585e7828dc204b84b0100794df72 100644
--- a/Makefile
+++ b/Makefile
@@ -332,7 +332,7 @@ pylint: FORCE
 
 test: FORCE
 	@echo "\n$(GREEN)*** Checking code with nosetests ***$(NC)\n"
-	@$(NOSETESTS)
+	@$(PYTHON) -W always::DeprecationWarning -m nose2 --junit-xml
 
 
 #-------------------------------------------------------------------------------
diff --git a/README.rst b/README.rst
index 4e048dab000ef4b32dba967cd0bee118af15b1d5..40cb45fe7a7873b4bccdeb432401a5b06d74463c 100644
--- a/README.rst
+++ b/README.rst
@@ -57,3 +57,42 @@ Copyright
 | This project was initially written for personal use of the original author.
 | Later it was developed much further and used for project of author`s employer.
 |
+
+
+
+Changelog
+--------------------------------------------------------------------------------
+
+
+Version 0.62
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Released 2022-06-22
+
+-   Added a config file for GitLab CI/CD.
+-   Updated the repository information.
+-   Updated packages versions.
+
+
+Version 0.61
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Released 2022-01-20
+
+-   Fixed formatting error introduced in 0.60
+
+
+Version 0.60
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Released 2022-01-20
+
+-   Masked PID in PID file name and runlog file name 
+
+
+Version 0.59
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Released 2021-01-11
+
+-   Made runlog file names more unique by adding PID 
diff --git a/nose2.cfg b/nose2.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..a7850f000fd8fb9a4b96d43d4bb81e8122cdc388
--- /dev/null
+++ b/nose2.cfg
@@ -0,0 +1,2 @@
+[unittest]
+plugins = nose2.plugins.junitxml
diff --git a/pyzenkit/__init__.py b/pyzenkit/__init__.py
index 650f65a72ddcf103f27880d15ebeafe4f7dfa1c7..33bd7371a1adceb7361cad2657dafc4b0eff1222 100644
--- a/pyzenkit/__init__.py
+++ b/pyzenkit/__init__.py
@@ -19,5 +19,5 @@ Python 3.
 """
 
 __author__  = "Honza Mach <honza.mach.ml@gmail.com>"
-__version__ = "0.61"
+__version__ = "0.62"
 
diff --git a/requirements-dev.pip b/requirements-dev.pip
index b349fd4575134c5c5e46970c8a73570760746b5b..a037f52dcf8d41a4716746f3074430be380e2757 100644
--- a/requirements-dev.pip
+++ b/requirements-dev.pip
@@ -1,11 +1,11 @@
 setuptools
 wheel
 twine
-nose==1.3.7
-pyflakes==2.1.0
-pylint==2.2.2
+nose2
+pyflakes
+pylint
 docutils<0.18
-jinja2==2.10.3
-markupsafe==2.0.1
-sphinx==1.8.4
-sphinx-rtd-theme==0.4.2
+jinja2
+markupsafe
+sphinx
+sphinx-rtd-theme
diff --git a/setup.py b/setup.py
index f25ea985f92182701b2134e62e7bc69eca2cfc7a..bb43c03e30a5fa3b9fde2761ac01ec905660d490 100644
--- a/setup.py
+++ b/setup.py
@@ -50,15 +50,16 @@ setup(
         'Environment :: Console',
     ],
     keywords = 'library console script daemon',
-    url = 'https://github.com/honzamach/pyzenkit',
+    url = 'https://pypi.org/project/pyzenkit/',
+    project_urls={
+        'Documentation': 'https://709.gitlab-pages.cesnet.cz/mentat/pyzenkit/master/html/manual.html',
+        'Source': 'https://gitlab.cesnet.cz/709/mentat/pyzenkit',
+        'Tracker': 'https://gitlab.cesnet.cz/709/mentat/pyzenkit/-/issues'
+    },
     author = 'Honza Mach',
     author_email = 'honza.mach.ml@gmail.com',
     license = 'MIT',
     packages = find_packages(),
-    test_suite = 'nose.collector',
-    tests_require = [
-        'nose'
-    ],
     install_requires=[
         'python-dotenv',
         'jsonschema',