FYI. This blog is translated by machine. Please ignore any spelling and grammar errors; sorry for such inconvenience. We appreciate your understanding and support.
Sind Sie auf der Suche nach Best Practices zur Automatisierung der TYPO3-Bereitstellung? In diesem Artikel finden Sie offizielle TYPO3-Standard-Deployments mit Gitlab CI/CD, Deployer, Code-Review, Frontend-Build, Docker/Ddev, Vorbereitung von Dev/Staging/Production-Umgebungen, etc. Lesen Sie diesen Artikel, um die besten Praktiken für TYPO3 DevOps kennenzulernen.
TYPO3 Entwicklung und Bereitstellung im Jahr 2023! Mein Freund, ich hoffe, Sie deployen Ihr TYPO3 Projekt nicht immer noch manuell per SFTP. Selbst wenn Sie immer noch einen manuellen TYPO3-Deployer verwenden oder mit einigen SSH-Befehlen surfen, um TYPO3 zu deployen, ist es an der Zeit, dies mit TYPO3 Gitlab CI/CD vollständig zu automatisieren. Dieser Artikel erklärt die Architektur des offiziellen TYPO3 Teams (demo.typo3.org).
Bevor wir beginnen, möchte ich diesen Artikel dem Team von demo.typo3.org, benni und der Firma B13 widmen, die einen besseren Weg zum Deployment des TYPO3-Projekts entwickelt und geteilt haben https://git.typo3.org/services/demo.typo3.org/site #T3Kudos an alle für den Beitrag, vielen Dank.
Sind Sie aufgeregt, die Reise von TYPO3 + Gitlab + CI/CD zu beginnen? Los geht's!
Was ist TYPO3 CI/CD?
Das Mantra lautet "kein sFTP '' oder manuelles Command Base Deployment mehr. Das Deployment Ihres TYPO3 Projekts wird mit TYPO3 CI/CD (Continuous Integration and Continues Development) automatisiert.
Zum Deployment: Ihr Git-Repository ist der Schlüsselfaktor für das automatische Deployment Ihres neuesten Codes auf den Staging- oder Produktionsserver. Sie können Ihren Code mit Befehlen wie `git push`, `git tag` usw. bereitstellen.
Testen: Ein weiterer Vorteil von TYPO3 CI/CD besteht darin, dass Sie Ihren Code vor der Bereitstellung testen können. Auf diese Weise können Sie die Qualität der TYPO3-Code-Standards kontrollieren.
Terminologie: Git-Pipelines/Jobs/Runner/Stages
- Git Commit: Eine Codeänderung.
- Aufgabe: Anweisungen, die ein Läufer auszuführen hat.
- Pipeline: Eine Sammlung von Aufträgen, die in verschiedene Phasen unterteilt sind.
- Läufer: Ein Agent oder Server, der jeden Auftrag einzeln ausführt und je nach Bedarf hoch- oder heruntergefahren werden kann.
- Etappen: Ein Schlüsselwort, das bestimmte Job-Phasen definiert, wie z. B. Build und Deploys. Aufträge der gleichen Phasen werden parallel ausgeführt.
Steps to Auto Deployment TYPO3
Lassen wir die Theorie beiseite und schauen uns in der Praxis an, welche Schritte durchgeführt werden müssen, um TYPO3 mit Gitlab CI/CD automatisch bereitzustellen.
Schritt 1. `git push` Sie nehmen Codeänderungen vor und übertragen diese an Git.
Schritt 2. Starten Sie TYPO3-Gitlab-Pipeline-Runner.
Schritt 3. Erledigt! Wenn alles gut geht, wird Ihr neuer Code `deploy to server`.
Einfach den Befehl `git push` ausführen und bumm! Ist das nicht cool, hm?
Liste der Technologien für die TYPO3-Bereitstellung
Sie müssen mit modernen Technologien starten, um TYPO3 Projekte effizient zu entwickeln und einzusetzen.
- Betriebssystem (empfohlen UNIX-basiert)
- Docker >= 18.x
- Docker Composer >= 3.x
- DDEV
- Composer >= 2.x
- PHP >= 7.4.x
- Deployer >= 6.x
- PHPStan and PHP-CS-Fixer
- Nodejs/Webpack (optional)
Einrichtung mit Demo.TYPO3.org einleiten
Wie bereits erwähnt, verwenden wir das offizielle TYPO3 Setup von demo.typo3.org, das vom benni & B13 Team entwickelt wurde.
Das folgende TYPO3 Gitlab CI/CD Setup wird Ihnen helfen, die gesamte Architektur von TYPO3 DevOps zu verstehen.
Leitfaden für TYPO3 Local Development
Für Ihre ersten Erfahrungen und zum Testen empfehlen wir Ihnen dringend, g
// Download code
git clone git.typo3.org/services/demo.typo3.org/site.git
// Install composer packages
ddev composer install
// Build the frontend
ddev composer frontend-builds
// Get database and fileadmin using
ddev pull dump
// Update schema
ddev typo3cms database:updateschema
// Create a backend user
ddev typo3cms backend:createadmin username password
// Start the project running
ddev start
Die Architektur von TYPO3 Gitlab CI/CD
Lassen Sie uns einen kurzen Blick auf die Architektur von TYPO3 DevOps werfen, die unter demo.typo3.org entworfen wurde.
Zu Beginn finden Sie die Grundkonfiguration wie Deployer, TYPO3-Konfiguration, Sites-Konfiguration usw.
- .ddev
- build
-- deploy.php
-- servers.yml
- config
-- AdditionalConfiguration (development, production)
-- sites (site configuration)
- src
-- extensions
-- webpack
- web
-- LocalConfiguration.php
-- AdditionalConfiguration.php
- composer.json
- .gitlab-ci.yml
Verstehen Sie die Grundlagen von TYPO3 DevOps
Hier finden Sie die wichtigsten Informationen zum Verständnis der lokalen Entwicklung und der TYPO3 DevOps-Einrichtung.
build/deploy.php
Enthält PHP Deployer Rezept, Es ist nur ein einfaches PHP-Skript - ich bin sicher, Sie werden leicht zu verstehen.
build/servers.yml
Informationen über alle Ihre Server wie Staging/Production, die in deploy.php verwendet werden
config/AdditionalConfiguration/*Context.php
Sie können die TYPO3-Installation je nach den Anforderungen Ihres Servers (lokal oder produktiv) konfigurieren.
src/extensions/*
Fügen Sie Ihre selbst entwickelten TYPO3-Erweiterungen hinzu, z.B. Ihre Template-Erweiterung.
.env
Enthält TYPO3-Umgebungsvariablen.
Grundlegende Einrichtung TYPO3 .gitlab-ci.yml
Bevor Sie beginnen und die Gitlab-CI-Architektur verstehen, hoffe ich, dass Sie einige Grundkenntnisse über SSH-Befehle haben. Andernfalls sollten Sie sich mit grundlegenden UNIX-Befehlen und -Dienstprogrammen vertraut machen.
Hier ist die Grundeinstellung von .gitlab-ci.yml, die der Standard des Gitlab.org OpenSource-Projekts ist.
Bereitstellungsphasen definieren
stages:
- maintenance
- lint
- build
- build-frontend
- deploy
Globale Variablen und Cache initiieren
variables:
ssh_hosts: "yourserver.com"
build_frontend_path: "src/webpack"
# see getcomposer.org/doc/03-cli.md
COMPOSER_CACHE_DIR: ".composer-cache"
composer_options: "--no-progress --no-interaction"
# These files/folders are untracked, but should be kept between stages
cache:
key: composer-cache-files
paths:
- "$COMPOSER_CACHE_DIR"
- "$build_frontend_path/node_modules"
Verbindung mit SSH-Server
.prepare_ssh: &prepare-ssh
before_script:
- apk add rsync --update
- eval $(ssh-agent -s)
- echo -e "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
- mkdir -p ~/.ssh && chmod 700 ~/.ssh
- ssh-keyscan "$ssh_hosts" >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
Automatische Code-Überprüfung in TYPO3 CI/CD
Für die automatische Überprüfung von TYPO3-Code (auch bekannt als Code-Lints-Test) können Sie PHP, Fluid, TypoScript, YML usw. verwenden. Hier ist ein Beispiel für eine PHP-Codeüberprüfung mit PHPStan + PHP-CS-Fixer.
# Runs tests, currently it runs phpstan + php-cs-fixer
code-analysis:php:
stage: lint
image: composer:2.1.8
before_script:
- composer install --ignore-platform-reqs $composer_options
script:
- if [ -e bin/phpstan ]; then php -d memory_limit=2G ./bin/phpstan analyse; fi
- if [ -e bin/php-cs-fixer ]; then php -d memory_limit=2G ./bin/php-cs-fixer fix --config=.php_cs -v --dry-run --stop-on-violation --using-cache=no; fi
TYPO3-Artefakt erstellen
Jetzt ist es an der Zeit, das gesamte TYPO3-Artefakt-Composer-Setup zu erstellen, es wird das gesamte TYPO3-Setup erstellt.
# Builds the artifacts for the production system (composer first)
build:php:
stage: build
image: composer:2.1.8
script:
- composer install --no-dev -o -a --ignore-platform-reqs $composer_options
artifacts:
paths:
- bin
- web
- src
- config
- vendor
# needed to have the deployer tool available
- build
expire_in: '2h'
only:
- tags
- main
- develop
Frontend-Erstellung in TYPO3
Die meisten modernen TYPO3-Projekte verwenden das Webpack-Framework, um JavaScript und SASS/LESS-basierte CSS-Dateien zu bündeln. Lassen Sie uns das Frontend erstellen.
# compile and build JS / CSS
# should be used in conjunction with an artifact
.frontend_bootstrap: &frontend-bootstrap
image: node:14.16-buster
variables:
node_path: src/webpack
script:
- cd $build_frontend_path
- yarn install
- yarn build-prod
Automatisches Bereitstellen von Status/Produktion erstellen
Alles ist fertig! Es ist an der Zeit, es in der Produktion oder im Staging mit untenstehendem CI/CD einzusetzen.
# rsyncs the artifacts to the target server via deployer
.deploy: &deploy
<<: *prepare-ssh
image: composer:2.0.8
variables:
# no git needed, only the artifacts are required
GIT_STRATEGY: none
TARGET_HOSTS: ""
script:
- composer global require deployer/deployer deployer/recipes --dev $composer_options
- /tmp/vendor/bin/dep --file=./build/deploy.php deploy -vv --hosts=${TARGET_HOSTS}
deploy:production:
<<: *deploy
stage: deploy
variables:
TARGET_HOSTS: "main,contentmaster"
only:
- tags
- main
dependencies:
- build-frontend
deploy:staging:
<<: *deploy
stage: deploy
variables:
TARGET_HOSTS: "staging"
only:
- develop
Zu guter Letzt sollten Sie natürlich die Struktur nach Ihren Bedürfnissen optimieren und modifizieren, z.B. den Inhaltskontext entfernen, der von demo.typo3.org verwendet wird, um den gesamten TYPO3-Inhaltskontext zurückzusetzen ;)
Weitere Artikel zum Thema TYPO3 Deployment finden Sie weiter unten.
Schließung!
Vielen Dank für das Lesen meines Blogs. Ich hoffe, er gefällt Ihnen und Sie finden ihn hilfreich.
Ich kann nur empfehlen, es auszuprobieren! Wenn Sie noch als traditioneller TYPO3 Entwickler arbeiten (mit manuellem Deployment), dann sollten Sie die Herausforderung annehmen und TYPO3 CI/CD Auto-Deploy einrichten - mit dem Ziel und der Vision von 2023! Wenn Sie nicht weiterkommen, dann schreiben Sie mir in die Kommentarbox, ich helfe Ihnen gerne.
Oh! Sie arbeiten bereits erfolgreich mit TYPO3 DevOps? Toll, was ist deine Lieblingsmethode für das TYPO3 Deployment? Ich lerne immer gerne neue Dinge.
Dhyana Chauhan
Tech Expert & Customer ManagerDhyana Chauhan is the customer support manager at T3Planet, having vast experience as an technology lead who loves exploring everything that’s in trend, especially TYPO3. Being a TYPO3 fanatic, in her free time, she loves…
More From Author