blob: d708f04791c9b993167efa5c22fd8a6cf851d432 [file] [log] [blame]
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`