Skip to content

Instantly share code, notes, and snippets.

@aslakknutsen
Created October 5, 2016 20:42
Show Gist options
  • Save aslakknutsen/703fa3336c96fbfcaaf357c01e72d1ad to your computer and use it in GitHub Desktop.
Save aslakknutsen/703fa3336c96fbfcaaf357c01e72d1ad to your computer and use it in GitHub Desktop.
almighty tech overview
package main
type CoreService interface {
}
func (c CoreService) RegisterService(service Service) {
// RegisterWorKitems
// Add to Service Register
}
func (c CoreService) RegisterIntegrationService(service Service) {
// Register auto activation on enabled service
}
// GiveMeEnabledServicesFor UI support for dynamically loading
func (c CoreService) GiveMeEnabledServicesFor(project string) []Service {
}
Repo(GitHub) -> WebHook Push -> CodeHostingService -> Commit(branch/repo) -> BuildCodeHostingIntegrationService -> BuildRequest -> BuildService -> |SPI| -> |provider| OpenShift Pipeline
WIT Core bus WIT Core bus
Build(state active) <- <- <-
BuildArtifact
BuildTestArtifact
* <- WIT Core bus
func StartCore() {
BuildService{}.Register(this)
StartAndListen() // live
}
1. BuildService start (connect to bus, expose APIs, register your self in service registry)
2. ServiceRegistry register
2.1. WorkItemService register Types
2.2. API Gateway expose, network breaker
x. ServiceRegistry deregister (soft)
4. User enables build on Project
5. ServiceRegister lookup UI
type Service interface {}
type IntegrationService interface {}
func BuildMain() {
CoreClient.RegisterService(Builderivce{})
StartandListen()
}
type BuildService struct {
// Backend
WorkItemTypes []WorkItemType{
WorkItemType{Name: "BuildRequest"},
WorkItemType{Name: "BuildResult"},
}
ExposedAPI ExposedAPI{JSONSchema: "https://buildservice.something/schema", EndpointURL: net.URL}
ExposedSPI ExposedSPI{JSONSchema: "https://buildservice.something/spi/schema", EndpointURL: net.URL}
// Frontend
UIExtensionBundle net.URL
}
type PlannerService struct {
WorkItemTypes []WorkItemType{
WorkItemType{Name: "Experience"},
WorkItemType{Name: "Feature"},
}
}
type BuildPlannerIntegrationService struct {
FromSerivce PlannerService
ToSerivce BuildService
}
type WorkItemType struct {
Name string
}
type ExposedAPI struct {
JSONSchema string
}
type Action struct {
Name string
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment