Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initialise repo #1

Merged
merged 1 commit into from
Jul 26, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ Contribution welcome!
## How to prepare

* You will need a [GitHub account](https://github.com/signup/free)
<!-- ChangeMe: replace //multi-module-template/ in the urls below with the name of the repo-->
* Submit an [issue ticket](https://github.com/creek-service/multi-module-template/issues/new) for your issue if the is no one yet.
* Submit an [issue ticket](https://github.com/creek-service/creek-platform/issues/new) for your issue if the is no one yet.
* Describe the issue and include steps to reproduce if it's a bug.
* Ensure to mention the earliest version that you know is affected.
* If you are able and want to fix this, [fork the repository on GitHub](https://docs.github.com/en/get-started/quickstart/fork-a-repo)
Expand Down
93 changes: 7 additions & 86 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,91 +1,12 @@
<!-- ChangeMe: replace /multi-module-template in the badge urls below with the name of the repo-->
[![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/gradle.yml/badge.svg)](https://github.com/creek-service/multi-module-template/actions/workflows/gradle.yml)
[![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)
[![Coverage Status](https://coveralls.io/repos/github/creek-service/creek-platform/badge.svg?branch=main)](https://coveralls.io/github/creek-service/creek-platform?branch=main)
[![build](https://github.com/creek-service/creek-platform/actions/workflows/gradle.yml/badge.svg)](https://github.com/creek-service/creek-platform/actions/workflows/gradle.yml)
[![CodeQL](https://github.com/creek-service/creek-platform/actions/workflows/codeql.yml/badge.svg)](https://github.com/creek-service/creek-platform/actions/workflows/codeql.yml)

# Multi-module template Repo
Template repo used to create other multi-module repos.
# Creek Platform

## Features
The base of the Creek platform.

The template sets up the following:
## Modules

* 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.

### 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/
* [metadata](metadata): A dependency-free library that defines the types used to describe platform components.
5 changes: 0 additions & 5 deletions example/src/main/java/module-info.java

This file was deleted.

File renamed without changes.
File renamed without changes.
3 changes: 3 additions & 0 deletions metadata/src/main/java/module-info.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module creek.platform.metadata {
exports org.creekservice.api.example;
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
org.junitpioneer,org.hamcrest,guava.testlib,creek.test.util,creek.test.hamcrest,creek.test.conformity

--add-reads
creek.template.module.multi=org.junitpioneer,org.hamcrest,guava.testlib,creek.test.util,creek.test.hamcrest,creek.test.conformity
creek.platform.metadata=org.junitpioneer,org.hamcrest,guava.testlib,creek.test.util,creek.test.hamcrest,creek.test.conformity

--add-opens
org.junitpioneer/org.junitpioneer.jupiter=org.junit.platform.commons
Expand Down
4 changes: 2 additions & 2 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
rootProject.name = "multi-module-template" // ChangeMe: set the root project name with the module name.
rootProject.name = "creek-platform"

include(
"example"
"metadata"
)