[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/RMLio/rmlmapper-java/development/RELEASE.md [Back]  [Original]

# Release process

## Automated

1. Go to Gitlab's Pipelines in the repository.
2. Click on the grey job with an arrow in it (`development` branch).
3. Click on 'Create Release' manually job of the pipeline, not on the play button!
4. Enter the following key-value variable:
    - Key: `RELEASE_TAG_NAME`
    - Value: The git tag you want, for example: `1.2.3`
5. Press 'Run job'

All release steps are automatically executed including syncing the `master` branch, git tags, Maven, Docker, etc.
Once the job completes, make manually a GitHub Release from the tag your created on GitHub.

## Manually

### Release branch and tags

1. Make a new release branch (named `release/X.Y.Z`)
2. Bump version number in `pom.xml`
3. Update the changelog with the release name, use [ChangeFrog](https://github.com/pheyvaer/changefrog) to avoid mistakes.
4. Run `mvn clean install -DskipTests=True` to generate a fat jar.
5. Create a merge request from the `release/X.Y.Z` branch to the `development` branch and merge it if all tests pass.
6. Repeat this for `development` to `master`.
7. Create a git tag: `git tag $TAG` on `master`.
8. Push tag: `git push --tags`

### Docker image

1. Run `docker build -t rmlio/rmlmapper-java:$TAG .` to generate a Docker image for your `$TAG`.
2. Repeat this for the `latest` tag: `docker build -t rmlio/rmlmapper-java:latest`
3. Push Docker images to Docker Hub: `docker push rmlio/rmlmapper-java:$TAG` and `docker push rmlio/rmlmapper-java:latest`.

### Deploy on Central Repository

The following steps deploy a new version to the Central Repository,
based on [this tutorial](https://central.sonatype.org/pages/apache-maven.html).

1. Check if `~/.m2/settings.xml` exists.
2. If so, add the content of `settings.example.xml` to it, else 
copy `settings.example.xml` to `~/.m2/settings.xml`.
3. Fill in your JIRA user name and password in `settings.xml`.
4. Fill in your GPG passphrase. Find more information about setting up your key [here](https://central.sonatype.org/pages/working-with-pgp-signatures.html).
5. Make sure `JAVA_HOME` is properly set for your setup. Example: `export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64`
6. Deploy the latest release via `mvn clean deploy -P release -DskipTests=true`.

### Create a release on Github

1. Update the `master` and `development` branches on Github.
2. Go to the Github repo and make a new release.
3. Select the tag you created earlier.
4. Add the content of `CHANGELOG.md` in the release notes
5. Append the fat jar you generated earlier as release binaries

### Create a Merge Request to Alpine Linux's aports

1. Make sure you have `pmbootstrap` installed and ran `pmbootstrap init`, see https://wiki.postmarketos.org/wiki/Installing_pmbootstrap#Installing_automatically
3. Fork and clone aports: https://gitlab.alpinelinux.org/alpine/aports
4. Copy `APKBUILD` file of the rmlmapper in `testing/rmlmapper` to `~/.local/var/pmbootstrap/cache_git/pmaports/temp/rmlmapper/`. You might need to create the `rmlmapper` directory.
5. Update the version number in the `APKBUILD` file.
6. Run `pmbootstrap checksum rmlmapper`. This will update the SHA512 checksums.
7. Check if everything builds: `pmbootstrap build rmlmapper`
8. If it passes, copy the `APKBUILD` file back to `aports/testing/rmlmapper`
9. Create a new commit in the `aports` git repo with title: `testing/rmlmapper: update to $TAG`
10. Push to your fork and create a Merge Request in Alpine Linux's Gitlab.
11. If the CI properly passes, maintainers will merge it in the next few hours or days.

### Re-run the R2RML implementation report test cases

1. Re-run them for this `$TAG`
2. Make a merge request to the `rmlio` website

Web Proxy Viewer  |  New URL  |  Original Page