Skip to content

Commit

Permalink
chore: multiple enhancements
Browse files Browse the repository at this point in the history
  • Loading branch information
fhussonnois committed Sep 5, 2023
1 parent 0d34628 commit b9bec9a
Show file tree
Hide file tree
Showing 11 changed files with 250 additions and 157 deletions.
32 changes: 25 additions & 7 deletions .github/workflows/docker-build-push.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,28 @@
# Copyright 2023 The original authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at

# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
name: Docker Builds & Push
on:
push:
branches:
- 'main'
tags:
- 'v*'
env:
JAVA_VERSION: '17'
JAVA_DISTRO: 'zulu'
GRAAL_VERSION: '22.3.3'
jobs:
build_docker_image:
if: github.repository == 'streamthoughts/jikkou'
Expand All @@ -14,18 +32,18 @@ jobs:
- uses: actions/checkout@v3
- uses: docker/setup-buildx-action@v2

- name: Set up GraalVM
- name: 'Set up GraalVM'
uses: graalvm/setup-graalvm@v1
with:
java-version: '17.0.7'
distribution: 'graalvm'
version: ${{ env.GRAAL_VERSION }}
java-version: ${{ env.JAVA_VERSION }}
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Grant execute permission for gradlew
run: chmod +x mvnw

- name: Grant execute permission to MVN Wrapper
run: chmod +x ./mvnw

- name: Build with Maven Wrapper
run: ./mvnw -B clean package -Pnative,dist
run: ./mvnw -ntp -B clean package -Pnative

- name: Set env PROJECT_VERSION
run: echo "PROJECT_VERSION=$(./mvnw org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
Expand Down
14 changes: 14 additions & 0 deletions .github/workflows/github-page.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
# Copyright 2023 The original authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at

# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
name: GitHub Pages

on:
Expand Down
14 changes: 14 additions & 0 deletions .github/workflows/maven-build.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
# Copyright 2023 The original authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at

# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
name: Java CI with Maven

on:
Expand Down
45 changes: 30 additions & 15 deletions .github/workflows/maven-deploy.yml
Original file line number Diff line number Diff line change
@@ -1,48 +1,63 @@
# Copyright 2023 The original authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at

# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
name: Deploy Maven Central

on:
push:
tags:
- 'v*'

env:
JAVA_VERSION: '17'
JAVA_DISTRO: 'zulu'
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout GitHub Action Repo
- name: 'Checkout GitHub repository'
uses: actions/checkout@v3
with:
clean: true

- name: Import GPG key
- name: 'Import GPG key'
uses: crazy-max/ghaction-import-gpg@v5
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.GPG_PASSPHRASE }}

- name: Set up JDK 17
- name: 'Set up Java'
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'zulu'
java-version: ${{ env.JAVA_VERSION }}
distribution: ${{ env.JAVA_DISTRO }}
check-latest: true
cache: maven

- name: Set env VERSION
- name: 'Grant execute permission to MVN Wrapper'
run: chmod +x ./mvnw

- name: 'Set env VERSION'
run: |
VERSION=$(./mvnw org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate -Dexpression=project.version -q -DforceStdout)
echo "VERSION=$VERSION" >> $GITHUB_ENV
- name: Check VERSION
run: echo "${{ env.VERSION }}"

- name: Init Setting.xml
- name: 'Set up Maven settings'
run: |
echo "<settings><interactiveMode>false</interactiveMode><servers><server><id>ossrh</id><username>${{ secrets.OSSRH_USERNAME }}</username><password>${{ secrets.OSSRH_PASSWORD }}</password></server></servers></settings>" > ./settings.xml
- name: Grant execute permission to MVN Wrapper
run: chmod +x ./mvnw

- name: Deploy Maven Central
- name: 'Deploy Maven Central'
run: |
./mvnw -s ./settings.xml deploy -Possrh
23 changes: 22 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
# Copyright 2023 The original authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at

# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
name: Releases

on:
Expand Down Expand Up @@ -36,6 +50,12 @@ jobs:
check-latest: true
cache: maven

