TYPO3 Automatische Ratenzahlung mit Bitbucket CI/CD

Sind Sie interessiert bei der Automatisierung der TYPO3-Einführung effektiv? Dieser Artikel befasst sich mit Einsatzstandards von TYPO3, beschäftigen Werkzeuge wie z. B. Bitbucket CI/CD, Verteiler, Code-Überprüfung, Frontend-Erstellung, docker/ddev, und Aufstellen Entwicklung, Inszenierung, und Produktionsumgebungen. Entdecken Sie die empfohlenen Praktiken für TYPO3 v12 und DevOps in diesem informativen Artikel.

TYPO3 Automatische Ratenzahlung mit Bitbucket CI/CD

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 interessiert bei der Automatisierung der TYPO3-Einführung effektiv? Dieser Artikel befasst sich mit Einsatzstandards von TYPO3, beschäftigen Werkzeuge wie z. B. Bitbucket CI/CD, Verteiler, Code-Überprüfung, Frontend-Erstellung, docker/ddev, und Aufstellen Entwicklung, Inszenierung, und Produktionsumgebungen. Entdecken Sie die empfohlenen Praktiken für TYPO3 v12 und DevOps in diesem informativen Artikel.

Sind Sie noch manuell installieren Ihre TYPO3-Projekte mit altmodische Methoden wie SFTP/SSH? Nun, es ist Zeit zu gehendie im Jahr 2023 zurückbleiben! Verabschieden Sie sich von manuellen TYPO3 Deployern und komplizierte SSH-Befehle. Stattdessen, lassen Sie uns Ihre TYPO3-Bereitstellung vollständig automatisiert mit TYPO3 Bitbucket CI/CD. Das bedeutet, Sie können Zeit sparen und Aufwand durch die Automatisierung der Einsatz Prozess, Einfacher und effizienter machen. Also, warum nicht sich diesen modernen Ansatz zu eigen machen und machen Ihre TYPO3-Entwicklung und Einsatz a Brise im Jahr 2023?

Wenn Sie auch an TYPO3 Gitlab interessiert sind, Ich empfehle dringend die Lektüre unseres berühmten Artikels TYPO3 Gitlab CI/CD Auto-Bereitstellung (2022).

Achtung!

Sind Sie bereit für die Reise mit TYPO3 + Bitbucket + CI/CD? Dieser Artikel bietet ein TYPO3 v12-Proben, aber wenn Sie mit älteren TYPO3-Versionen arbeiten, werden Sie einige Anpassungen vornehmen müssen, insbesondere hinsichtlich die Bit-Architektur.

Tauchen wir ein in die spannende Welt von TYPO3+ Bitbucket + CI/CD! Es ist an der Zeit, Ihre TYPO3 Entwicklung zu rationalisieren und Einsatzprozess. Los geht's!

Was ist TYPO3 CI/CD?

Verabschieden Sie sich von den Tagen der manuellen Bereitstellung und komplexe befehlsbasierte Arbeitsabläufe! Mit TYPO3 CI/CD (Kontinuierliche Integration und Kontinuierliche Entwicklung), können Sie automatisieren die Bereitstellung Ihres TYPO3-Projekts.

Die Magie geschieht über Ihr Git-Repository. Durch die einfache Verwendung von Befehlen wie git push oder git tag, können Sie die automatische Ratenzahlung Ihr neuester Code auf den Staging- oder Produktionsserver.

Aber das ist noch nicht alles! TYPO3 CI/CD bietet auch eine raffinierte Funktion: code-Testen vor Ratenzahlung. Dies ermöglicht Sie müssen sicherstellen, dass Ihr TYPO3-Code erfüllt die höchsten Qualitätsstandards und gibt Ihnen mehr die Kontrolle über seine Gesamtqualität.

Umarmung TYPO3 CI/CD und genießen Sie die Einfachheit der automatischen Bereitstellung und den Seelenfrieden, der mit Code-Tests einhergeht. Es ist an der Zeit, Ihren TYPO3 Entwicklungsprozess zu vereinfachen und auf die nächste Stufe zu heben!

Schritte zu Automatische Bereitstellung von TYPO3

