/get.typo3.org

Website for TYPO3's Download Area

Primary LanguagePHPGNU General Public License v2.0GPL-2.0

get.typo3.org

Symfony application for release notes, download redirects and JSON API for releases.

Development / Contributing

Installation and Setup

DDEV Local

Composer installation, database creation or migration are automatically done at startup. So simply run

ddev start

and start hacking. To head to the project in the browser run

ddev launch

Manual

  1. create and edit .env.local to overwrite vars from .env.dist
  2. execute composer install
  3. execute composer install -d satis/package-generator to setup Satis (optional)
  4. execute php ./bin/console doctrine:schema:create to create database schema

Database Creation and Migration

Database Creation

php ./bin/console doctrine:schema:create

Database Migration

php ./bin/console doctrine:migrations:migrate

Import Fixtures

php ./bin/console doctrine:fixtures:load

Testing

For DDEV installations prepend ddev before the composer commands.

composer test

composer test:php:cgl
composer test:php:lint
composer test:php:unit
composer test:php:functional

Commits and Pull Requests on Github

Changes 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.

API Development Access

In the dev context you can authorize your requests with the username developer and the password password by default.

Satis / TYPO3 Composer Repository

The Satis application is located at the folder satis and contains all relevant parts for the creation of the TYPO3 Composer Repository at https://composer.typo3.org. This job is started through crontab see cnf folder for the configuration details.

Download Link Checker

To verify the download links generated by https://get.typo3.org/json you can run the following command:

php ./bin/console app:download:missing:list

This will create the missing-downloads.yaml with the links to Sourceforge to get the missing packages from there.

Troubleshooting

Authorization not working

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=$1

Environments and Deployments

Environments

Currently 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.

Staging / Development

CI Development CD Development

All pushs to the branch develop are automatically deployed to the development site at get.typo3.dev or composer.typo3.dev. This site is protected and can be accessed with the following credentials:

  • User: preview
  • Password: U@2C@3t295hb

SSH access is possible with the following command:

ssh get-dev@get01.typo3server.ch

Production

CI Production CD Production

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

Deployments

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

Folder structure

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.

Release Cycle

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