| VOLTHA Release: voltctl |
| ======================= |
| |
| Source |
| ------ |
| |
| .. list-table:: Release resources |
| :widths: 10, 60 |
| :header-rows: 1 |
| |
| * - Source |
| - Description |
| * - `VERSION file <https://gerrit.opencord.org/plugins/gitiles/voltctl/+/refs/heads/master/VERSION>`__ |
| - Contains the tool version to build and/or release. |
| * - `jjb/shell/github-release.sh <https://gerrit.opencord.org/plugins/gitiles/ci-management/+/refs/heads/master/jjb/shell/github-release.sh>`__ |
| - Shell script used to publish release candidates to github. |
| |
| Development |
| ----------- |
| |
| .. code-block:: shell-session |
| :caption: Build and test volctl locally |
| |
| % git clone ssh://gerrit.opencord.org:29418/voltctl.git |
| % cd voltctl |
| |
| % make help |
| % make lint # [optional] lint-sanity lint-style lint-mod sca |
| % make build |
| % make check # [optional] test |
| |
| % make release # compile release binaries |
| % make install |
| |
| |
| Release Builds howto: |
| --------------------- |
| |
| - Increment the `VERSION file <https://gerrit.opencord.org/plugins/gitiles/voltctl/+/refs/heads/master/VERSION>`__ to a major or minor point release. |
| |
| .. list-table:: VERSION file, Symantec version strings |
| :widths: 10, 10, 60 |
| :header-rows: 1 |
| |
| * - Version |
| - Artifact |
| - Description |
| * - 1.2.3 |
| - docker |
| - Publish artifacts |
| * - 1.2.3-dev |
| - |
| - Dev patch, build and test w/o external publishing. |
| |
| - Merging the patch will initiate a jenkins job to build components |
| |
| - `repo::voltctl <https://gerrit.opencord.org/plugins/gitiles/voltctl/+/refs/heads/master>`__, Gerrit example: `33551 <https://gerrit.opencord.org/c/voltctl/+/33551>`_. |
| - At least two jenkins jobs need to run: |
| |
| - `version-tag_wildcard <https://jenkins.opencord.org/job/version-tag_wildcard/>`__ |
| |
| - Verify VERSION file string is sane. |
| |
| - `github-release_voltctl <https://jenkins.opencord.org/job/github-release_voltctl/>`__ |
| |
| - Publish tool to github. |
| |
| |
| - Verify `git tags <https://github.com/opencord/voltctl/tags>`_ |
| |
| - A SemVer tag was created (vee prefix v{semver} signifies a golang package). |
| - Verify the latest `package(v1.8.45) <https://github.com/opencord/voltctl/releases>`_ contains more than just source archives (gz, zip): |
| - The `tags page <https://github.com/opencord/voltctl/tags>`_ index lacks ``Notes`` and ``Downloads`` links. |
| |
| - A valid package(v1.7.6) _ will include: |
| |
| - The `tags page <https://github.com/opencord/voltctl/tags>`_ index contains ``Notes`` and ``Downloads`` links. |
| - A checksum file |
| - Versioned voltctl binaries for several platforms (darwin, linux, windows) |
| - Source code bundles (tar.gz and zip). |
| |
| - `Released version <https://api.github.com/repos/opencord/voltctl/releases/latest>`_ will be consumed by jenkins installer vars/installVoltctl.groovy. |
| |
| |
| Create an official voltctl release |
| ---------------------------------- |
| - `installVoltctl.groovy <https://gerrit.opencord.org/plugins/gitiles/ci-management/+/refs/heads/master/vars/installVoltctl.groovy#53>`_ |
| depends on `github/releases/latest <https://api.github.com/repos/opencord/voltctl/releases/latest>`_ for versioned release information. |
| |
| - To generate a release commit changes to `repo::voltctl <https://gerrit.opencord.org/plugins/gitiles/voltctl>`__: |
| |
| - Modify VERSION file major/minor numbers for the upcoming release. |
| - Remove any -dev or patch modifiers. |
| - Create a pull request for review. |
| - Changes are published by pipeline job github-release-voltctl. |
| |
| - Verify the release version contains a checksum file: |
| |
| - checksum.SHA256 |
| - voltctl-1.7.6-darwin-amd64 |
| - voltctl-1.7.6-linux-amd64 |
| - voltctl-1.7.6-linux-arm64 |
| - voltctl-1.7.6-windows-amd64 |
| - Source code (zip) |
| - Source code (tar.gz) |
| |
| Manual release |
| -------------- |
| |
| Avoid this answer whenever possible but when peripheral breakage or volume |
| prevents publishing a new version of voltctl, a the tool can be published |
| manually. The user will need repository publishing permissions on github |
| and creation of a github api key for their account. |
| |
| Under the hood the `github gh command <https://cli.github.com/>`__ will handle all the heavy lifting. |
| |
| TODO |
| ^^^^ |
| |
| - Document key creation. |
| - Document github-release.sh command line and use. |
| - Ignore this, cosmetic edit to force a job to run. |
| |
| :ref:`voltctl-see-also` |