Symfony application for release notes, download redirects and JSON API for releases.
Composer installation, database creation or migration are automatically done at startup. So simply run
ddev start
To build the Composer repository (Satis) served at composer.typo3.org run
ddev exec ./bin/console satis:build
and start hacking. To head to the project in the browser run
ddev launch
- create and edit
.env.localto overwrite vars from.env.dist - execute
composer install - execute
php ./bin/console doctrine:schema:createto create database schema - execute
php ./bin/console satis:buildto build the Composer repository
php ./bin/console doctrine:schema:createphp ./bin/console doctrine:migrations:migratephp ./bin/console doctrine:fixtures:loadFor DDEV installations prepend ddev before the composer commands. The
functional tests need the database.
composer ci # all checks and tests that CI runs
composer ci:static # JSON, YAML and PHP lint, coding standards, PHPStan
composer ci:php:cs-fixer
composer ci:php:stan
composer ci:tests # unit and functional tests
composer ci:tests:php:unit
composer ci:tests:php:functional
composer fix # apply the coding standardsThe tools in tools/ have no lock file in git, so CI installs the newest
version of each tool. If a check passes locally but fails in CI, update the
tools first:
composer tools:setup:updateChanges and commits are made in the first place to the branch develop which
will be deployed to development and staging site see later. Please create
pull request always to this branch and not directly to production. Every commit
is checked by our continous integration workflow on Github to ensure no
breaking changes e.g. in the API.
After a pull request is merged it gets automatically deployed and more manual
checks and tests can be done before cherry picking the commit to the production
branch which is deployed then to the production site.
Rules for language, texts and commit messages are in AGENTS.md. They apply to people and AI agents.
In the dev context the user developer with the password password has the
role ROLE_ADMIN. Use it for:
- the API: send it as HTTP basic authentication
- the administration: log in at
/login, for example https://get.typo3.org.ddev.site/login, and open/admin
The user is defined in config/packages/dev/security.yaml and exists only in
the dev environment.
To verify the download links generated by https://get.typo3.org/json you can
run the following command:
php ./bin/console app:download:missing:listThis will create the missing-downloads.yaml with the links to Sourceforge to get the missing packages from there.
In case authorization does not succeed the reason might be that the web server tries to handle the authentication and does not expose the information to the according PHP process - it has been spotted on Apache/PHP-FCGID setups.
Add the following to the beginning of .htaccess:
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1Currently there are 4 Symfony environments defined:
- dev (for local development)
- test (for integration testing on Github)
- staging (for the staging server)
- prod (for the production server)
Additional configuration for the webserver can be found in the folder cnf.
All pushs to the branch production are automatically deployed to the production
site at get.typo3.org or composer.typo3.org.
SSH access is possible with the following command:
ssh get@get01.typo3server.ch
The deployments are implemented by Github Actions and Magallanes. Therefor the following secrets needs to be defined at Github:
- SSH_PRIVATE_KEY: the encrypted private ssh key to access the server
- SSH_PASSPHRASE: the passphrase to decrypt the private key
On the servers the files are located in the directory site and there are two
main folders where mage holds the deployed releases and shared contains
all shared data like database, satis files or the cache.
See also Magallanes Documentation.
If there are caching issues during new releases the following commands have to be executed at the server after the release announcement by Darth:
~/site/mage/current/bin/console cache:clear
~/site/mage/current/bin/console cache:warmup