{"id":38719122,"url":"https://github.com/pavedroad-io/eventbridge","last_synced_at":"2026-01-17T11:06:06.498Z","repository":{"id":46350285,"uuid":"381170203","full_name":"pavedroad-io/eventbridge","owner":"pavedroad-io","description":"Ingest data from all major cloud platforms via events, API, or polling interfaces.  Then filter, transform, and process generating workflows or trigger action on other clouds and frameworks.","archived":false,"fork":false,"pushed_at":"2021-11-07T19:17:49.000Z","size":30022,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-11-15T01:14:33.641Z","etag":null,"topics":["argo-events","argo-workflows","data-platform","data-processing","event-emitter","event-management","event-sourcing","go","golang","kubernetes"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pavedroad-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-06-28T21:55:44.000Z","updated_at":"2022-02-06T20:52:05.000Z","dependencies_parsed_at":"2022-09-10T23:31:42.902Z","dependency_job_id":null,"html_url":"https://github.com/pavedroad-io/eventbridge","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/pavedroad-io/eventbridge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pavedroad-io%2Feventbridge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pavedroad-io%2Feventbridge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pavedroad-io%2Feventbridge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pavedroad-io%2Feventbridge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pavedroad-io","download_url":"https://codeload.github.com/pavedroad-io/eventbridge/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pavedroad-io%2Feventbridge/sbom","scorecard":{"id":723902,"data":{"date":"2025-08-11","repo":{"name":"github.com/pavedroad-io/eventbridge","commit":"1e3e34396bbe9942c20d2e8b89d21391ba224ab9"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.5,"checks":[{"name":"Code-Review","score":0,"reason":"Found 1/27 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: eventbridge:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Creative Commons Zero v1.0 Universal: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: manifests/Dockerfile:3: pin your Docker image by updating golang:latest to golang:latest@sha256:9e56f0d0f043a68bb8c47c819e47dc29f6e8f5129b8885bed9d43f058f7f3ed6","Info:   0 out of   1 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 12 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"21 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2021-0061 / GHSA-r88r-gmrh-7j83","Warn: Project is vulnerable to: GO-2020-0036 / GHSA-wxc4-f4m6-wwqv","Warn: Project is vulnerable to: GO-2022-0968 / GHSA-gwc9-m7rh-j2ww","Warn: Project is vulnerable to: GO-2021-0356 / GHSA-8c26-wmh5-6g9v","Warn: Project is vulnerable to: GO-2024-2961","Warn: Project is vulnerable to: GO-2023-2402 / GHSA-45x7-px36-x8w8","Warn: Project is vulnerable to: GO-2024-3321 / GHSA-v778-237x-gjrc","Warn: Project is vulnerable to: GO-2025-3487 / GHSA-hcg3-q754-cr77","Warn: Project is vulnerable to: GO-2022-0288","Warn: Project is vulnerable to: GO-2022-0969 / GHSA-69cg-p879-7622","Warn: Project is vulnerable to: GO-2022-1144 / GHSA-xrjj-mj9h-534m","Warn: Project is vulnerable to: GO-2023-1571 / GHSA-vvpx-j8f3-3w6h","Warn: Project is vulnerable to: GO-2023-1988 / GHSA-2wrh-6pvc-2jm9","Warn: Project is vulnerable to: GO-2023-2102 / GHSA-4374-p667-p6c8","Warn: Project is vulnerable to: GHSA-qppj-fm5r-hxr3","Warn: Project is vulnerable to: GO-2024-2687 / GHSA-4v7x-pqxf-cx7m","Warn: Project is vulnerable to: GO-2024-3333","Warn: Project is vulnerable to: GO-2025-3503 / GHSA-qxp5-gwg8-xv66","Warn: Project is vulnerable to: GO-2025-3595 / GHSA-vvgc-356p-c3xw","Warn: Project is vulnerable to: GO-2022-0493 / GHSA-p782-xgp4-8hr8","Warn: Project is vulnerable to: GO-2022-1059 / GHSA-69ch-w2m2-3vjp"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-22T12:11:03.643Z","repository_id":46350285,"created_at":"2025-08-22T12:11:03.643Z","updated_at":"2025-08-22T12:11:03.643Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28506597,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T10:25:30.148Z","status":"ssl_error","status_checked_at":"2026-01-17T10:25:29.718Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["argo-events","argo-workflows","data-platform","data-processing","event-emitter","event-management","event-sourcing","go","golang","kubernetes"],"created_at":"2026-01-17T11:06:06.348Z","updated_at":"2026-01-17T11:06:06.416Z","avatar_url":"https://github.com/pavedroad-io.png","language":"Go","readme":"\n# Working with your new Eventbridge microservice\n\nThis micro service implements the go worker pool pattern.  It consists of three\nmajor components: the scheduler, a dispatcher, and a pool of workers.\n\nThe scheduler connects to the dispatcher via four go channels.  A Job channel\nforwards Jobs to the dispatcher, and a Results channel reads replies.  Both\nof these channels execute as separate goroutines.  A Done channel reads a\nboolean (true) and supports graceful shutdowns initiated by the application.\nAn interrupt channel supports graceful or forceful shutdowns undertaken by\nthe host operating system.\n\nThe dispatcher connects to the workers using the same paradigm but with four\nindependent channels. Each worker executes as its own goroutine.\n\n```bash\n                                       +-----------+\n                                  +\u003c--\u003e| Worker(1) |\n                                  |    +-----------+\n +-------------+    +-------------+\n |             |    |             |    +-----------+\n | Scheduler   |\u003c--\u003e| Dispatcher  |\u003c--\u003e| Worker(2) |\n |             |    |             |    +-----------+\n +-------------+    +-------------+          :\n                                  |          :\n                                  |    +-----------+\n                                  +\u003c--\u003e| Worker(n) |\n                                       +-----------+\n```\n\n## Preflighting\n\n*New in version v0.6.0alpha for roadctl*\n\nThe preflight.sh script ensures that the following required components\nare installed:\n\n- An initialized git repository exists\n- The user.name and user.email are set in your git configuration\n- A GitHub Personal Access Token is available in the GH_ACCESS_TOKEN env variable\n- A .gitignore file with entries\n- An initialized blueprints repository\n\nIt doesn't generate a git tag; pick your own. Once preflight.sh\nsuccessfully executes, a \".pr_preflight_check\" is created.  Until this\nfile exists, Make will always attempt to run preflight.sh.\n\nIf you are running a version prior to v0.6.0alpha, you may run preflight.sh\nby hand in the top level of your go microservice package with:\n\n```bash\ndev/preflight.sh\n```\n\n## Go interfaces\n\nA go interface acts a lot like an object-oriented class with no variables.\nIt defines the methods that a Go type must implement for the defined\ninterface type.   In the example below, a Go type must fulfill each of the\nfunction signatures to be considered Scheduler.\n\n```go\ntype Scheduler interface {\n  // Data methods\n  GetSchedule() (Scheduler, error)\n  UpdateSchedule() (Scheduler, error)\n  CreateSchedule() (Scheduler, error)\n  DeleteSchedule() (Scheduler, error)\n\n  // Execution methods\n  Init() error\n  SetChannels(chan Job, chan Result, chan bool, chan os.Signal)\n  Shutdown() error\n  //Status()\n\n  // Status methods\n  Metrics() []byte\n}\n```\n\nThe httpScheduler.go provides an example implementation of the scheduler\ninterface.\n\nThis blueprint provides the following abstractions via Go interfaces:\n\n--\n\n| Abstraction | Description |\n| ----------- | ----------- |\n| Job         | A task executed by a worker |\n| Result      | Is the result of a Job |\n| Scheduler   | A custom scheduler that sends Jobs and reads Results (optional) |\n| Metric      | Custom metrics for a scheduler or worker |\n\n## HTTP worker pool example\n\nThis example implements a simpler scheduler that takes a list of URLs and\nforwards them to the dispatcher every N seconds.  It defines an httpJob\ntype that implements the Job interface.  It includes a Go context.  A\ncontext allows the scheduler to send additional information, set execution\ndeadlines, or cancel the request.  **Including a Go context in your Job\nis highly recommended.**\n\n```go\ntype httpJob struct {\n  ctx           context.Context\n  id            uuid.UUID\n  JobType       string\n  client        *http.Client\n  clientTimeout int\n  // FIX to errors or custom errors\n  jobErrors []string\n  jobURL    *url.URL\n}\n```\n\n## Files\n\nGenerated files are prefixed with the name you define for your microservice.  For example, if you name your microservice \"eventCollector,\" as in this example, your generated files will start with that name.\n\n--\n\n| Name | Description |\n| ---- | ----------- |\n| eventCollectorApp.go | Rest API endpoint handlers and manager for dispatcher and the scheduler |\n| eventCollectorDispatcher.go | Manages worker pool |\n| eventCollectorDoc.go | Used to generate swagger documentation |\n| eventCollectorHook.go | Provides pre/post hooks for customizing application |\n| eventCollectorJob.go | Job interface definition |\n| eventCollectorMain.go | Main entry point for starting application |\n| eventCollectorMetric.go | Metric collector interface definition |\n| eventCollectorResult.go | Result interface definition |\n| eventCollectorScheduler.go | Scheduler interface definition |\n| ---- | ----------- |\n| httpJob.go | Sample Job implementation for an HTTP task |\n| httpResult.go | Sample Result implementation for an HTTP task |\n| httpScheduler.go | Simple scheduler example for HTTP tasks |\n\n--\n\n## Rest API\n\nRest APIs follow the Kubernetes convention.  You define the API version\nand namespace in your definitions file, for the following output format:\ne.g. /api/1.0.0/pavedroad.io\\/eventCollector\\/\\[resource name]\n\n```bash\n/api/version/namespace/name/resource\n```\n\nThis blueprint generates the following endpoints:\n\n```bash\n/api/version/namespace/name/microservice-name/liveness\n/api/version/namespace/name/microservice-name/readiness\n/api/version/namespace/name/microservice-name/metrics\n/api/version/namespace/name/microservice-name/jobs\n/api/version/namespace/name/microservice-name/scheduler\n/api/version/namespace/name/microservice-name/management\n```\n\nThe liveness and readiness endpoints provide hooks for customizing\nKubernetes Pod life cycle events.  The metrics endpoint provides an\naggregated response for any Metric interfaces defined plus the standard\nmetrics for the dispatcher.  The jobs and scheduler endpoints support\nmodifying the jobs currently defined or changing the schedule of the\nscheduler.\n\n### Versioning information\nThe make file sets three versioning variables; VERSION, BUILD, and GIT_TAG.  These are passed go the go compiler and printed when the -v flag is passed on the command line.  Output is formatted as JSON:\n\n    $ films -v\n    {\"Version\": \"1.0.0\", \"Build\": \"8755e7f\", \"GitTag\": \"v0.0alpha\"}\n\nVERSION := 1.0.0\n----------------\nThe version variable is set based on the value you enter in your definitions file.\n\nBUILD := $(shell git rev-parse --short HEAD)\n--------------------------------------------\nThe build is set to the commit ID of your current git HEAD.\n\nGIT_TAG := $(shell git describe)\n--------------------------------\nGIT_TAG set using the most recent tag if any.  You can add a tag with:\n    git tag -a \"mytag\" -m \"message about the tag.\"\nGit push doesn't include tags.  To push tags to the origin use:\n    git push origin --tag\n\n## roadctl\nThe roadctl command is modeled after kubectl.\nUse \"roadctl help\" for a list of top level commands.\nThis may be different for a specific command or it's sub-commands.\n\n### Top level help\n    roadctl help\n\nGeneral help output:\n\n```\nroadctl allows you to work with the PavedRoad CNCF low-code environment and the associated CI\n\n  Usage: roadctl [command] [TYPE] [NAME] [flags]\n\n  TYPE specifies a resource type\n  NAME is the name of a resource\n  flags specify options\n\nUsage:\n  roadctl [command]\n\nAvailable Commands:\n  apply       Apply configuration to named resource\n  completion  Generate completion scripts on stdout\n  config      Manage roadctl global configuration options\n  create      Create a new resource\n  delete      Delete a resource\n  deploy      Deploy a service\n  describe    Describe provides detailed information about a resource\n  doc         Generate documentation for your service\n  edit        Edit the configuration for the specified resource\n  events      View events\n  explain     Return documentation about a resource\n  get         Get an existing object\n  help        Help about any command\n  init        Initialize roadctl development environment\n  logs        Return logs for a resource\n  replace     Delete and recreate the named resource\n  version     Print the current version\n\nFlags:\n      --config string      Config file (default is $HOME/.roadctl.yaml)\n      --debug string       Debug level: info(default)|warm|error|critical (default \"info\")\n      --format string      Output format: text(default)|json|yaml (default \"text\")\n  -h, --help               help for roadctl\n      --password string    HTTP basic auth password\n      --blueprints string   Set the location of the directory holding roadctl blueprints\n      --token string       OAUTH access token\n      --user string        HTTP basic auth user name\n\nUse \"roadctl [command] --help\" for more information about a command.\n```\n\n### Specific command\n    roadctl get --help\n\nSpecific help output:\n\n```\nReturn summary information about an existing resource\n\nUsage:\n  roadctl get [flags]\n\nFlags:\n  -h, --help   help for get\n\nGlobal Flags:\n      --config string      Config file (default is $HOME/.roadctl.yaml)\n      --debug string       Debug level: info(default)|warm|error|critical (default \"info\")\n      --format string      Output format: text(default)|json|yaml (default \"text\")\n      --password string    HTTP basic auth password\n      --blueprints string   Set the location of the directory holding roadctl blueprints\n      --token string       OAUTH access token\n      --user string        HTTP basic auth user name\n```\n\n## Generating your service\nThe roadctl CLI is used to create new services.\nIt has two fundamental concepts:\n\n- blueprints: Contain logic need to generate a service\n- definitions: Define your custom logic, integrations, and organizational information\n\nA sample definitions is available to help you get started.\n\n### Initialize blueprint repository\n    roadctl init\n\n### List available blueprints\n    roadctl get blueprints\n\n### Create a copy of the sample definition\n    roadctl describe blueprints datamgr \u003e myservice.yaml\n\nNote: edit myservice.yaml to customize your create below.\n\n### Get definitions of attributes in your myservice.txt\n    roadctl explain blueprints datamgr \u003e myservice.txt\n\n### Create your microservice\n    roadctl create blueprints datamgr -f myservice.yaml\n### Build and test\nExecuting make will compile and test your service.\nOptionally, you can do `make compile` followed by `make check`.\n\n    make\n\n## Directories\n\n| Name | Contents |\n| --------- | -------- |\n| artifacts | Outputs from static code analysis and tests |\n| assets | Generate assets such as images |\n| builds | Executables for supported platforms, Mac/Linux x86/amd64 |\n| dev | Generated helper scripts and sample data |\n| docs | Generated documentation |\n| logs | Logs generated by the microservice |\n| manifests | Docker and docker-composes manifest |\n| manifests/kubernetes | Kubernetes manifests for deploying this microservice |\n| vendor | Vendor dependencies |\n\nUse **make help** to get a list of options:\n\n    make help\n\nHelp output:\n\n```\n  Choose a command run in films:\n\n  compile         Compile the binary.\n  clean           Remove dep, vendor, binary(s), and execute go clean\n  build           Build the binary for linux / mac x86 and amd\n  deploy          Deploy image to repository and k8s cluster\n  install         Install packages or main\n  check           Start services and execute static code analysis and tests\n  show-coverage   Show go code coverage in browser\n  show-test       Show sonarcloud test report\n  show-devkit     Show documentation for Devkit\n  fmt             Run gofmt on all code\n  simplify        Run gofmt with simplify option\n  k8s-start       Start local microk8s server and update configurations\n  k8s-stop        Stop local k8s cluster and delete skaffold deployments\n  k8s-status      Print the status of the local cluster up or down\n  help            Print possible commands\n```\n\n## Skaffold CI/CD\nSkaffold is integrated into your project.  You can use the following commands:\n\n### development mode\nMonitors source code and when it changes builds and pushes a new image\n\n```bash\nskaffold dev -f manifests/skaffold.yaml\n```\n### run\nBuild and push the image when executed\n\n```bash\nskaffold run -f manifests/skaffold.yaml\n```\n\n### delete\nDeletes all deployed resources\n\n```bash\nskaffold delete -f manifests/skaffold.yaml\n```\n\n## Linters\nThree lint applications are integrated to assist in code reviews.\n\n- Go lint checks for conformance with effective go programming recommendations and Go code review suggestions.\n- Gosec tests your code against go recommended security practices\n- Govet inspects code for constructs that might break.\n- FOSSA license scanner\n- SonarCloud scanner\n\nThe location of each lint's output is below along with links to the rules they enforce.\n\n### golint\nartifacts/lint.out\n[Effective Go](https://golang.org/doc/effective_go.html)\n[Go code review comments](https://github.com/golang/go/wiki/CodeReviewComments)\n\n### gosec\nartifacts/gosec.out\n[Rules](https://securego.io/docs/rules/rule-intro.html)\n\n### go vet\nartifacts/govet.out\n[Go vet rules](https://golang.org/cmd/vet/)\n\n### SonarCloud and FOSSA\ndocs/service.html\nBadges for both with links to details can be found in the generated\nservice.html in the docs directory.\n\n# SonarCloud\nSonarCloud provides free code analysis for open-source projects.\nNote, Shield name is the text required in the definitions file.\nBy default, the following tools are included:\n\nShield name | Description\n----------- | --------------------------------------------------\nreliability_rating | Grade for code reliability, i. e. \"A, B .... F\"\nquality gate | A score of release ability, passing or failing\nbugs | Coding error that needs to be fixed\ncode_smells | SCA errors/warnings and comments with TODO\ncoverage | Test coverage percentage for new code\nduplicate_line_density | Percent of repeating code lines\nncloc | Total number of lines of code\nalert_status | Quality gate status passing or failing\nsequrity_rating | A grade for your security status, i.e. \"A,B...F\"\nvulnerabilities | Number of security threats in your code\nsqale_rating | Maintainability of code grade, i. e. \"A,B...F\"\nsqale_index | Estimate of time to address technical  debit\n\n\nSupport for SonarCloud is pre-integrated in the generated Makefile.\n\nYou need to set a valid sonarcloud token before executing make in\nyour .bashrc file:\n\nexport SONARCLOUD_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n\n## Getting a token\nGo to https://sonarcloud.io.  Then login with your GitHub account.\n\nNext, go to https://sonarcloud.io/account/security/.\nIn the Generate Tokens dialog, enter a name for your token\nand click the \"Generate\" button.\n\n\n## sonar-project.properties\n\nControls the executing of an analysis run.  Documentation is\navailable [here](https://docs.sonarqube.org/latest/analysis/analysis-parameters/).\nThe default configuration provides extended support for code coverage and go lint reporting.\n\n\n## Run by hand using\nThe sonarcloud.sh is provided for executing an analysis by hand.\n\n```bash\nsonarcloud.sh\n\n```\n# FOSSA\nFOSSA provides free license scanning for open-source projects.   The [fossa-cli](https://github.com/fossas/fossa-cli/) documentation is covers basic usage.  Support for fossa is pre-integrated in the generated Makefile.  You need to set a valid fossa token before executing make in your .bashrc file:\n\nexport FOSSA_API_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXX\n\n## Getting a token\n\nGo to https://app.fossa.com.  Then login with your GitHub account.\n\nNext, go to https://app.fossa.com/account/settings/integrations/api_tokens.\nUse the \"Add another Token\" button to create your token.\n\n\n## Run by hand using\n\n```bash\nFOSSA_API_KEY=$(FOSSA_API_KEY) fossa analyze\n```\n\n# GitHub token\n\nGo to https://github.com and login.  Then go to, https://github.com/settings/tokens.\nUse the \"Generate new token\" button to create your new token.\n\n```bash\n# add line to your .bashrc\nexport ACCESS_TOKEN=####################\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpavedroad-io%2Feventbridge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpavedroad-io%2Feventbridge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpavedroad-io%2Feventbridge/lists"}