Automatische Bereitstellung von TYPO3 Die Verwendung von Bitbucket CI/CD ist so einfach wie 1-2-3:

  1. Änderungen am Code vornehmen und übertragen Sie sie mit `git push`.
  2. Starten Sie die TYPO3-Bitbucket-Pipeline-Runner.
  3. Lehnen Sie sich zurück und entspannen Sie sich! Ihr neuer Code wird automatisch auf dem Server bereitgestellt.

Führen Sie einfach `git push` aus, und Ihre Bereitstellung ist nahtlos erledigt werden. So einfach und cool ist das! Genießen Sie den Komfort der automatisierten Bereitstellung von TYPO3 mit Bitbucket CI/CD.

TYPO3 Bitbucket Pipedrives

Was genau wollen wir erreichen? Werfen Sie einen Blick auf den folgenden Screencast, wir wollen diese 4 Dinge erreichen.

1. Automatische Codeüberprüfung (Beispiel PHP)

2. TYPO3 entwickeln (Composer-Installation verwenden)

3. entwickeln Frontend-Assets (Verwendung von Nodejs/Yarnjs installieren)

4. Automatische Bereitstellung auf Servern (Inszenierung oder Produktion)

Liste der Technologien für die TYPO3-Bereitstellung

Sie benötigen mit modernen Technologien zu beginnen TYPO3 Projekte effizient entwickeln und einsetzen.

  • Betriebssystem (empfohlen UNIX-basiert)
  • Docker >= 18.x
  • Docker-Komponist >= 3.x
  • DDEV
  • Komponist >= 2.x
  • PHP >= 7.4.x
  • deployeur >= 6.x
  • PHPStan und PHP-CS-Fixer
  • Nodejs/Webpack (fakultativ)

Die Architektur von TYPO3 Bitbucket CI/CD

Verwendung des TYPO3 v12-Setups, Bitte beachten Sie die folgende minimale Git TYPO3 Architektur.

- .ddev
- config
  -- sites
    -- default
  -- system
    -- settings.php
    -- additional.php
- packages
  -- your-custom-package
- composer.json
- deploy.php
- bitbucket-pipelines.yml
- phpstan.neon

Verstehen Sie die Grundlagen von TYPO3 DevOps

Das Wesentliche Informationshinweise Sie sind verantwortlich für das Verständnis der lokalen Entwicklung und des TYPO3 DevOps-Setups.

bauen/einsetzen.php

Enthält das PHP Deployer-Rezept, Es ist nur ein einfaches PHP-Skript - Ich bin sicher, Sie werden es leicht verstehen.

config/system

Sie können die TYPO3-Installation je nach den Bedürfnissen Ihres Servers konfigurieren, z.B. lokal oder produktiv.

config/system

Sie können TYPO3-Sites konfigurieren.

