Skip to content

Commit

Permalink
Configure maven-release-plugin and git-cliff
Browse files Browse the repository at this point in the history
  • Loading branch information
nyg committed Jan 27, 2024
1 parent e9d02be commit d9de827
Show file tree
Hide file tree
Showing 6 changed files with 267 additions and 13 deletions.
7 changes: 7 additions & 0 deletions changelog.sh
@@ -0,0 +1,7 @@
#!/usr/bin/env sh
CURRENT_DIR=$(basename $PWD)
if [ "$CURRENT_DIR" = "kraken-api-java" ]
then
echo Generating changelog in CHANGELOG.md
git cliff -o CHANGELOG.md
fi
96 changes: 96 additions & 0 deletions cliff.toml
@@ -0,0 +1,96 @@
# git-cliff ~ default configuration file
# https://git-cliff.org/docs/configuration
#
# Lines starting with "#" are comments.
# Configuration options are organized into tables and keys.
# See documentation for more information on available options.


[changelog]

# changelog header
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n
"""

# template for the changelog body
# https://keats.github.io/tera/docs/#introduction
body = """
{% if version %}\
## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
{% else %}\
## [unreleased]
{% endif %}\
{% for group, commits in commits | group_by(attribute="group") %}
### {{ group | upper_first }}
{% for commit in commits %}
- {% if commit.breaking %}[**breaking**] {% endif %}{{ commit.message | upper_first }}\
{% endfor %}
{% endfor %}\n
"""

# template for the changelog footer
footer = """
<!-- generated by git-cliff -->
"""

# remove the leading and trailing s
trim = true

# postprocessors
postprocessors = [
# { pattern = '<REPO>', replace = "https://github.com/orhun/git-cliff" }, # replace repository URL
]


[git]

# parse the commits based on https://www.conventionalcommits.org
conventional_commits = true

# filter out the commits that are not conventional
filter_unconventional = false

# process each line of a commit as an individual commit
split_commits = false

# regex for preprocessing the commit messages
commit_preprocessors = [
# Replace issue numbers
#{ pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](<REPO>/issues/${2}))"},
# Check spelling of the commit with https://github.com/crate-ci/typos
# If the spelling is incorrect, it will be automatically fixed.
#{ pattern = '.*', replace_command = 'typos --write-changes -' },
]

# regex for parsing and grouping commits
commit_parsers = [
{ message = "^feat", group = "Features" },
{ message = "^fix", group = "Bug Fixes" },
{ message = "^doc", group = "Documentation" },
{ message = "^perf", group = "Performance" },
{ message = "^refactor", group = "Refactor" },
{ message = "^style", group = "Styling" },
{ message = "^test", group = "Testing" },
{ message = "^chore\\(release\\): prepare for", skip = true },
{ message = "^chore\\(deps\\)", skip = true },
{ message = "^chore\\(pr\\)", skip = true },
{ message = "^chore\\(pull\\)", skip = true },
{ message = "^(chore|ci)", group = "Miscellaneous Tasks" },
{ message = "^revert", group = "Revert" },
{ message = "^\\[maven-release-plugin\\]", skip = true },
{ message = ".*", group = "Other" },
]

# protect breaking changes from being skipped due to matching a skipping commit_parser
protect_breaking_commits = false

# filter out the commits that are not matched by commit parsers
filter_commits = false

# regex for matching git tags
tag_pattern = "v[0-9].*"

# sort the commits inside sections by oldest/newest order
sort_commits = "newest"
19 changes: 16 additions & 3 deletions examples/pom.xml
Expand Up @@ -5,19 +5,32 @@
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>edu.self.nyg</groupId>
<groupId>dev.andstuff.kraken</groupId>
<artifactId>kraken-api-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<version>0.1.0-SNAPSHOT</version>
</parent>

<artifactId>kraken-api-examples</artifactId>

<dependencies>
<dependency>
<groupId>edu.self.nyg</groupId>
<groupId>dev.andstuff.kraken</groupId>
<artifactId>kraken-api</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>${maven-deploy-plugin.version}</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>

</project>
4 changes: 2 additions & 2 deletions library/pom.xml
Expand Up @@ -5,9 +5,9 @@
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>edu.self.nyg</groupId>
<groupId>dev.andstuff.kraken</groupId>
<artifactId>kraken-api-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<version>0.1.0-SNAPSHOT</version>
</parent>

<artifactId>kraken-api</artifactId>
Expand Down
152 changes: 144 additions & 8 deletions pom.xml
Expand Up @@ -4,24 +4,67 @@

<modelVersion>4.0.0</modelVersion>

<groupId>edu.self.nyg</groupId>
<groupId>dev.andstuff.kraken</groupId>
<artifactId>kraken-api-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<version>0.1.0-SNAPSHOT</version>
<packaging>pom</packaging>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.release>21</maven.compiler.release>
<name>Java Kraken API Client</name>
<description>A Kraken.com API client written in Java</description>
<url>https://github.com/nyg/kraken-api-java</url>
<inceptionYear>2015</inceptionYear>

<!-- Third-party dependencies -->
<lombok.version>1.18.28</lombok.version>
</properties>
<licenses>
<license>
<name>ISC License</name>
<url>https://github.com/nyg/kraken-api-java/blob/master/LICENSE</url>
<distribution>repo</distribution>
</license>
</licenses>

<developers>
<developer>
<name>nyg</name>
<url>https://github.com/nyg</url>
</developer>
</developers>

<modules>
<module>library</module>
<module>examples</module>
</modules>

<scm>
<url>https://github.com/nyg/kraken-api-java</url>
<connection>scm:git:https://github.com/nyg/kraken-api-java.git</connection>
<developerConnection>scm:git:ssh://git@github.com/nyg/kraken-api-java.git</developerConnection>
<tag>HEAD</tag>
</scm>

<issueManagement>
<url>https://github.com/nyg/kraken-api-java/issues</url>
<system>GitHub Issues</system>
</issueManagement>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.release>21</maven.compiler.release>

<!-- Third-party dependencies -->
<lombok.version>1.18.30</lombok.version>

<!-- Maven plugins -->
<maven-deploy-plugin.version>3.1.1</maven-deploy-plugin.version>
<maven-gpg-plugin.version>3.1.0</maven-gpg-plugin.version>
<maven-javadoc-plugin.version>3.6.3</maven-javadoc-plugin.version>
<maven-release-plugin.version>3.0.1</maven-release-plugin.version>
<maven-source-plugin.version>3.3.0</maven-source-plugin.version>

<!-- Third-party plugins -->
<central-publishing-maven-plugin.version>0.2.0</central-publishing-maven-plugin.version>
<exec-maven-plugin.version>3.1.1</exec-maven-plugin.version>
</properties>

<dependencyManagement>
<dependencies>
<dependency>
Expand All @@ -33,4 +76,97 @@
</dependencies>
</dependencyManagement>

<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>${exec-maven-plugin.version}</version>
<configuration>
<executable>./changelog.sh</executable>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>${maven-release-plugin.version}</version>
<configuration>
<!-- release:prepare -->
<autoVersionSubmodules>true</autoVersionSubmodules>
<tagNameFormat>v@{version}</tagNameFormat>
<signTag>true</signTag>
<preparationGoals>clean verify exec:exec</preparationGoals>
<pushChanges>false</pushChanges>
<!-- release:perform -->
<releaseProfiles>maven-central</releaseProfiles>
</configuration>
</plugin>
</plugins>
</build>

<profiles>
<profile>
<id>maven-central</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>${maven-source-plugin.version}</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${maven-javadoc-plugin.version}</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>${maven-gpg-plugin.version}</version>
<executions>
<execution>
<id>sign-artifacts</id>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
<configuration>
<keyname>F8E60A60EB7F12AA</keyname>
</configuration>
</plugin>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>${central-publishing-maven-plugin.version}</version>
<extensions>true</extensions>
<configuration>
<publishingServerId>central</publishingServerId>
<tokenEnabled>true</tokenEnabled>
<excludeArtifacts>
<artifact>kraken-api-examples</artifact>
</excludeArtifacts>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>

</project>
2 changes: 2 additions & 0 deletions release.sh
@@ -0,0 +1,2 @@
mvn -B release:prepare release:perform
git fetch

0 comments on commit d9de827

Please sign in to comment.