Skip to content

Latest commit

 

History

History
147 lines (113 loc) · 4.28 KB

howto-prepare-release.md

File metadata and controls

147 lines (113 loc) · 4.28 KB

Steps in preparing a jpylyzer release

Before you start: Docker setup

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):

  1. Create the docker group:
    sudo groupadd docker
    
  2. Add the current user to the group:
    sudo usermod -aG docker $USER
    
  3. Then log out and then log back in for the changes to take effect, or run the following command:
    newgrp docker
    
  4. Verify that everything works by running the following test:
    docker run hello-world
    

Before you start: tests setup

In order to run the automated tests you need to install a couple of Python modules:

  1. pytest:

    pip install pytest
    
  2. 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:

  1. 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 ~
    
  2. 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:

  1. Go to the test files directory:
    cd ~/jpylyzer-test-files
    
  2. Update from the remote repo:
    git pull
    

Jpylyzer release steps

  1. Make necessary changes to the code.

  2. Run the tests by issuing below command from the root of the jpylyzer repo:

    pytest
    
  3. Update version number in jpylyzer.py.

  4. In case of changes to command-line interface, update jpylyzer.pod file in the Debian folder.

  5. 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)

  6. Update User Manual if necessary and export the Markdown file to HTML. See instructions here.

  7. Commit all changes and push to the master branch.

  8. Add tag:

    git tag -a 1.x.x -m "release that fixes everything"
    
  9. Push tags:

    git push --tags
    
  10. 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.

  11. Build Windows binaries by running:

    ./docker-package-win.sh
    
  12. Build Debian packages for Linux by running:

    ./docker-package.sh debian:bullseye
    
  13. Go to Releases and click on the Draft a new release button.

  14. Click the Choose a tag button, and select the latest tag.

  15. Enter a release title, and a release decription.

  16. Upload Linux/Windows packages to the release by dragging them to the Attach Binaries field at the bottom.

  17. Website: update currentStableVersion in _config.yml (this updates the links to all packages to the correct version).

  18. Website: write a short release note in the _posts directory.

  19. Test website by running:

    jekyll serve
    

    or checkout the following to use a Docker container that reproduces authentic GitHub pages rendering.

  20. Check website in browser at the following address:

    http://127.0.0.1:4000/

  21. Commit changes to website and push to branch gh-pages.

  22. Spread the word!