Skip to content

Commit

Permalink
Initialise repo (#1)
Browse files Browse the repository at this point in the history
  • Loading branch information
big-andy-coates authored Jul 26, 2022
1 parent 9f0ae03 commit cb2e8a5
Show file tree
Hide file tree
Showing 12 changed files with 14 additions and 96 deletions.
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"
)

0 comments on commit cb2e8a5

Please sign in to comment.