- name: 'Import GPG key'
uses: crazy-max/ghaction-import-gpg@v5
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.GPG_PASSPHRASE }}

- name: Grant execute permission to MVN Wrapper
run: chmod +x ./mvnw

Expand Down Expand Up @@ -86,7 +106,8 @@ jobs:
ref: ${{ needs.set-release-version.outputs.HEAD }}
fetch-depth: 0
clean: true
- name: Set up GraalVM

- name: 'Set up GraalVM'
uses: graalvm/setup-graalvm@v1
with:
version: ${{ env.GRAAL_VERSION }}
Expand Down
40 changes: 24 additions & 16 deletions README.adoc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
= Jikkou streamlines the management of the configurations that live on your data streams platform!
= Jikkou!

image:https://img.shields.io/github/license/streamthoughts/jikkou[]
image:https://img.shields.io/github/issues/streamthoughts/jikkou[]
Expand All @@ -17,8 +17,8 @@ See: https://streamthoughts.github.io/jikkou/[official documentation]

== Introduction

**https://github.com/streamthoughts/jikkou[Jikkou]** (jikkō / 実行) is an open-source tool designed to provide an efficient and easier way to
manage and automate the configurations on your data stream platform.
**https://github.com/streamthoughts/jikkou[Jikkou]** (jikkō / 実行) is an open-source tool designed to provide an efficient and easy way to
manage, automate, and provision resource configurations for Kafka, Schema Registry, etc.

Developed by Kafka ❤️, Jikkou aims to streamline daily operations on https://kafka.apache.org/documentation/[Apache Kafka],
ensuring that platform governance is no longer a boring and tedious task for both **Developers** and **Administrators**.
Expand Down Expand Up @@ -54,21 +54,27 @@ See https://medium.com/@fhussonnois/why-is-managing-kafka-topics-still-such-a-pa

== Quick Installation

The latest stable release of jikkou (x86) for Linux, and macOScan be downloaded from https://github.com/streamthoughts/jikkou/releases/tag/v0.25.0[GitHub Releases]
The latest stable release of jikkou (x86) for Linux, and macOS can be downloaded from https://github.com/streamthoughts/jikkou/releases/tag/v0.25.0[GitHub Releases]

Alternatively, jikkou is also available:

* As a fatJar available from https://repo.maven.apache.org/maven2/io/streamthoughts/jikkou/0.25.0/[Maven Central]
* As a Docker Image available from https://hub.docker.com/r/streamthoughts/jikkou[Docker Hub].

Download the jikkou binary from the https://github.com/streamthoughts/jikkou/releases[releases page], uncompress
and copy to the desired location.

[source, bash]
----
# Download and unzip the latest stable release
RELEASE=jikkou-0.25.0-linux-x86_64.zip
wget https://github.com/streamthoughts/jikkou/releases/download/v0.25.0/$RELEASE && unzip $RELEASE
# Download the latest stable release
wget https://github.com/streamthoughts/jikkou/releases/download/v0.25.0/jikkou-0.25.0-linux-x86_64.zip
# Uncompress
unzip jikkou-0.25.0-linux-x86_64.zip
# Copy to the desired location
cp ./jikkou-0.25.0-linux-x86_64/bin/jikkou /usr/local/bin/
# Run executable
./jikkou-0.25.0-linux-x86_64/bin/jikkou
----

It is recommended to install the bash/zsh completion script `jikkou_completion`:
Expand All @@ -87,12 +93,13 @@ source <(jikkou generate-completion)

== Overview

It allows you to define the desired current state of your **Topics**, **ACLs**, or **Quotas**, using one or more YAML resource definition files :
Here is an example of how to create and manage a _Kafka topic_ using Jikkou:

kafka-topics.yml:::
* Create a resource file _kafka-topics.yaml_:
kafka-topics.yaml:::
[source,yaml]
----
# file:./kafka-topics.yml
# file:./kafka-topics.yaml
apiVersion: 'kafka.jikkou.io/v1beta2'
kind: 'KafkaTopic'
metadata:
Expand All @@ -106,13 +113,16 @@ spec:
min.insync.replicas: 2
----

