This project offers the Apache OpenWhisk Release Manager two modes to release OpenWhisk projects:
Manual mode makes sure that the release manager can download the source code of this repository, and go through the release process by running scripts sequentially on a local machine, to push the artifacts into the staging directory and eventually move them into the Apache release directory.
Automated mode provides the release manager another option to walk through the Apache release process by kicking off the Travis job to run the scripts. A release manager can choose either way to publish the artifacts in the staging directory and the Apache release directory.
The release manager can take full advantage of Travis CI to implement the release process. The only manual step is to configure the release information, by editing the configuration file config.json. Please refer to edit configuration file for the information able to be configured.
PR-based Travis build: the Travis build triggered by a pull request. Each time the file config.json is ready, release manager can submit a pull request to the master branch of OpenWhisk release repository. Based on the result of the Travis build, we know whether the configurations in config.json can be used as a candidate to release. This type of Travis build will download the source code, generate the artifacts, sign the artifacts, install the OpenWhisk services and run the test cases.
Push-based Travis build: the Travis build triggered by a push into master branch. When a PR with new configurations is accepted, the release manager can merge it to kick off this type of Travis build. On top of the tasks done by PR-based Travis build, it will upload the artifacts into the staging directory.
Tag-based Travis build: the Travis build triggered by git tag. After the vote succeeds in the community, we decide to move the artifacts from the staging directory to the Apache release directory. This type of Travis build is responsible for this task.
In summary, the release process of OpenWhisk is the process of developing the configuration file config.json for a certain release.
As a Release Manager, please know that most of these requirements are addressed via the release process automation provided in this project; however, some steps are manual. Regardless of automation, it is good to understand all the key considerations and requirements that a release manager is ultimately responsible for.
All released source code has to be compliant with Apache Licensing Policy, by adding the LICENSE file, NOTICE file to each repository and the release package, and adding Licensing headers to each source code file.
Artifacts for project repository source code and any compiled binaries are packaged separately with each artifact being signed cryptographically.
Source code needs to provide the installation script for users to deploy a full OpenWhisk environment. We target to implement this step in Travis build.
These steps have been automated for the Release Manager.
All release artifacts must be uploaded to project’s designated subdirectory in the Apache distribution channel (i.e., https://dist.apache.org/repos/dist/).
Specifically, the Apache OpenWhisk project has paths to publish both candidate (staged) releases:
and the approved release path:
These steps are manual and must be performed by the Release Manager.
Apache requires a minimum of three positive votes and more positive than negative votes MUST be cast, in order to release.
-The Release manager for Apache OpenWhisk sends a release note to the OpenWhisk mailing for votes, and opens the mail for 72 hours.
An example of the release note can be found at the following link: example of release note.