diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 4f8dcdd6..86606383 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -7,3 +7,9 @@ updates: open-pull-requests-limit: 19 labels: - "Type: dependencies" + - package-ecosystem: github-actions + directory: "/" + schedule: + interval: daily + labels: + - "Type: dependencies" diff --git a/.github/workflows/development.yml b/.github/workflows/development.yml index 6bd5024e..51b624b2 100644 --- a/.github/workflows/development.yml +++ b/.github/workflows/development.yml @@ -14,7 +14,7 @@ jobs: steps: # Checkout the code - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Expose branch name run: echo ${{ github.ref }} diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 00000000..80849e99 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,62 @@ +name: Build the docs + +on: + push: + branches: + - develop + tags: + - '*' + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: 3.9 + cache: pip + + - name: Upgrade pip + run: | + # install pip=>20.1 to use "pip cache dir" + python3 -m pip install --upgrade pip + + - name: Install dependencies + run: python3 -m pip install -r ./docs/requirements.txt + + - name: Set git username and email + run: | + # + git config --global user.email "${GH_USERNAME}@users.noreply.github.com" + git config --global user.name "${GH_USERNAME}" + env: + GH_USERNAME: ${{ github.actor }} + + - name: Pre-fetch the gh-pages branch + run: git fetch --depth=1 + + - name: Build docs with MkDocs + run: mkdocs build + + - name: Read the tag name + id: get_tag_name + if: startsWith(github.ref, 'refs/tags/') + run: echo ::set-output name=TAG_NAME::${GITHUB_REF/refs\/tags\//} + + # This is for a tagged version + - name: Create a new version of documentation and push to GH pages. + if: startsWith(github.ref, 'refs/tags/') + run: mike deploy ${{ steps.get_tag_name.outputs.TAG_NAME }} stable --push --update-aliases + + - name: Make stable to default. + if: startsWith(github.ref, 'refs/tags/') + run: mike set-default stable --push + + # This is for develop + - name: Deploy latest develop snapshot docs to GH pages. + if: github.ref == 'refs/heads/develop' + run: mike deploy snapshot --push --update-aliases diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index d1f9956d..3059bb80 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -11,7 +11,7 @@ jobs: name: Build and run tests steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 # Setup JDK and .m2/settings.xml - name: Set up JDK 17 diff --git a/docs/CNAME b/docs/CNAME new file mode 100644 index 00000000..64640d65 --- /dev/null +++ b/docs/CNAME @@ -0,0 +1 @@ +www.holunda.io diff --git a/docs/assets/css/extra.css b/docs/assets/css/extra.css new file mode 100644 index 00000000..c17e53ec --- /dev/null +++ b/docs/assets/css/extra.css @@ -0,0 +1,64 @@ +/* + * General customizations + */ +/* Customize logo size */ +.md-header__button.md-logo img, .md-header__button.md-logo { + height: 15%; + width: 15%; +} + + + +[data-md-color-scheme="default"] { + + /* + Holisticon colors + */ + --bright-green: #C8FFA5; + --black-green: #102924; + --forest-green: #1E4132; + --blue-gray: #C7CFEB; + --blue-gray-d2: #9CA4B8; + --black: #141419; + --forest-green-b2: #396D55; + --forest-green-b3: #478467; + + --red: #ff0000; + + + /* + Default colors adjustments + */ + --md-primary-fg-color: var(--forest-green); + --md-accent-fg-color: var(--blue-gray-d2); + --md-footer-bg-color: var(--forest-green); + --md-typeset-a-color: var(--forest-green-b2); +} + +[data-md-color-scheme="slate"] { + + --bright-green: #C8FFA5; + --black-green: #102924; + --forest-green: #1E4132; + --blue-gray: #C7CFEB; + --black: #141419; + + --forest-green-b2: #396D55; + --forest-green-b3: #478467; + + + --red: #ff0000; + /* + Default colors adjustments + */ + --md-default-bg-color: var(--black-green); + --md-primary-fg-color: var(--black-green); + --md-default-fg-color--light: var(--bright-green); + --md-default-fg-color--dark: var(--bright-green); + + --md-typeset-color: var(--bright-green); + --md-typeset-a-color: var(--blue-gray); + + --md-accent-fg-color: var(--forest-green-b3); + --md-footer-bg-color: var(--black); +} diff --git a/docs/assets/img/logo.svg b/docs/assets/img/logo.svg new file mode 100644 index 00000000..0386c41f --- /dev/null +++ b/docs/assets/img/logo.svg @@ -0,0 +1,11 @@ + + + + + + diff --git a/docs/developer-guide/contribution.md b/docs/developer-guide/contribution.md new file mode 100644 index 00000000..bd4ceb16 --- /dev/null +++ b/docs/developer-guide/contribution.md @@ -0,0 +1,25 @@ +--- +title: Contribution +--- + +There are several ways in which you may contribute to this project. + +* [File issues](https://github.com/toolisticon/avro-kotlin/issues) +* Submit a pull requests + +## Found a bug or missing feature? + +Please [file an issue](https://github.com/toolisticon/avro-kotlin/issues) in our +issue tracking system. + +## Submit a Pull Request + +If you found a solution to an [open issue](https://github.com/toolisticon/avro-kotlin/issues) +and implemented it, we would be happy to add your contribution in the code base. For doing so, +please create a pull request. Prior to that, please make sure you: + +- rebase against the `develop` branch +- stick to project coding conventions +- added test cases for the problem you are solving +- added docs, describing the change +- generally comply with codacy report diff --git a/docs/developer-guide/project-setup.md b/docs/developer-guide/project-setup.md new file mode 100644 index 00000000..38593279 --- /dev/null +++ b/docs/developer-guide/project-setup.md @@ -0,0 +1,126 @@ +--- +title: Project Setup +pageId: 'project-setup' +--- + +If you are interested in developing and building the project please follow the following instruction. + +## Version control + +To get sources of the project, please execute: + +```bash +git clone https://github.com/toolisticon/avro-kotlin.git +cd camunda-bpm-taskpool +``` + +We are using gitflow in our git SCM. That means that you should start from `develop` branch, +create a `feature/` out of it and once it is completed create a pull request containing +it. Please squash your commits before submitting and use semantic commit messages, if possible. + +## Project Build + +Perform the following steps to get a development setup up and running. + +```bash +./mvnw clean install +``` + +## Integration Tests + +By default, the build command will ignore the run of `failsafe` Maven plugin executing the integration tests +(usual JUnit tests with class names ending with ITest). In order to run integration tests, please +call from your command line: + +```bash +./mvnw integration-test failsafe:verify -Pitest +``` + +### Build Documentation + +We are using MkDocs for generation of a static site documentation and rely on Markdown as much as possible. +MkDocs is written in Python 3 and needs to be installed on your machine. For the installation please run the following +command from your command line: + +```bash +python3 -m pip install --upgrade pip +python3 -m pip install -r ./docs/requirements.txt +``` + +For creation of documentation, please run: + +```bash +mkdocs build +``` + +The docs are generated into `site` directory. + +!!! note + If you want to develop your docs in 'live' mode, run `mkdocs serve` and access the [http://localhost:8000/](http://localhost:8000/) from your browser. + +## Continuous Integration + +Travis CI is building all branches on commit hook. In addition, a private-hosted Jenkins CI +is used to build the releases. + +## Release Management + +Release management has been set up for use of Sonatype Nexus (= Maven Central) + +### What modules get deployed to repository + +Every module is enabled by default. If you want to change this, please provide the property + +```xml +true +``` + +inside the corresponding `pom.xml`. Currently, all examples are _EXCLUDED_ from publication into Maven Central. + +### Trigger new release + +!!! warning + This operation requires special permissions. + +We use gitflow for development (see [A successful git branching model](http://nvie.com/posts/a-successful-git-branching-model/) for more details). You could use gitflow with native git commands, but then you would have to change the versions in the poms manually. Therefore, we use the [mvn gitflow plugin](https://github.com/aleksandr-m/gitflow-maven-plugin/), which handles this and other things nicely. + +You can build a release with: + +```bash +./mvnw gitflow:release-start +./mvnw gitflow:release-finish +``` + +This will update the versions in the `pom.xml` s accordingly and push the release tag to the `master` branch +and update the `develop` branch for the new development version. + +### Trigger a deploy + +!!! warning + This operation requires special permissions. + +Currently, CI allows for deployment of artifacts to Maven Central and is executed using github actions. +This means, that a push to `master` branch will start the corresponding build job, and if successful the +artifacts will get into `Staging Repositories` of OSS Sonatype without manual intervention. + +### Run deploy from local machine + +!!! warning + This operation requires special permissions. + +If you still want to execute the deployment from your local machine, you need to have GPG keys at place and +to execute the following command on the `master` branch: + +```bash +export GPG_KEYNAME="" +export GPG_PASSPHRASE="" +./mvnw clean deploy -B -DskipTests -DskipExamples -Prelease -Dgpg.keyname=$GPG_KEYNAME -Dgpg.passphrase=$GPG_PASSPHRASE +``` + +### Release to public repositories + +!!! warning + This operation requires special permissions. + +The deployment job will publish the artifacts to Nexus OSS staging repositories. Currently, all snapshots get into OSS Sonatype Snapshot +repository and all releases to Maven Central automatically. diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md new file mode 100644 index 00000000..78303ad0 --- /dev/null +++ b/docs/getting-started/index.md @@ -0,0 +1,4 @@ +--- +title: Getting started +--- + diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 00000000..54285218 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,16 @@ +## Why should I use this? + +* + + +## How to start? + +We provide documentation for different people and different tasks. A good starting point is the +[Getting Started](./getting-started/). You might want to look at [Reference Guide](./reference-guide/). + +## Get in touch + +If you are missing a feature, have a question regarding usage or deployment, you should definitely get in touch +with us. There are various ways to do so: + +[![Github Issues](https://img.shields.io/github/issues/toolisticon/avro-kotlin)](https://github.com/holunda-io/camunda-bpm-taskpool/issues) diff --git a/docs/reference-guide/index.md b/docs/reference-guide/index.md new file mode 100644 index 00000000..17cd07ad --- /dev/null +++ b/docs/reference-guide/index.md @@ -0,0 +1,6 @@ +--- +title: Reference Guide +--- + +This reference guide is a primary source of information in order to understand how ... + diff --git a/docs/requirements.txt b/docs/requirements.txt new file mode 100644 index 00000000..b17c2366 --- /dev/null +++ b/docs/requirements.txt @@ -0,0 +1,5 @@ +mkdocs +mkdocs-git-committers-plugin +mkdocs-material +mike +mkdocs-git-revision-date-localized-plugin diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 00000000..c74712fd --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,95 @@ +# ############################### +# Main config file for MkDocs. +# ############################### +# +# To run: +# mkdocs serve +# More help: https://www.holunda.io/camunda-bpm-taskpool/developer-guide/project-setup.html#build-documentation +# ############################### + +site_name: Avro Kotlin +site_url: https://avro-kotlin.toolisticon.io/ +site_author: Holisticon Crafters +site_description: >- + Avro Kotlin provides utilities to improve working experience with Apache Avro and Kotlin. + +copyright: Copyright © 2024, Holisticon AG + +use_directory_urls: false + +# Repository +repo_name: toolisticon/avro-kotlin +repo_url: https://github.com/toolisticon/avro-kotlin/ +edit_uri: edit/develop/docs/ + +markdown_extensions: + - attr_list + - toc: + permalink: "#" + - pymdownx.highlight + - pymdownx.superfences + - pymdownx.details + - admonition + + +theme: + name: material + features: + - navigation.instant # When instant loading is enabled, clicks on all internal links will be intercepted and dispatched via XHR without fully reloading the page + - navigation.tabs # add top level nav items into a horizoneal menu + - navigation.tabs.sticky # make horizontal menu sticky (insider feature) + - navigation.sections + - navigation.top # add "navigate to top" page icon on bottom left + - toc.integrate # integrate site TOC into the menu on the left + logo: assets/img/logo.svg + icon: + repo: fontawesome/brands/github + font: + text: Roboto + code: Roboto Mono + palette: + - media: "(prefers-color-scheme: dark)" + scheme: slate + toggle: + icon: material/weather-sunny + name: Switch to light mode + - media: "(prefers-color-scheme: light)" + scheme: default + toggle: + icon: material/weather-night + name: Switch to dark mode + +extra_css: [ assets/css/extra.css ] + +extra: + social: + - icon: fontawesome/brands/twitter + name: Holisticon on Twitter + link: https://twitter.com/holisticon + - icon: fontawesome/brands/medium + name: Holisticon Crafters on Medium + link: https://medium.com/holisticon-consultants/tagged/mpb + version: + provider: mike + +plugins: + - search + - mike: + # these fields are all optional; the defaults are as below... + version_selector: true # set to false, in order to leave out the version selector + css_dir: css # the directory to put the version selector's CSS + javascript_dir: js # the directory to put the version selector's JS + canonical_version: null # the version for ; `null` + # uses the version specified via `mike deploy` + - git-revision-date-localized: + type: date + fallback_to_build_date: true + +nav: + - Home: index.md + - Getting Started: getting-started/index.md + - Reference: + - Reference Overview: reference-guide/index.md + - Developers: + - Contribution: developer-guide/contribution.md + - Project Setup: developer-guide/project-setup.md