blob: b3d47b498ce35dd9e594ffd8b1b716c8b8bc7855 [file] [view]
# NOTES
---
## Build Instructions
### Build Requirements
- JDK 11
- Maven 3.6.3+
### Compile and install all Extensions
```shell
# Run from the Ignite Extension project root
mvn clean install -DskipTests -Pcheckstyle
```
### Compile and install an Extension
```shell
# Run from the Ignite Extension project root
mvn clean install -f modules/cdc-ext -Pcheckstyle -DskipTests
```
or
```shell
# Run from the Ignite Extension project root
mvn clean install -pl :ignite-aws-ext -am -Pcheckstyle -DskipTests
```
### Build an Extension assembly
Release archives will be created in the `target` directory:
- sources archive: `{extension}-src.zip`
- binary archive (if an extension provides): `{extension}-bin.zip`
```shell
# Run from the Ignite Extension project root
mvn clean package -pl :ignite-cdc-ext -am -DskipTests -Pextension-release
```
## Release Instructions
### Prerequisites
- Personal PGP Key Pair (see [Generating a Key Pair][1])
- GnuGP installed (see [Installing GnuPG][2])
- Repository credentials configured (see [scripts/settings.xml][3])
- You're using an encrypted your ASF password (see [Maven Password Encryption Guide][4])
You can refer to the [Release Publishing Guide][5] and [Publishing Maven Releases to Maven Central Repository][6]
of the Apache Software Foundation release process for better understanding the whole process.
[1]: <https://central.sonatype.org/publish/requirements/gpg/#generating-a-key-pair> "Generating a Key Pair"
[2]: <https://central.sonatype.org/publish/requirements/gpg/#installing-gnupg> "Installing GnuPG"
[3]: <https://github.com/apache/ignite-extensions/blob/master/scripts/settings.xml> "Extensions settings.xml"
[4]: <https://maven.apache.org/guides/mini/guide-encryption.html> "Maven Encryption Guide"
[5]: <https://infra.apache.org/release-publishing.html#distribution> "Apache Software Foundation the Release Publishing Guide"
[6]: <https://infra.apache.org/publishing-maven-artifacts.html> "Publishing Maven Releases to Maven Central Repository"
### Prepare a new Release Candidate
- Create and push an extension release branch with the following branch name format: `release/[extension-project-name]-[extension-version]`.
```shell
git remote set-url origin https://github.com/apache/ignite-extensions.git
git checkout master
git checkout -b release/ignite-aws-ext-1.0.0
git push origin release/ignite-aws-ext-1.0.0
```
- Update Extension parent reference version and the extension module version using the `scripts/vote_\[git\]_update_versions.sh`.
```shell
# Usage: scripts/vote_\[git\]_update_versions.sh [<ignite-parent-version>] <module-path> <module-release-version>
scripts/vote_\[git\]_update_versions.sh [2.13.0] modules/asw-ext/ 1.0.0
```
- Run the [Extension Prepare Release Candidate][7] GitHub Action using the release branch as job source
this job will also create a rc-tag which points to the last commit in the release branch.
- From the execution job result download the `zip` artifact containing all the stuff required for
signing and deploying release artifacts.
- Run the `vote_[mvn][pgp]_jar_deploy.sh` to sign and deploy extensions jar's to Maven Central.
- Run the `vote_[pgp]_sign_dist.sh` to sign the extension binary and source zip-archives.
- Run the `vote_[svn]_upload_dist.sh` to upload signed zip-archives.
- Run the [Extension Check Release Candidate][8] GitHub Action to verify the papered release candidate.
[7]: <https://github.com/apache/ignite-extensions/actions/workflows/prepare-rc.yml> "Extension Prepare Release Candidate"
[8]: <https://github.com/apache/ignite-extensions/actions/workflows/release-checker.yml> "Extension Check Release Candidate"
## Development Instructions
### Running GitHub Actions Locally
Configure the `act` command line utility. When you run `act` it reads projects GitHub Actions
from `.github/workflows/` and determines the set of actions that need to be run on Docker image.
Use the following installation guide to install the `act` command:
https://github.com/nektos/act/blob/master/README.md#installation
#### Run
```shell
act --job check --eventpath event.json -s GITHUB_TOKEN=[your_fork_github_token]
```
The `event.json`:
```json
{
"action": "workflow_dispatch",
"inputs": {
"extension-name": "ignite-zookeeper-ip-finder-ext",
"release-version": "1.0.0"
}
}
```
#### Troubleshooting
The `act` command executes the workflow in a docker container. Some docker images may not have
the `mvn` command pre-installed. Thus, you have to install it in the docker container manually
as an action step. Use the step below to install Maven into container:
```yaml
- name: Download Maven
run: |
curl -sL https://www-eu.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.zip -o maven.zip
apt-get update
apt-get -y install unzip
unzip -d /usr/share maven.zip
rm maven.zip
ln -s /usr/share/apache-maven-3.6.3/bin/mvn /usr/bin/mvn
echo "M2_HOME=/usr/share/apache-maven-3.6.3" | tee -a /etc/environment
```