packages/*

Fügen Sie Ihre selbst entwickelten TYPO3-Erweiterungen hinzu, z.B. Ihre Template-Erweiterung.

Anleitung zur lokalen TYPO3-Installation

  • ddev config
  • ddev start
  • ddev composer install
  • ddev launch

bitbucket-pipelines.yml

image: php:8.1

definitions:
  steps:
    - step: &code-analysis
        name: PHPStan
        caches:
          - composer
        script:
          - composer install --ignore-platform-reqs --no-progress --no-interaction
          - if [ -e vendor/bin/phpstan ]; then php -d memory_limit=2G vendor/bin/phpstan analyse; fi

    - step: &build
        name: Composer
        caches:
          - composer
        artifacts:
          - public/**
          - packages/**
          - config/**
          - vendor/**
        script:
          - composer install --ignore-platform-reqs --no-dev --verbose --prefer-dist --no-progress --no-interaction --optimize-autoloader

    - step: &build-frontend
        name: Node.js
        image: node:19.9.0-alpine3.18
        caches:
          - node
        artifacts:
          - public/**
        script:
          - yarn
          - yarn build

    - step: &deploy
        name: Deploy
        caches:
          - composer
        script:
          - composer global require deployer/deployer:^6.3 deployer/recipes --dev --no-progress --no-interaction
          - "`composer global config bin-dir --absolute`/dep --file=./deploy.php deploy -vv --hosts=${TARGET_HOSTS}"

pipelines:
  branches:
    main:
      - parallel:
          steps:
            - step:
                <<: *code-analysis
            - step:
                <<: *build
            - step:
                <<: *build-frontend
      - step:
          <<: *deploy
          deployment: Production

deploy.php

<?php declare(strict_types=1);

namespace Deployer;

require 'recipe/common.php';
require 'recipe/rsync.php';

function env(string $name): string|array
{
  $value = getenv($name);
  if ($value === false) {
    throw new \RuntimeException(\sprintf(
      'Environment variable \'%s\' missing.',
      $name,
    ));
  }

  return $value;
}

host('main')
  ->hostname(env('SSH_HOST'))
  ->user(env('SSH_USER'))
  ->set('deploy_path', env('DEPLOY_PATH'))
  ->set('writable_mode', 'chmod')
  ->set('keep_releases', '3');

// Prepare Directory Structure
$sharedDirectories = [
  'public/fileadmin',
  //'public/typo3temp',
  //'var',
];
set('shared_dirs', $sharedDirectories);

$sharedFiles = [
  '.env',
  'public/.htaccess',
];
set('shared_files', $sharedFiles);

$writeableDirectories = [
  'public/fileadmin',
  'public/typo3temp',
  'var',
];
set('writable_dirs', $writeableDirectories);

$exclude = [
  '.ddev',
  'deploy.php',
  'package.json',
  'package-lock.json',
  '.env',
  'var/',
  'public/fileadmin/',
  'public/typo3temp/'
];

// Ready for Rsync
set('rsync', [
    'exclude' => array_merge($sharedDirectories, $sharedFiles, $exclude),
    'exclude-file' => false,
    'include' => [],
    'include-file' => false,
    'filter' => [],
    'filter-file' => false,
    'filter-perdir' => false,
    'flags' => 'avz',
    'options' => ['delete'],
    'timeout' => 300
]);
set('rsync_src', '.');

// Execute TYPO3 CLIs
task('typo3:extension:setup', function() {
    cd('{{release_path}}');
    run('vendor/bin/typo3 extension:setup');
});

task('typo3:database:updateschema', function() {
    cd('{{release_path}}');
    run('vendor/bin/typo3 database:updateschema');
});

task('typo3:cache:flush', function() {
    cd('{{release_path}}');
    run('vendor/bin/typo3 cache:flush');
});

task('typo3:cache:warmup', function() {
  cd('{{release_path}}');
  run('vendor/bin/typo3 cache:warmup');
});

task('typo3:language:update', function() {
    cd('{{release_path}}');
    run('vendor/bin/typo3 language:update');
});

// Let's Deploy Now!
task('deploy', [
    'deploy:prepare',
    'deploy:lock',
    'deploy:release',
    'rsync:warmup',
    'rsync',
    'deploy:shared',
    'deploy:writable',
    'typo3:extension:setup',
    //'typo3:database:updateschema',
    'typo3:language:update',
    'typo3:cache:flush',
    'typo3:cache:warmup',
    'deploy:symlink',
    'deploy:unlock',
    'cleanup',
    'success'
]);

// unlock after failure
after('deploy:failed', 'deploy:unlock');

composer.json

{
	"name": "typo3/bitbucket-project-template",
	"description" : "TYPO3 CMS Distribution - Bitbucket Project Template",
	"license": "GPL-2.0-or-later",
	"type": "project",
	"config": {
		"allow-plugins": {
			"typo3/class-alias-loader": true,
			"typo3/cms-composer-installers": true,
			"helhum/dotenv-connector": true,
			"phpstan/extension-installer": true
		},
		"platform": {
			"php": "8.2"
		},
		"sort-packages": true
	},
	"prefer-stable": true,
	"minimum-stability": "dev",
	"repositories": {
		"local-packages": {
			"type": "path",
			"url": "packages/*"
		}
	},
	"require": {
		"helhum/dotenv-connector": "^3",
		"typo3/cms-backend": "^12",
		"typo3/cms-belog": "^12",
		"typo3/cms-beuser": "^12",
		"typo3/cms-core": "^12",
		"typo3/cms-dashboard": "^12",
		"typo3/cms-extbase": "^12",
		"typo3/cms-extensionmanager": "^12",
		"typo3/cms-felogin": "^12",
		"typo3/cms-filelist": "^12",
		"typo3/cms-fluid": "^12",
		"typo3/cms-fluid-styled-content": "^12",
		"typo3/cms-form": "^12",
		"typo3/cms-frontend": "^12",
		"typo3/cms-info": "^12",
		"typo3/cms-install": "^12",
		"typo3/cms-lowlevel": "^12",
		"typo3/cms-rte-ckeditor": "^12",
		"typo3/cms-seo": "^12",
		"typo3/cms-setup": "^12",
		"typo3/cms-sys-note": "^12",
		"typo3/cms-t3editor": "^12",
		"typo3/cms-tstemplate": "^12",
		"typo3/cms-viewpage": "^12"
	},
	"require-dev": {
		"friendsofphp/php-cs-fixer": "^3.13.0",
		"helmich/typo3-typoscript-lint": "^3.0.0",
		"php-coveralls/php-coveralls": "^2.5.3",
		"phpunit/phpunit": "^9.5.26",
		"saschaegerer/phpstan-typo3": "^1.8",
		"seld/jsonlint": "^1.9.0",
		"squizlabs/php_codesniffer": "^3.7.1",
		"symfony/yaml": "^5.4 || ^6.1",
		"typo3/cms-fluid-styled-content": "^11.5.4 || ^12.0",
		"typo3/coding-standards": "^0.5.5"
	}
}

.env

TYPO3_TRUSTED_HOSTS=.*.*
TYPO3_CONTEXT=Production
TYPO3_DB_DATABASE=
TYPO3_DB_USERNAME=
TYPO3_DB_PASSWORD=
TYPO3_DB_HOST=
TYPO3_DB_PORT=3306
TYPO3_DB_DRIVER=mysqli

Bitbucket Umgebungsvariablen

SSH_HOST=
SSH_USER=
DEPLOY_PATH=

Das war's! Sie sind bereit, Ihr erstes TYPO3 Bitbucket CI/CD zu starten - führen Sie einfach `git push` aus.

? TYPO3 Bitbucket Pipelines starten

Einpacken!

Vielen Dank für das Lesen meines Blogs. Ich hoffe, es gefällt Ihnen und fand es hilfreich.

Ich empfehle dringend, TYPO3 CI/CD Auto-Deployment auszuprobieren, vor allem, wenn Sie noch mit der traditionellen manuellen Bereitstellungsmethoden. Annahme der Herausforderung und Übergang zur automatisierten Bereitstellung Passt perfekt zu den Zielen und der Vision für 2023. Wenn Sie auf dem Weg auf Hindernisse stoßen, zögern Sie nicht, sich zu melden. Ich bin hier, um Ihnen zu helfen und Sie zu unterstützen.

Wenn Sie sich bereits mit TYPO3 DevOps auskennen, Das ist fantastisch! Ich bin neugierig auf Ihre bevorzugte Methode der TYPO3-Bereitstellung. Ihr Feedback und Ihre Erfahrungen würde sehr geschätzt werden. Fühlen Sie sich frei, Ihre Gedanken zu teilen im Kommentarfeld unten.

Viel Spaß beim TYPO3 Deployment!

Your One Stop Solutions for Custom TYPO3 Development

  • A Decade of TYPO3 Industry Experience
  • 250+ Successful TYPO3 Projects
  • 87% Repeat TYPO3 Customers
Get Your Free Quote

Post a Comment

×
Captcha Code Kann das Bild nicht gelesen werden? Klicken Sie hier, um zu aktualisieren
  • user
    Benjamin Schuhmacher 2023-09-05 um 3:26 pm
    Thanks for the detailed instructions! Setting up TYPO3 auto deployment with Bitbucket CI/CD was a easy following this guide. The explanations were clear, and the screenshots were really helpful.
  • user
    Markus 2023-09-05 um 3:26 pm
    I'm always on the lookout for ways to automate and optimize my development workflow. This guide was exactly what I needed to take my TYPO3 projects to the next level. Thanks for sharing these valuable insights!