It will then take care of computing and applying the necessary changes directly to your cluster.
* Then run the following command:

[source, bash]
----
$ jikkou apply --files ./kafka-topics.yml
$ jikkou apply --files ./kafka-topics.yaml
----

Jikkou will then take care of computing and applying the necessary changes directly to your cluster.

_(output)_:
[source]
----
TASK [CREATE] Create a new topic my-first-topic-with-jikkou (partitions=12, replicas=3) - CHANGED **********************
Expand Down Expand Up @@ -150,8 +160,6 @@ EXECUTION in 2s 661ms (DRY_RUN)
ok : 0, created : 1, altered : 0, deleted : 0 failed : 0
----

Most of the time, you will use Jikkou part of your CI/CD pipeline allowing you to version and ship your Apache Kafka resources directly from Git (more on https://about.gitlab.com/topics/gitops/[GitOps])

== Documentation

Check the official https://streamthoughts.github.io/jikkou/[documentation] for further https://streamthoughts.github.io/jikkou/docs/introducion/_installation/[installation] and usage https://streamthoughts.github.io/jikkou/docs/user-guide/[instructions].
Expand Down
18 changes: 10 additions & 8 deletions docs/content/en/_index.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

{{< blocks/cover title="Jikkou (jikkō / 実行)!" image_anchor="top" height="max" color="white" >}}
<div class="mx-auto">
<h2 class="mb-5">Streamline the management of the configurations that live on your data streams platform.</h2>
<h2 class="mb-5">Efficient and easy automation and provisioning of resources for any Kafka infrastructure.</h2>
<a class="btn btn-lg btn-secondary mr-3 mb-4" href="{{< relref "/docs" >}}">
Learn More <i class="fas fa-arrow-alt-circle-right ml-2"></i>
</a>
Expand All @@ -21,15 +21,17 @@ <h2 class="mb-5">Streamline the management of the configurations that live on yo

<h2 class="mb-5">Why Jikkou?</h2>

[Jikkou](https://github.com/streamthoughts/jikkou) is an open-source tool to help you automate the
management of the configurations that live on your [Apache Kafka](https://kafka.apache.org/documentation/) clusters.
It was developed by Kafka ❤️ to make daily operations on an Apache Kafka cluster simpler for both **developers** and **administrators**.
**[Jikkou](https://github.com/streamthoughts/jikkou)** (jikkō / 実行) is an open-source tool designed to provide an efficient and easy way to
manage, automate, and provision resource configurations for Kafka, Schema Registry, etc.

It can efficiently manage configuration changes for **Topics**, **ACLs**, **Quotas** and more with the use of **_resource definition files_**.
It is also applicable to quickly replicate the configuration of a production cluster to another with a few command lines or to initialize a new cluster for testing purpose.
Developed by Kafka ❤️, Jikkou aims to streamline daily operations on [Apache Kafka](https://kafka.apache.org/documentation/),
ensuring that platform governance is no longer a boring and tedious task for both **Developers** and **Administrators**.

_Resource definition_ are standard [YAML](https://yaml.org/) files which are easy to create, version, share, and publish.
For this reason, Jikkou is usually used part of CI/CD pipelines allowing you to version and ship your Apache Kafka resources directly from Git (more on [GitOps](https://about.gitlab.com/topics/gitops/)).
Jikkou enables a declarative management approach of **Topics**, **ACLs**, **Quotas**, **Schema** and even more with the use of YAML files called **_Resource Definitions_**.

Taking inspiration from `kubectl` and Kubernetes resource definition files, Jikkou offers an intuitive and user-friendly approach to configuration management.

Jikkou can be used on on-premise Apache Kafka, [Aiven](https://aiven.io/kafka), and [Confluent Cloud](https://www.confluent.io/confluent-cloud/).

Jikkou is distributed under the [Apache 2.0 license](http://www.apache.org/licenses/LICENSE-2.0). Apache, Apache Kafka, Kafka, and associated open source project names are trademarks of the Apache Software Foundation.

Expand Down
Loading

0 comments on commit b9bec9a

Please sign in to comment.