From 5b23e35ad4ccbaa9be1f1b616872c55913a882d3 Mon Sep 17 00:00:00 2001
From: Brent Huisman <brenthuisman@users.noreply.github.com>
Date: Mon, 18 Jul 2022 09:22:56 +0200
Subject: [PATCH] Weekly CI Python wheel build pushes to Test.PyPI.org (#1921)
* - Weekly CI Python wheel build pushes to Test.PyPI.org
- Easy availability at https://test.pypi.org/project/arbor/
- Small change in documentation around VERSION
- Delete superfluous setup.py file.
---
.github/workflows/ciwheel.yml | 41 +++++++------
doc/contrib/release.rst | 112 ++++++++++++++++------------------
doc/cpp/index.rst | 1 -
doc/dev/index.rst | 1 +
doc/{cpp => dev}/version.rst | 2 +-
python/setup.py | 38 ------------
6 files changed, 78 insertions(+), 117 deletions(-)
rename doc/{cpp => dev}/version.rst (99%)
delete mode 100644 python/setup.py
diff --git a/.github/workflows/ciwheel.yml b/.github/workflows/ciwheel.yml
index fc202758..51a3408b 100644
--- a/.github/workflows/ciwheel.yml
+++ b/.github/workflows/ciwheel.yml
@@ -24,11 +24,14 @@ jobs:
with:
fetch-depth: 0
submodules: recursive
+ - name: Create unique VERSION
+ if: endsWith(github.ref,'ciwheel') || endsWith(github.ref,'rc') # https://docs.github.com/en/actions/learn-github-actions/expressions
+ run: python3 -c 'import time;f=open("VERSION","r+");content = f.readlines();f.seek(0);f.write(content[0].strip()+time.strftime("%Y%m%d%H%I%S"))'
- name: Install cibuildwheel
run: python3 -m pip install cibuildwheel
- name: Build wheels
run: python3 -m cibuildwheel --output-dir dist
- - uses: actions/upload-artifact@v2
+ - uses: actions/upload-artifact@v3
with:
name: dist
path: dist/*.whl
@@ -46,6 +49,9 @@ jobs:
with:
fetch-depth: 0
submodules: recursive
+ - name: Create unique VERSION
+ if: endsWith(github.ref,'ciwheel') || endsWith(github.ref,'rc') # https://docs.github.com/en/actions/learn-github-actions/expressions
+ run: python3 -c 'import time;f=open("VERSION","r+");content = f.readlines();f.seek(0);f.write(content[0].strip()+time.strftime("%Y%m%d%H%I%S"))'
- name: Make sdist
run: python3 -m build -s
- name: Install sdist
@@ -54,24 +60,23 @@ jobs:
run: python3 -m unittest discover -v -s python
- name: Run Python examples
run: scripts/run_python_examples.sh
- - uses: actions/upload-artifact@v2
+ - uses: actions/upload-artifact@v3
with:
name: dist
path: dist/*.tar.gz
-# TODO
- # upload_test_pypi:
- # name: upload to test pypi
- # runs-on: ubuntu-latest
- # needs: [build_binary_wheels, build_sdist]
- # steps:
- # - uses: actions/download-artifact@v2
- # with:
- # name: dist
- # - name: Publish distribution 📦 to Test PyPI
- # run: |
- # pip install twine
- # twine upload -r testpypi dist/*
- # env:
- # TWINE_USERNAME: __token__
- # TWINE_PASSWORD: ${{ secrets.ciwheeltest }}
+ upload_test_pypi:
+ name: upload to test pypi
+ runs-on: ubuntu-latest
+ needs: [build_binary_wheels, build_sdist]
+ steps:
+ - uses: actions/download-artifact@v3
+ with:
+ name: dist
+ - name: Publish distribution 📦 to Test PyPI
+ run: |
+ pip install twine
+ twine upload -r testpypi ./*
+ env:
+ TWINE_USERNAME: __token__
+ TWINE_PASSWORD: ${{ secrets.TESTPYPI_SECRET }}
diff --git a/doc/contrib/release.rst b/doc/contrib/release.rst
index f961fcd2..4962193e 100644
--- a/doc/contrib/release.rst
+++ b/doc/contrib/release.rst
@@ -38,98 +38,92 @@ Pre-release
Update tags/versions and test
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-0. Check README.md, ATTRIBUTIONS.md, CONTRIBUTING.md, RELEASE_NOTES.md
-1. Create new temp-branch ending in ``-rc``. E.g. ``v0.6-rc``
-2. Bump the ``VERSION`` file:
- https://github.com/arbor-sim/arbor/blob/master/VERSION
- Don't append ``-rc`` here, but if you do, remove it before releasing.
-3. Run all tests.
- - ``ciwheel.yml`` triggers when you push a branch called ``v*rc``, ON YOUR OWN REPO (so check ``github.com/$yourname/arbor/actions``). Make sure the tests pass.
- - This should catch many problems. For a manual check:
+#. Check if some files are up to date
+
+ - README.md, ATTRIBUTIONS.md, CONTRIBUTING.md, RELEASE_NOTES.md
- Verify MANIFEST.in (required for PyPI sdist)
- - Check Python/pip/PyPi metadata and scripts, e.g. ``setup.py``
- Double check that all examples/tutorials/etc are covered by CI
+ - Check Python/pip/PyPi metadata and scripts, e.g. ``setup.py``, ``pyproject.toml``
+
+#. Create new temp-branch ending in ``-rc``. E.g. ``v0.6-rc``
+#. Bump the ``VERSION`` file:
+
+ - See also :ref:`dev-version`
+ - Append ``-rc``. (Make sure there's no ``-dev``)
+
+#. Run all tests.
-Test the RC
-~~~~~~~~~~~
+ - ``ciwheel.yml`` triggers when you push a branch called ``v*rc``, ON YOUR OWN REPO (so check ``github.com/$yourname/arbor/actions``). Make sure the tests pass.
+ - ``ciwheel.yml`` pushes automatically to `Test.PyPI.org <https://test.pypi.org/project/arbor/>`_. Test (consider asking other OS-users):
-4. Collect artifact from the above GA run.
- In case you want to manually want to trigger ``ciwheel.yml`` GA, overwrite the ``ciwheel`` branch with the commit of your choosing and force push to Github.
-5. ``twine upload -r testpypi dist/*``
-6. Ask users to test the above, e.g.:
+ .. code-block:: bash
-.. code-block:: bash
+ python -m venv env && source env/bin/activate
+ pip install numpy
+ pip install -i https://test.pypi.org/simple/ arbor #should select the latest build, but doublecheck
+ python -c 'import arbor; print(arbor.__config__)'
- python -m venv env && source env/bin/activate
- pip install numpy
- pip install -i https://test.pypi.org/simple/ arbor==0.6-rc
- python -c 'import arbor; print(arbor.__config__)'
+ - Use build flags to test the source package: :ref:`in_python_adv`
+ - In case you want to manually want to trigger ``ciwheel.yml`` GA, overwrite the ``ciwheel`` branch with the commit of your choosing and force push to Github.
Release
-------
-0. Make sure ``ciwheel.yml`` passes tests, produced working wheels, and nobody reported problems testing the RC.
- Make sure ``VERSION`` does not end with ``-rc`` or ``-dev``
+#. Make sure ``ciwheel.yml`` passed all tests, produced working wheels, were installable from `Test.PyPI.org <https://test.pypi.org/project/arbor/>`_ and that no problems were reported.
+
+#. Change ``VERSION``. Make sure does not end with ``-rc`` or ``-dev``.
-1. Create tarball with
+#. Create tarball with
``scripts/create_tarball ~/loc/of/arbor tagname outputfile``
- - eg ``scripts/create_tarball /full/path/to/arbor v0.5.1 ~/arbor-v0.5.1-full.tar.gz``
+ - eg ``scripts/create_tarball /full/path/to/arbor v0.5.1 ~/arbor-v0.5.1-full.tar.gz``
+
+#. Update ``spack/package.py``. The checksum of the targz is the sha256sum.
-2. Tag and release: https://github.com/arbor-sim/arbor/releases
+#. Start a new release on Zenodo, this allocated a DOI, but you don't have to finish it right away. Add new Zenodo badge/link to docs/README.
- - on cmdline: git tag -a TAGNAME
- - git push upstream TAGNAME
- - Go to `GH tags`_ and click “…” and “Create release”
- - Go through merged PRs to come up with a changelog
- Or categorize/edit Github's autogenerated release notes.
- - add tarball to release, created in previous step.
+#. Tag
-3. [`AUTOMATED`_] push to git@gitlab.ebrains.eu:arbor-sim/arbor.git
+ - commit the above changes.
+ - on cmdline: git tag -a TAGNAME
+ - git push upstream TAGNAME
-4. Download output of wheel action associated to this release commit and extract (verify the wheels and
+#. [`AUTOMATED`_] push to git@gitlab.ebrains.eu:arbor-sim/arbor.git
+
+#. Download output of wheel action associated to this release commit and extract (verify the wheels and
source targz is in /dist)
- Of course, the above action must have passed the tests successfully.
+
+#. Create Github Release: https://github.com/arbor-sim/arbor/releases
-5. Upload to TEST pypi & verify
-
-.. code-block:: bash
-
- twine upload -r arborpypi dist/*
- python -m venv env && source env/bin/activate
- pip install numpy
- pip install -i https://test.pypi.org/simple/ arbor==0.6
- python -c 'import arbor; print(arbor.__config__)'
-
-6. Upload to pypi & verify
-
-.. code-block:: bash
+ - Go to `GH tags`_ and click “…” and “Create release”
+ - Categorize/edit Github's autogenerated release notes (alternatively go through merged PRs to come up with a changelog).
+ - add tarball to release, created in previous step.
- twine upload -r arborpypi dist/*
+#. Upload to pypi & verify
- python -m venv env && source env/bin/activate
- pip install arbor
- python -c 'import arbor; print(arbor.__config__)'
+ .. code-block:: bash
-7. Update spack package / Ebrains Lab
+ twine upload -r arborpypi dist/*
- - first, update ``spack/package.py``. The checksum of the targz is the sha256sum.
- - Then, use the file to `make PR here <https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/arbor/package.py>`_
- - Make an MR `here <https://gitlab.ebrains.eu/technical-coordination/project-internal/devops/platform/ebrains-spack-builds/>`_
+ python -m venv env && source env/bin/activate
+ pip install arbor
+ python -c 'import arbor; print(arbor.__config__)'
-8. In the same PR with the update to `spack/package.py`, bump `VERSION` file.
+#. Update spack package / Ebrains Lab / Opensourcebrain
- - e.g. to 0.6.1-dev
+ - Spack upstream: `PR here <https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/arbor/package.py>`_
+ - Ebrains Lab: `MR here <https://gitlab.ebrains.eu/technical-coordination/project-internal/devops/platform/ebrains-spack-builds/>`_
+ - OSB: update `dockerfile <https://github.com/OpenSourceBrain/OSBv2/blob/master/applications/jupyterlab/Dockerfile>`_ if needed.
-9. In the same PR with the update to `spack/package.py`, add new Zenodo badge/link.
+ - Make sure that `Notebooks <https://www.v2.opensourcebrain.org/repositories/38>`_ work on the version that their image is built with.
- - Start a new release on Zenodo, this allocated a DOI, but you don't have to finish it right away.
- OTOH, you can already make and upload the tarball in step 1.
Post Release
------------
+#. Make a new PR setting ``VERSION`` to the next with a trailing ``-dev``. E.g. if you just release ``3.14``, change ``VERSION`` to ``3.15-dev``
#. Update and submit Zenodo release if necessary.
#. Announce on our website
#. Announce on HBP newsletter newsletter@humanbrainproject.eu, HBP Twitter/socials evan.hancock@ebrains.eu
diff --git a/doc/cpp/index.rst b/doc/cpp/index.rst
index f4f437ec..bd97b673 100644
--- a/doc/cpp/index.rst
+++ b/doc/cpp/index.rst
@@ -23,4 +23,3 @@ A :cpp:type:`arb::recipe` describes a model, and a :cpp:type:`arb::simulation` i
simulation
profiler
cable_cell
- version
diff --git a/doc/dev/index.rst b/doc/dev/index.rst
index 674559d5..b20ca5a6 100644
--- a/doc/dev/index.rst
+++ b/doc/dev/index.rst
@@ -23,4 +23,5 @@ Here we document internal components of Arbor. These pages can be useful if you'
extending_catalogues
mechanism_abi
util
+ version
.. numerics
diff --git a/doc/cpp/version.rst b/doc/dev/version.rst
similarity index 99%
rename from doc/cpp/version.rst
rename to doc/dev/version.rst
index 05d56e09..f32158d9 100644
--- a/doc/cpp/version.rst
+++ b/doc/dev/version.rst
@@ -1,4 +1,4 @@
-.. _cppversion:
+.. _dev-version:
Version and build information
=============================
diff --git a/python/setup.py b/python/setup.py
deleted file mode 100644
index 915f3ca1..00000000
--- a/python/setup.py
+++ /dev/null
@@ -1,38 +0,0 @@
-import setuptools
-import os
-
-here = os.path.abspath(os.path.dirname(__file__))
-with open(os.path.join(here, "arbor/VERSION")) as version_file:
- version_ = version_file.read().strip()
-
-setuptools.setup(
- name="arbor",
- packages=["arbor"],
- version=version_,
- author="CSCS and FZJ",
- url="https://github.com/arbor-sim/arbor",
- description="High performance simulation of networks of multicompartment neurons.",
- long_description="",
- classifiers=[
- "Development Status :: 4 - Beta", # Upgrade to "5 - Production/Stable" on release.
- "Intended Audience :: Science/Research",
- "Topic :: Scientific/Engineering :: Build Tools",
- "License :: OSI Approved :: BSD License"
- "Programming Language :: Python :: 3.6",
- "Programming Language :: Python :: 3.7",
- "Programming Language :: Python :: 3.8",
- "Programming Language :: Python :: 3.9",
- ],
- project_urls={
- "Source": "https://github.com/arbor-sim/arbor",
- "Documentation": "https://docs.arbor-sim.org",
- "Bug Reports": "https://github.com/arbor-sim/arbor/issues",
- },
- package_data={
- "arbor": ["VERSION", "_arbor.*.so"],
- },
- python_requires=">=3.6",
- install_requires=[],
- setup_requires=[],
- zip_safe=False,
-)
--
GitLab