{"id":13625027,"url":"https://github.com/typesafegithub/github-workflows-kt","last_synced_at":"2025-04-16T06:31:34.646Z","repository":{"id":36953936,"uuid":"439670569","full_name":"typesafegithub/github-workflows-kt","owner":"typesafegithub","description":"Authoring GitHub Actions workflows in Kotlin. You won't go back to YAML!","archived":false,"fork":false,"pushed_at":"2024-10-29T08:14:19.000Z","size":18857,"stargazers_count":520,"open_issues_count":35,"forks_count":24,"subscribers_count":8,"default_branch":"main","last_synced_at":"2024-10-29T09:31:31.009Z","etag":null,"topics":["dsl","github","github-actions","kotlin","kotlin-script","library","type-safe","workflows"],"latest_commit_sha":null,"homepage":"https://typesafegithub.github.io/github-workflows-kt/","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/typesafegithub.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","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},"funding":{"github":"krzema12","custom":"https://www.buymeacoffee.com/krzema12"}},"created_at":"2021-12-18T17:05:42.000Z","updated_at":"2024-10-29T08:14:23.000Z","dependencies_parsed_at":"2023-07-28T16:00:01.462Z","dependency_job_id":"596e5291-25da-44db-8145-abfb9ef4fb95","html_url":"https://github.com/typesafegithub/github-workflows-kt","commit_stats":{"total_commits":1700,"total_committers":25,"mean_commits":68.0,"dds":0.6488235294117647,"last_synced_commit":"8be4f087dbe9d55fa756b6f4c13a2d404f4576b2"},"previous_names":["krzema12/github-workflows-kt"],"tags_count":79,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typesafegithub%2Fgithub-workflows-kt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typesafegithub%2Fgithub-workflows-kt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typesafegithub%2Fgithub-workflows-kt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typesafegithub%2Fgithub-workflows-kt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/typesafegithub","download_url":"https://codeload.github.com/typesafegithub/github-workflows-kt/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223700187,"owners_count":17188264,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["dsl","github","github-actions","kotlin","kotlin-script","library","type-safe","workflows"],"created_at":"2024-08-01T21:01:49.993Z","updated_at":"2024-11-08T14:30:16.261Z","avatar_url":"https://github.com/typesafegithub.png","language":"Kotlin","funding_links":["https://github.com/sponsors/krzema12","https://www.buymeacoffee.com/krzema12"],"categories":["Start with Why?","Kotlin"],"sub_categories":[],"readme":"![Logo white](images/Logo-White.svg#gh-dark-mode-only)\n![Logo white](images/Logo-Black.svg#gh-light-mode-only)\n\n\u003c!-- maven coordinates --\u003e\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.github.typesafegithub/github-workflows-kt/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.github.typesafegithub/github-workflows-kt)\n[![Awesome Kotlin Badge](https://kotlin.link/awesome-kotlin.svg)](https://github.com/KotlinBy/awesome-kotlin)\n[![GitHub Repo stars](https://img.shields.io/github/stars/typesafegithub/github-workflows-kt)](https://star-history.com/#typesafegithub/github-workflows-kt\u0026Date)\n[![License](https://img.shields.io/github/license/typesafegithub/github-workflows-kt)](https://github.com/typesafegithub/github-workflows-kt/blob/main/LICENSE)\n[![github-workflows-kt @ kotlinlang.slack.com](https://img.shields.io/static/v1?label=kotlinlang\u0026message=github-workflows-kt\u0026color=blue\u0026logo=slack)](https://kotlinlang.slack.com/archives/C02UUATR7RC)\n\n[github-workflows-kt](https://github.com/typesafegithub/github-workflows-kt/) is a tool for generating\n[GitHub Actions workflow](https://docs.github.com/en/actions/using-workflows) YAML files in a **type-safe** script, helping you to\nbuild **robust** workflows for your GitHub projects without mistakes, with **pleasure**, in\n[Kotlin](https://kotlinlang.org/).\n\n\u003e _You won't go back to YAML!_\n\n### 💡 Idea\n\nWe're often surrounded by YAML configuration. It's a powerful format that provides simple syntax for defining\nhierarchical data, but it is sometimes used (abused?) to configure complicated scenarios which leads to complicated\nfiles that are difficult to write and maintain.\n\nWho among us hasn't accidentally used the wrong indentation, missed a possibility to extract a reusable piece of code,\nor been confused by ambiguous types? The power of a generic-purpose programming language would come in handy in these\ncases.\n\nWe're developing **github-workflows-kt** to solve these and other problems, so you can create GitHub Workflows with\nconfidence.\n\n### ✨ Benefits\n\n* **no indentation confusion** - Kotlin's syntax doesn't rely on it\n* **immediate validation** - catch bugs early during development, not during runtime\n* **strongly typed values** - no more confusion about what type is needed for a given parameter\n* **superb IDE support** - author your workflows in any IDE that supports Kotlin, with auto-completion and documentation\n  at your fingertips\n* **no duplication** - don't repeat yourself! Share common configuration using constant values, or define your own\n  functions to encapsulate logic\n* **fully featured language** - use the full power of Kotlin to generate workflows dynamically, randomly generate data,\n  or add custom validation. Defining workflow logic in Kotlin is currently experimental\n* **type-safe action bindings** - possible to use every action using auto-generated Kotlin bindings\n* integrates with [github-actions-typing](https://github.com/typesafegithub/github-actions-typing) to use typings\n  provided by action authors\n* [and more!](https://typesafegithub.github.io/github-workflows-kt/)\n\n## For more info please see [the documentation](https://typesafegithub.github.io/github-workflows-kt/)\n\n* [getting started](https://typesafegithub.github.io/github-workflows-kt/user-guide/getting_started/)\n* [API docs](https://typesafegithub.github.io/github-workflows-kt/api-docs/)\n* [how to contribute](https://github.com/typesafegithub/github-workflows-kt/blob/main/CONTRIBUTING.md)\n\n![teaser](https://github.com/typesafegithub/github-workflows-kt/blob/gh-pages/teaser-with-newest-version.svg)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftypesafegithub%2Fgithub-workflows-kt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftypesafegithub%2Fgithub-workflows-kt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftypesafegithub%2Fgithub-workflows-kt/lists"}