{"id":19109256,"url":"https://github.com/typo3/darth","last_synced_at":"2025-06-30T10:36:03.378Z","repository":{"id":25477113,"uuid":"95780499","full_name":"TYPO3/darth","owner":"TYPO3","description":"PHP-based release and packaging CLI application for TYPO3 Core releases","archived":false,"fork":false,"pushed_at":"2025-05-21T11:11:54.000Z","size":187,"stargazers_count":12,"open_issues_count":4,"forks_count":8,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-05-21T12:26:16.027Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TYPO3.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":"2017-06-29T13:27:33.000Z","updated_at":"2025-05-21T11:11:58.000Z","dependencies_parsed_at":"2024-11-09T04:20:20.342Z","dependency_job_id":"f84e9ee9-1d73-4abd-be68-9b3e6e53d6ac","html_url":"https://github.com/TYPO3/darth","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/TYPO3/darth","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TYPO3%2Fdarth","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TYPO3%2Fdarth/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TYPO3%2Fdarth/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TYPO3%2Fdarth/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TYPO3","download_url":"https://codeload.github.com/TYPO3/darth/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TYPO3%2Fdarth/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262756796,"owners_count":23359584,"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":[],"created_at":"2024-11-09T04:19:42.616Z","updated_at":"2025-06-30T10:36:03.349Z","avatar_url":"https://github.com/TYPO3.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Darth - Building TYPO3 Releases\n\nTYPO3 Darth is a command line application to build and publish releases, specifically, but not only for TYPO3 Core.\n\n## The steps to a TYPO3 release\n\n### 1. Initializing the local setup\n\nSets up the working local repository by removing all previous set ups and re-cloning the remote repository.\n\n    ./bin/darth init\n\n\n### 2. Release (Commit and Tag to the Mono-Repository)\n\nChecks out a certain branch (based on the version), creates a signed commit via GPG key and pushes this to the\nremote repository, and auto-approves via Gerrit, our Review System. Once the commit has arrived, a tag is created\nas well for this commit and pushed to git (ensure that you have rights to add tags to the remote repository directly).\n\n    ./bin/darth release [version]\n\n        [version] can be either \"11.5.3\" or \"11.5\" for detecting the branch and the next version (of no specific version is set)\n\n        --sprint-release    If this option is set, the version is considered as sprint release (e.g. 9.1.0)\n        --commitMessage -m  An additional information to the commit message of the release commit.\n        --interactive   -i  Enabled by default, to verify that the right version and branch is used.\n        --dry-run           No push to the remote git repository and gerrit is done, making all changes only in the local repository.\n\n\n### 3. Package (Artifacts)\n\nCreates artifacts (tar.gz and .zip) based on a specific version in the local git repository by calling `git-archive`,\n`composer install` and removing left-over test and development files.\n\nThe artifacts are signed via GPG, and a README.md file is also created that contains a generated ChangeLog since the last\nrelease, which is also signed via GPG.\n\nAll created files are put in the publish/[version]/artefacts folder.\n\n    ./bin/darth package [version] [revision]\n\n        [version] Used as naming scheme \"11.5.3\" for creating a package for \"typo3_src-11.5.3.*\" artefacts\n        [revision] The revision to be used, if left empty, the version is assumed to be a tag.\n\n        --type  Additional information if it is a snapshot release, security release. Will be added to README.md\n                A common use-case is \"--type=\"Long-Term-Support\" for e.g. 12.4.0\n\n    ./bin/darth package 11.5.3\n\n### 4. Publish (Upload to a remote server)\n\nUploads the artifacts of a specific version to a Azure blob storage container (the container must exist).\n\nAll created files are put in the publish/[version]/artefacts folder.\n\n    ./bin/darth publish [version]\n\n        --type  Additional information if it is a snapshot release, then adds a \"snapshot\" to the folder.\n\n    ./bin/darth publish 11.5.3\n\n### 5. Announce (Create a new entry on get.typo3.org)\n\nUses the REST API of get.typo3.org to announce download packages, checksums, news link and\nrelease note text on get.typo3.org. Checksums are recalculated from local\nrelease packages in `publish/[version]/artefacts`.\n\n    ./bin/darth announce [version] [news-link]\n\n        --sprint-release Whether current release is a sprint release\n        --force Whether to override existing information on get.typo3.org\n        --elts Whether the release is an ELTS release, defaults to false\n        --interactive Whether to pause execution in order to adjust release notes manually\n\n    ./bin/darth announce 11.3.0 https://new.typo3.org/article/typo3-1130-released/ --sprint-release\n    ./bin/darth announce 12.4.7 https://new.typo3.org/article/typo3-1247-and-11539-released/\n\n### 6. Create Security Advisories (to https://github.com/FriendsOfPHP/security-advisories)\n\nIn case the current release contains security fixes, these have to be prepared and announced\nfor https://github.com/FriendsOfPHP/security-advisories. The workflow is the following:\n\n    ./bin/darth security [versions separated by comma]\n    ./bin/darth security 9.5.2,8.7.21,7.6.32\n\nThen merge generated files in `security/` directory manually to `sensiolabs/security-advisories` package.\n\n## Configuration\n\nSee `.env.dist` which sets most configuration options already, however, the remote connection string for uploading\nartifacts must be set in a custom `.env` file.\n\nInformation when updating files before commiting a release, as well as files excluded for packaging are found\nwithin `conf/release.yaml`.\n\nEnsure that you have all tools (shasum, gpg, composer) installed locally, also that you have a proper GPG key\nin your git configuration (`git config user.signingkey`, can also be set globally).\n\nFor MacOS users please install gnu-tar (`brew install gnu-tar`) and use that binary in your custom `.env` configuration\nto ensure compatibility across all destination servers.\n\n## Credits\nInitially developed in PHP by Benni Mack, derived from Phing deployment scripts by Oliver Hader and Benni Mack, which\nagain derived from a Bash script from Michael Stucki.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftypo3%2Fdarth","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftypo3%2Fdarth","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftypo3%2Fdarth/lists"}