{"id":34527636,"url":"https://github.com/eclipse-xfsc/task-sheduler","last_synced_at":"2026-05-30T04:31:21.043Z","repository":{"id":289369936,"uuid":"963960031","full_name":"eclipse-xfsc/task-sheduler","owner":"eclipse-xfsc","description":"The task service provides an HTTP interface for executing asynchronous (HTTP) Tasks and Task lists.","archived":false,"fork":false,"pushed_at":"2025-10-13T00:20:42.000Z","size":11649,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":7,"default_branch":"main","last_synced_at":"2026-05-12T10:20:22.385Z","etag":null,"topics":["opa","tsa"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eclipse-xfsc.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-10T13:28:20.000Z","updated_at":"2025-05-25T17:42:09.000Z","dependencies_parsed_at":"2025-05-25T18:42:34.979Z","dependency_job_id":null,"html_url":"https://github.com/eclipse-xfsc/task-sheduler","commit_stats":null,"previous_names":["eclipse-xfsc/task-sheduler"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/eclipse-xfsc/task-sheduler","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-xfsc%2Ftask-sheduler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-xfsc%2Ftask-sheduler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-xfsc%2Ftask-sheduler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-xfsc%2Ftask-sheduler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eclipse-xfsc","download_url":"https://codeload.github.com/eclipse-xfsc/task-sheduler/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-xfsc%2Ftask-sheduler/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33680522,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["opa","tsa"],"created_at":"2025-12-24T05:24:14.171Z","updated_at":"2026-05-30T04:31:21.037Z","avatar_url":"https://github.com/eclipse-xfsc.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![pipeline status](https://github.com/eclipse-xfsc/task-sheduler/badges/main/pipeline.svg)](https://github.com/eclipse-xfsc/task-sheduler/-/commits/main)\n[![coverage report](https://github.com/eclipse-xfsc/task-sheduler/badges/main/coverage.svg)](https://github.com/eclipse-xfsc/task-sheduler/-/commits/main)\n\n# Task Service\n\nThe task service provides an HTTP interface for executing asynchronous (HTTP) [Tasks](docs/task.md) and [Task lists](docs/task-list.md).\n\nIt is developed using the [Goa v3](https://goa.design/) framework.\n\n\u003e A helper script named `goagen.sh` can be found inside the root directory of\n\u003e the service. It can be used to generate the transport layer code from the\n\u003e Goa DSL definitions in the [design](./design) directory. The script should\n\u003e be executed everytime the design definitions are updated. It also generates\n\u003e updated OpenAPI documentation from the DSL.\n\n[OpenAPI Swagger Documentation](https://github.com/eclipse-xfsc/task-sheduler/-/blob/main/gen/http/openapi3.json). In the local docker-compose\nenvironment, the Swagger URL is available at http://localhost:8082/swagger-ui/\n\n### High-level Overview\n\n```mermaid  \nflowchart LR  \n\tA([client]) -- HTTP --\u003e B[Task API] \n\tsubgraph task\n        B --- C[(Storage)]\n        C --- E[Executor]\n        B --\u003e D[(Queue)]\n        D --\u003e E[Executor]\n\tend \n\tE --\u003e F[Policy]\n\tE --\u003e G[Cache]\n```\n\nTasks are created by clients making HTTP requests.\nIn order to create a Task, a TaskTemplate must be present in the Storage. The newly created tasks are\nadded to a Queue. Current implementation of the [Queue interface](internal/service/queue.go)\nis a persistent database. An executor component is retrieving tasks from the Queue for execution.\nClients receive an immediate response with the `taskID` for the created task and can later query\nthe state of task and retrieve its result either by directly querying the Cache\nservice, or by querying the task HTTP interface for task results.\n\n### Configuration\n\nThe task service is configured using the [Configuration File](./internal/config/config.go).\nAll configurations are expected as Environment variables specified in the\nconfiguration file. For managing the configuration data from ENV variables,\n[envconfig library](https://github.com/kelseyhightower/envconfig) is used.\n\n### More information\n* [Tasks](docs/task.md)\n* [Task lists](docs/task-list.md)\n* [Queue](docs/queue.md)\n* [Storage](docs/storage.md)\n\n\n### Cache events\n\nTask service is able to subscribe for events produced by the Cache service\nand create a Task for every received event. Current implementation uses\n[NATS](https://nats.io/) for messaging system.\n\n##### More information\n* [Cache Event Task](docs/cache-event-task.md)\n\n### Tests and Linters\n\nTo execute the units tests for the service go to the root project directory and run:\n```go\ngo test -race ./...\n```\n\nTo run the linters go to the root project directory and run:\n```go\ngolangci-lint run\n```\n\n### Build\n\n##### Local binary\nTo make the service binary locally, you can run the following command from the root\ndirectory (you must have [Go](https://go.dev/) installed):\n```shell\ngo build -o task ./cmd/task/...\n```\n\n##### Docker image\n\nYou can see the Dockerfile of the service under the [deployment](./deployment) directory.\nThere is one Dockerfile for use during local development with [docker-compose](./deployment/compose/Dockerfile) and one for\nbuilding an optimized production image: [deployment/docker/Dockerfile](./deployment/docker/Dockerfile).\n\n### Versioning\n\nThere is one global exported variable named `Version` in `main.go`. The variable is set\nto the latest tag or commit hash during the build process. You can look in the production\nDockerfile to see how the Version is set during build. The version is printed in the service\nlog on startup and can be used to verify which specific commit of the code is deployed.\n\n\u003e Version should *not* be set or modified manually in the source code.\n\n### Logging\n\nThe service outputs all logs to `stdout` as defined by the best practices in the Cloud Native\ncommunity. See here for more details [12 Factor App](https://12factor.net/logs).\nFrom there logs could be processed as needed in the specific running environment.\nThe standard log levels are `[debug,info,warn,error,fatal`] and `info` is the default level.\nIf you want to set another log level, use the ENV configuration variable `LOG_LEVEL` to set it.\n\n## Dependencies\n\nThe project uses Go modules for managing dependencies, and we commit the `vendor` directory.\nWhen you add/change dependencies, be sure to clean and update the `vendor` directory before\nsubmitting your Merge Request for review.\n```shell\ngo mod tidy\ngo mod vendor\n```\n\n[Dependencies](go.mod)\n\n## Deployment\n\n[Helm deployment documentataion](deployment/helm/README.md)\n\n## GDPR\n\u003chr/\u003e\n\n[GDPR](GDPR.md)\n\n## License\n\u003chr/\u003e\n\n[Apache 2.0 license](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-xfsc%2Ftask-sheduler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feclipse-xfsc%2Ftask-sheduler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-xfsc%2Ftask-sheduler/lists"}