Some steps in the jpylyzer release process use Docker. In order to run Docker as a non-root user, it is helpful to create a Unix docker group. Steps (see also the more detailed discussion here):
- Create the docker group:
sudo groupadd docker
- Add the current user to the group:
sudo usermod -aG docker $USER
- Then log out and then log back in for the changes to take effect, or run the following command:
newgrp docker
- Verify that everything works by running the following test:
docker run hello-world
In order to run the automated tests you need to install a couple of Python modules:
-
pytest:
pip install pytest
-
lxml:
pip install lxml
TODO: the TEST_DEPS variable in setup.py also lists pre-commit, pylint and pytest-coverage as test dependencies, but these are not used in any of the tests. It's not entirely clear to me how TEST_DEPS works in the context of testing (since you typically do this before installing any packages).
You also need the jpylyzer-test-files corpus. The test script expects that the root directory of this Git repo is a sibling directory to the jpylyzer Git repo, e.g.:
|-- jpylyzer/
home/ --|
|--jpylyzer-test-files/
Follow these steps:
- In the terminal, go to the parent directory of the "jpylyzer" source directory. E.g., if the jpylyzer
source directory is located in your home directory, first go to your home directory:
cd ~
- Then clone the repo:
git clone https://github.com/openpreserve/jpylyzer-test-files.git
If you already have an (older) local copy of the test files, make sure it is up to date:
- Go to the test files directory:
cd ~/jpylyzer-test-files
- Update from the remote repo:
git pull
-
Make necessary changes to the code.
-
Run the tests by issuing below command from the root of the jpylyzer repo:
pytest
-
Update version number in jpylyzer.py.
-
In case of changes to command-line interface, update jpylyzer.pod file in the Debian folder.
-
Create new entry in changelog using:
dch -i
then manually update the version number, and create list of changes. Also make sure the e-mail address is a valid e-mail address.
(Alternatively just edit debian/changelog in a text editor without using dch)
-
Update User Manual if necessary and export the Markdown file to HTML. See instructions here.
-
Commit all changes and push to the master branch.
-
Add tag:
git tag -a 1.x.x -m "release that fixes everything"
-
Push tags:
git push --tags
-
Create and upload PyPi packages by running:
./docker-package-pypi.sh
You'll need a
.pypirc
in your home directory with suitable credentials to upload to the package via twine. -
Build Windows binaries by running:
./docker-package-win.sh
-
Build Debian packages for Linux by running:
./docker-package.sh debian:bullseye
-
Go to Releases and click on the Draft a new release button.
-
Click the Choose a tag button, and select the latest tag.
-
Enter a release title, and a release decription.
-
Upload Linux/Windows packages to the release by dragging them to the Attach Binaries field at the bottom.
-
Website: update currentStableVersion in _config.yml (this updates the links to all packages to the correct version).
-
Website: write a short release note in the _posts directory.
-
Test website by running:
jekyll serve
or checkout the following to use a Docker container that reproduces authentic GitHub pages rendering.
-
Check website in browser at the following address:
-
Commit changes to website and push to branch gh-pages.
-
Spread the word!