Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/creek-service/multi-module-template
A template used internally by Creek to bootstrap new multi-module repos.
https://github.com/creek-service/multi-module-template
Last synced: 4 days ago
JSON representation
A template used internally by Creek to bootstrap new multi-module repos.
- Host: GitHub
- URL: https://github.com/creek-service/multi-module-template
- Owner: creek-service
- License: apache-2.0
- Created: 2021-11-16T17:05:20.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-08-05T06:43:16.000Z (3 months ago)
- Last Synced: 2024-08-05T07:42:39.815Z (3 months ago)
- Language: Java
- Homepage:
- Size: 414 KB
- Stars: 1
- Watchers: 0
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
[![Coverage Status](https://coveralls.io/repos/github/creek-service/multi-module-template/badge.svg?branch=main)](https://coveralls.io/github/creek-service/multi-module-template?branch=main)
[![build](https://github.com/creek-service/multi-module-template/actions/workflows/build.yml/badge.svg)](https://github.com/creek-service/multi-module-template/actions/workflows/build.yml)[![Maven Central](https://img.shields.io/maven-central/v/org.creekservice/multi-module-template-example.svg)](https://central.sonatype.dev/search?q=multi-module-template-*)
[![CodeQL](https://github.com/creek-service/multi-module-template/actions/workflows/codeql.yml/badge.svg)](https://github.com/creek-service/multi-module-template/actions/workflows/codeql.yml)
[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/creek-service/multi-module-template/badge)](https://api.securityscorecards.dev/projects/github.com/creek-service/multi-module-template)
[![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/6899/badge)](https://bestpractices.coreinfrastructure.org/projects/6899)# Multi-module template Repo
Template repo used to create other multi-module repos.## Features
The template sets up the following:
* Multi-module Gradle Java project, including:
* Code formatting by [Spotless][1]
* Static code analysis by [Spotbugs][2] and [Checkstyle][3]
* Release versioning by the [Axion-release-plugin][4]
* Code coverage analysis by [Jacoco][5]
* Code coverage tracking by [Coveralls.io][6]
* Default set of test dependencies:
* [Unit5][7]
* [Mockito][8]
* [Hamcrest][9]
* [Guava TestLib][10]
* [Log4J 2.x][11]
* GitHub build workflow, including:
* Gradle build
* [Coveralls.io][6] reporting
* Release versioning
* GitHub code owners and PR template.## Usage
### Creating a new repo from the template
1. Click the "Use this template" button on the main page and follow the instructions.
2. Import the new repo into [Coveralls.io][12], noting the repo token.
3. Customise the repo in GitHub `Settings`->:
1. `General`->
1. `Pull Requests`:
1. un-tick: `Allow merge commits` and `Allow rebase merging`.
2. tick: `Always suggest updating pull request branches`, `Allow auto-merging` and `Automatically delete head branches`
2. `Collaborators and teams`->
1. `Manage access`: add `code-reviews` team with the `Write` role.
3. `Secrets`->:
1. `Actions`-> Add a new repository secret called `COVERALLS_REPO_TOKEN`, grabbing the value from Coveralls.io.,
2. `Dependabot`-> Add the same `COVERALLS_REPO_TOKEN` repository secret here too
4. Customise the files in the new repo:
1. Replace the `multi-module-template` repo name with the name of the new project.
Each place is marked with a `ChangeMe` comment.
2. Replace the [`example`](example) module with the repos first module.
3. Replace the `creek.template.module.multi` module name with a suitable module name.
Each place is marked with a `ChangeMe` comment.
4. Replace this README.md
5. Commit changes as a PR (so you can test the PR build works!)
5. Finish customising the repo in GitHub `Settings`->`Branches` and protect the `main` branch:
1. Tick `Require a pull request before merging`
1. With `Require approvals` set to 1.
2. Tick `Dismiss stale pull request approvals when new commits are pushed`
3. Tick `Require status checks to pass before merging`
1. With `Require branches to be up to date before merging`
2. With status checks:
* `build`
* `codeQL`
* `coverage/coveralls`
4. Click `Create`.
6. Finish customising the repo in Coveralls.io `Settings`->`Pull Request Alerts`:
1. Tick `Leave comments`
2. Set `COVERAGE THRESHOLD FOR FAILURE` to `80`%
3. Set `COVERAGE DECREASE THRESHOLD FOR FAILURE` to `1`%
4. Save changes.
7. Use the "Set next version" GitHub workflow to set the next version inline with other Creek repos.## Modules in this repository
* **[example](example)** [[JavaDocs](https://javadoc.io/doc/org.creekservice/multi-module-template-example)]: example module
### Gradle commands
* `./gradlew format` will format the code using [Spotless][1].
* `./gradlew static` will run static code analysis, i.e. [Spotbugs][2] and [Checkstyle][3].
* `./gradlew check` will run all checks and tests.
* `./gradlew coverage` will generate a cross-module [Jacoco][5] coverage report.[1]: https://github.com/diffplug/spotless
[2]: https://spotbugs.github.io/
[3]: https://checkstyle.sourceforge.io/
[4]: https://github.com/allegro/axion-release-plugin
[5]: https://www.jacoco.org/jacoco/trunk/doc/
[6]: https://coveralls.io/
[7]: https://junit.org/junit5/docs/current/user-guide/
[8]: https://site.mockito.org/
[9]: http://hamcrest.org/JavaHamcrest/index
[10]: https://github.com/google/guava/tree/master/guava-testlib
[11]: https://logging.apache.org/log4j/2.x/
[12]: https://coveralls.io/