Coder Social home page Coder Social logo

spineeventengine / chat-bot Goto Github PK

View Code? Open in Web Editor NEW
0.0 6.0 1.0 2.23 MB

Spine-based Google Chat bot that monitors the build statuses of Spine repositories and notifies the developers via Google Chat.

License: Apache License 2.0

Java 84.79% Kotlin 15.21%
spine google-chat-bot java event-sourcing ddd

chat-bot's People

Contributors

yuri-sergiichuk avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

xsavikx

chat-bot's Issues

Add GitHub actions checks support

Currently, only Travis CI API is supported by the ChatBot. While we're migrating our CI builds to GitHub Actions it should be a good idea to add a way to monitor Actions builds as well.

Consider configuring Structured Logs for Cloud Run

Cloud Run provides logs gathered from the System.out and System.err out of the box, but the logs are treated by the Stackdriver as plain text messages.

In order to improve the debug and maintenance capabilities, we need to configure Structured logging. The structured (JSON) logs are ingested by the Stackdriving giving us better filtering and searching functionality. E.g. one can find logs by the severity level or for some specific logger using the structured logging.

Update GitHub token embedded into Cloud Build config

Cloud Build uses GitHub token to access GitHub packages inside builds. See config.

The token is configured as GCP secret and can be easily updated from the GCP secret manager console.

The current token should be changed from my personal token to someone else's, or even better to a token of a "machine user".

Delegate command posting/creation logging to the framework

We discussed this matter with @armiol. We'd probably have extension to the System Context which would log commands automatically at the specified level.

For now, I would suggest placing the logging into the place which handles the command, not the one which generates it.

Originally posted by @alexander-yevsyukov in #1

As mentioned, it would be great to have separate command posting/creation logging available as an extension to the framework and we should consider either implementing the extension or moving towards the extension as soon as it is available as part of the framework instead of relying on our custom logs.

Same repo notifications in different threads

As we've seen with the Bootstrap repo, the bot is currently sending notification messages to different threads.

As per our initial requirements, the bot should send messages about the same repo to the same thread.

Hide Cloud Run service from the internet

While the service is not used outside of the deployed environment we should consider reconfiguring the deployment in order to allow only internal GCP access to the endpoints.
With such a config we'll eliminate a chance of accessing the service buy non-authorized parties.

Find a way to use same Spine versions source for `buildSrc/build.gradle.kts` and `deps.kt`

While we're using Kotlin DSL pre-compiled plugins, we currently have bootstrap version declared in one place and gcloud version declared in the other.
We're actually facing a chicken and an egg issue here, cause we're compiling deps.kt using buildsrc/build.gradle.kts and thus are not able to use versions from deps.kt in the build script.
Also, in order to be able to configure plugins inside pre-compiled script plugins such as java-convention.gradle.kts, we must declare all the dependent plugins inside the build.gradle.kts.

Maybe there could be some way to extract Spine versions into a separate .properties file and read its content from both build.gradle.kts and deps.kt in order to have the same source of versions for both. An easy approach to extract smth like version.gradle.kts as we have in the main repo does not work, we're not able to propagate things from extra to deps.kt.

Implement distributed delivery strategy

The current version of the application uses local delivery in both Production and Tests.

In order to be able to scale the app properly in the cloud environment, we should consider implementing a distributed delivery strategy and shard observer based on some queueing mechanism, e.g. PubSub or Cloud Tasks.

Consider splitting `google-chat-bot` module into several well-defined modules

Why are we having only one module in this project? From the Java code I see client and server. Aren't they are modules?

Please arrange a project module for each Bounded Context.

Originally posted by @alexander-yevsyukov in #1

It is a good idea to split our single Gradle module into sub-modules with a well-defined separation. As mentioned, it may be a good idea to have separate modules for each Bounded Context, but we should consider talking it through and defining a correct policy for such modules separation in order to be able to reuse the same concept.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.