blob: c5d670c0683d4148153ced21eee0c217d521ad96 [file] [log] [blame] [view]
# DevLake Release Guide
**Please make sure your public key was included in the https://downloads.apache.org/incubator/devlake/KEYS , if not, please update this file first.**
## How to update KEYS
1. Clone the svn repository
```shell
svn co https://dist.apache.org/repos/dist/dev/incubator/devlake
```
2. Append your public key to the KEYS file
cd devlake
- Check if your public key is in the KEYS file
- If it does not, create a new [GPG key](https://docs.github.com/en/authentication/managing-commit-signature-verification/generating-a-new-gpg-key), and then run the following command to see if it was successful.
```shell
gpg --list-sigs <your name>
```
- Append your publick key
```shell
gpg --armor --export <your name> >> KEYS
```
3. Upload
```shell
svn add KEYS
svn commit -m "update KEYS"
svn cp https://dist.apache.org/repos/dist/dev/incubator/devlake/KEYS https://dist.apache.org/repos/dist/release/incubator/devlake/ -m "update KEYS"
```
We will use `v0.16.0` as an example to demonstrate the release process.
## ASF Release Policy
- https://www.apache.org/legal/release-policy.html
- https://incubator.apache.org/guides/releasemanagement.html
## Tools:
- `gpg` creating and verifying the signature
- `shasum` creating and verifying the checksum
- `git` checkout and pack the codebase
- `svn` uploading the code to the Apache code hosting server
## Prepare
- Check against the Incubator Release Checklist
- Create folder `releases/lake-v0.16.0` and put the two files `docker-compose.yml` and `env.example` in there.
- Update the file `.github/ISSUE_TEMPLATE/bug-report.yml` to include the version `v0.16.0`
## Pack
- Checkout to the branch/commit
```shell
git clone https://github.com/apache/incubator-devlake.git
cd incubator-devlake
git checkout b268d53a48edb26d3c9b73b782798703f068f655
```
- Tag the commit and push to origin
```shell
git tag v0.16.0-rc2
git push origin v0.16.0-rc2
```
- Pack the code
```shell
git archive --format=tar.gz --output="<the-output-dir>/apache-devlake-0.16.0-incubating-src.tar.gz" --prefix="apache-devlake-0.16.0-incubating-src/" v0.16.0-rc2
```
- Before proceeding to the next step, please make sure your public key was included in the https://downloads.apache.org/incubator/devlake/KEYS
- Create signature and checksum
```shell
cd <the-output-dir>
gpg -s --armor --output apache-devlake-0.16.0-incubating-src.tar.gz.asc --detach-sig apache-devlake-0.16.0-incubating-src.tar.gz
shasum -a 512 apache-devlake-0.16.0-incubating-src.tar.gz > apache-devlake-0.16.0-incubating-src.tar.gz.sha512
```
- Verify signature and checksum
```shell
gpg --verify apache-devlake-0.16.0-incubating-src.tar.gz.asc apache-devlake-0.16.0-incubating-src.tar.gz
shasum -a 512 --check apache-devlake-0.16.0-incubating-src.tar.gz.sha512
```
## Upload
- Clone the svn repository
```shell
svn co https://dist.apache.org/repos/dist/dev/incubator/devlake
```
- Copy the files into the svn local directory
```shell
cd devlake
mkdir -p 0.16.0-incubating-rc2
cp <the-output-dir>/apache-devlake-0.16.0-incubating-src.tar.gz* 0.16.0-incubating-rc2/
```
- Upload local files
```shell
svn add 0.16.0-incubating-rc2
svn commit -m "add 0.16.0-incubating-rc2"
```
## Vote
You can check [Incubator Release Checklist](https://cwiki.apache.org/confluence/display/INCUBATOR/Incubator+Release+Checklist) before voting.
1. Devlake community vote:
- Start the vote by sending an email to <dev@devlake.apache.org>
[[VOTE] Release Apache DevLake (Incubating) v0.16.0-rc2](https://lists.apache.org/thread/2v2so22fj9mg5h7jck1opsqhjyc86k06)
- Announce the vote result:
[[RESULT][VOTE] Release Apache DevLake (Incubating) v0.16.0-rc2](https://lists.apache.org/thread/wfzzjv53vfxml54098o6dt4913j47d4j)
2. Apache incubator community vote:
- Start the vote by sending an email to general@incubator.apache.org
[[VOTE] Release Apache DevLake (Incubating) v0.16.0-rc2](https://lists.apache.org/thread/5dbqc3t2bq7kfqccobrh7j9vqopj030k)
- Announce the vote result:
[[RESULT][VOTE] Release Apache DevLake (Incubating) v0.16.0-rc2](https://lists.apache.org/thread/40ktrw42c7hpok7vj33ql6wgdq2mpg92)
## Release
### Apache
- Move the release to the ASF content distribution system
```shell
svn mv https://dist.apache.org/repos/dist/dev/incubator/devlake/0.16.0-incubating-rc2 https://dist.apache.org/repos/dist/release/incubator/devlake/0.16.0-incubating -m "transfer packages for 0.16.0-incubating-rc2"
```
- Wait until the directory `https://downloads.apache.org/incubator/devlake/0.16.0-incubating/` was created
- Remove the last release from `https://downloads.apache.org/` (according the Apache release policy, this link should be pointing to the current release)
```shell
svn rm https://dist.apache.org/repos/dist/release/incubator/devlake/0.15.0-incubating -m "remove 0.15.0-incubating"
```
- Announce release by sending an email to general@incubator.apache.org
[[ANNOUNCE] Release Apache Devlake(incubating) 0.16.0-incubating](https://lists.apache.org/thread/czf6p3xtlkq6t8g4q35blkbf2xclsl3p)
### GitHub
- Create tag v0.16.0 and push
```shell
git checkout v0.16.0-rc2
git tag v0.16.0
git push origin v0.16.0
```
- Open the URL `https://github.com/apache/incubator-devlake/releases/`, draft a new release, fill in the form and upload two files `docker-compose.yml` and `env.example`