8 Wege zur Veröffentlichung Ihrer TER TYPO3-Erweiterungen

Wir freuen uns über Ihre großartige Entscheidung, einen OpenSource-Beitrag zu den TER TYPO3 Extensions zu leisten! Suchen Sie Hilfe bei der Veröffentlichung der TER TYPO3 Extensions? In diesem Artikel finden Sie eine Schritt-für-Schritt-Anleitung zur Veröffentlichung von Handbüchern oder zur Automatisierung Ihrer TER-Erweiterung.

8 Wege zur Veröffentlichung Ihrer TER TYPO3-Erweiterungen

FYI. This blog is translated by machine. Please ignore any spelling and grammar errors; sorry for such inconvenience. We appreciate your understanding and support.

Erstaunlich! Sie haben eine großartige Entscheidung getroffen, OpenSource zu den TER TYPO3 Extensions beizutragen, ich weiß das zu schätzen! Sind Sie auf der Suche nach Hilfe bei der Veröffentlichung der TER TYPO3 Extensions? In diesem Artikel finden Sie eine Schritt-für-Schritt-Anleitung zur Veröffentlichung von Handbüchern oder zur Automatisierung Ihrer TER-Erweiterung.

Das TYPO3 Extensions Repository (aks TER) ist ein zentraler Ort, an dem viele TYPO3-Agenturen und Entwickler ihre TER TYPO3 Extensions entwickeln und veröffentlichen - als Rückgabe an OpenSource. Für die produktive Arbeit des TYPO3-Entwicklers sollte die Veröffentlichung und der Einsatz der Erweiterung zum TER einfach und bequem sein. Deshalb schreibe ich diesen Artikel, um Ihnen zu helfen - um Ihre Zeit zu sparen. Konzentrieren Sie sich einfach auf die Entwicklung Ihrer TER-TYPO3-Erweiterungen, und lassen Sie uns die Veröffentlichung automatisieren :)

Unser App Store heißt TER - und er ist kostenlos!
-TYPO3 GmbH

Um Ihre TYPO3-Erweiterungen auf TER zu veröffentlichen, müssen Sie ein Konto auf TYPO3.org anlegen.

Schritt 1. Land to My.TYPO3.org - Eine Zentrale für alle TYPO3-Sites https://my.typo3.org/register

Schritt 2. Anmeldung bei Extensions.TYPO3.org

Bevor Sie mit der Entwicklung Ihrer TYPO3-Erweiterung beginnen, ist es wichtig, dass Sie Ihren TYPO3-Erweiterungsschlüssel überprüfen, registrieren und validieren.

Schritt 1. Klicken Sie im Hauptmenü auf "Meine Erweiterungen". https://extensions.typo3.org/

Schritt 2. Gehen Sie zum "Erweiterungsschlüssel registrieren".

90% der TYPO3-Entwickler verwenden Git-Repositories, um ihre TYPO3-Erweiterungen für öffentliche TER- und private Projekte zu entwickeln und zu pflegen.

Was sind empfohlene Git-Tools?

  • Github.de
  • Gitlab.de
  • Bitbucket.de

Warum Git-Repositorien für die TER-Erweiterung?

  • Leichte Pflege von Code-Repositories
  • TYPO3-Erweiterung automatisch im TER veröffentlichen
  • Die Community kann Code zu Ihrer TYPO3-Erweiterung beitragen
  • Code-Review mit Lints
  • Erlauben Sie Personen, das Haupt-Repository zu benutzen
  • Und so weiter!

Nun, es ist nicht der technische Teil, aber sehr wichtig für die Leute, die Ihre TYPO3-Erweiterungen verwenden wollen.

Was sollten wir in die TYPO3-Dokumentation aufnehmen?

  • Einführung
  • Bildschirmfotos
  • Installation und Konfiguration
  • Benutzerhandbuch
  • Leitfaden für Integratoren
  • Leitfaden für Entwickler (falls vorhanden)
  • Unterstützung
  • FAQ

Option 1. Offizielle Docs.TYPO3.org

TYPO3-Gemeinschaft haben eine ausgezeichnete Plattform für die Dokumentation des Kerns sowie für die TER TYPO3-Erweiterungen zu.

Erstellen Sie einfach den Ordner "Dokumentation" in der Erweiterung, und beginnen Sie, Dokumentation im RST-Format zu schreiben.

Lesen Sie die Schritt-für-Schritt-Anleitung unter Wie man eine Erweiterung dokumentiert.

Option 2. Ihre externe Dokumentation

Viele Entwickler möchten einfach nur eine einfache Dokumentation ohne das nachfolgende RST-Format von docs.typo3.org erstellen; Sie können die Dokumentation einfach auf die folgenden Arten erstellen.

Verwendung von README.md in Ihrem Git-Repository

  • Schreiben Sie einen Blog über die Erweiterung.
  • Verwenden Sie Wiki in Ihrem Git-Repository.
  • Etc.

In diesem Fall müssen Sie eine Dokumentations-URL in Ihrer Erweiterung wie folgt angeben

Es ist eine gute Idee, der TYPO3-Community einen Bug-Tracker oder ein Issues-Management-System zur Verfügung zu stellen. Wenn Sie also einen Fehler in Ihrer TYPO3-Extension finden, kann die TYPO3-Community diesen melden.

Benutzen Sie einfach das "Issues Management" Ihres Git-Repositories und stellen Sie sicher, dass Sie in Ihrer Extension einen "Link zum Issue-Tracker" wie unten angegeben angeben.

1. Manuell veröffentlichen auf Extensions.TYPO3.org

Schritt 1. Gehen Sie zu "Meine Erweiterungen" unter https://extensions.typo3.org/

Schritt 2. Klicken Sie bei Ihrer registrierten TYPO3-Erweiterung auf die Schaltfläche "Hochladen".

Schritt 3. Schreiben Sie eine Beschreibung, laden Sie Ihrerextesion_1.0.0.0.zip hoch und klicken Sie auf die Schaltfläche "Erweiterung hochladen".

2. Github: Automatische Freigabe von NamelessCoder

Die Mini-Site NamelessCoder.net ist ein Dienst, mit dem Sie ein GitHub-Repository, das eine TYPO3-Erweiterung enthält, direkt von GitHub aus im TYPO3 Extension Repository (TER) veröffentlichen können. Neue Versionen werden jedes Mal veröffentlicht, wenn eine neue Version auf GitHub getaggt wird. Die Benutzung ist kostenlos.

Anforderungen

  • Ein öffentliches GitHub-Repository, das Ihre TYPO3-Erweiterung enthält.

Installation

  • Gehen Sie zu Github Repository > Einstellungen
  • Suchen Sie die Registerkarte "Webhooks & Dienste".
  • Klicken Sie auf "Webhook hinzufügen".
  • Geben Sie unter "URL" ein: _COPY16@release.namelesscoder.net/my_extension.
  • my_extension ist die kleingeschriebene, unterstrichene Erweiterung, die freigegeben werden soll.
  • Benutzername: Das Passwort ist Ihr Berechtigungsnachweis mit der Erlaubnis, die Erweiterung hochzuladen.
  • Geben Sie in "Secret" ein: typo3rocks
  • Lassen Sie die Auswahl "Ereignisse" so, wie sie ist - dieser Dienst benötigt nur das Push-Ereignis.

Automatische Freigabe der Erweiterung von Github auf TER

create/push tag 
git tag 1.2.3 
git push origin 1.2.3

3. Gitlab: CI zu TER

Wenn Sie Gitlab verwenden, dann können Sie einfach ein Deployment-Skript in GitLab-ci.yml schreiben, um die TYPO3-Erweiterung automatisch von Gitlab auf TER freizugeben.

# gitlab-ci.yaml

cache:
  key: "$CI_COMMIT_REF_NAME-$CI_JOB_STAGE"
  paths:
    - .composer/

before_script:
  - apk add git --update

stages:
  - upload

# TER Upload when tagging in the master branch
# The variables T3O_USERNAME and T3O_PASSWORD should be set in GitLab
ter-upload:
  image: php:7-alpine
  stage: upload
  only:
    - tags
  before_script:
    - curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
    - export COMPOSER_CACHE_DIR=.composer
  script:
    - composer install
    - composer require namelesscoder/typo3-repository-client
    - export TYPO3_PATH_WEB="$PWD/.Build/Web"
    - >
      if [ -n "$CI_COMMIT_TAG" ] && [ -n "$T3O_USERNAME" ] && [ -n "$T3O_PASSWORD" ]; then
        echo -e "Preparing upload of release ${CI_COMMIT_TAG} to TER\n"
        # Cleanup before we upload
        git reset --hard HEAD && git clean -fx
        # Upload
        TAG_MESSAGE=`git tag -n10 -l $CI_COMMIT_TAG | sed 's/^[0-9.]*[ ]*//g'`
        echo "Uploading release ${CI_COMMIT_TAG} to TER"
        .Build/bin/upload . "$T3O_USERNAME" "$T3O_PASSWORD" "$TAG_MESSAGE"
      fi;

4. Github: TYPO3-Erweiterung Utils (T3XUtils)

Wichtige Hinweise des Autors: Danke für die Erwähnung, aber ich empfehle die Verwendung von T3XUtils NICHT mehr. Es wird seit einiger Zeit nicht mehr gepflegt. :-) https://twitter.com/etobi/status/1296809514839285761

Mit dem Typo3ExtensionUtils-Werkzeug können Sie die TYPO3-Extension mit t3xutils.phar CLI schnell für TER einsetzen. Dies ist eine Sammlung von CLI-Utilities für die TYPO3 CMS Extension. Ziel ist es, während der Entwicklung von Erweiterungen aus der CLI heraus allgemeine Aufgaben erledigen zu können. Alle Werkzeuge funktionieren ohne eine voll funktionsfähige TYPO3-Installation. Eigentlich wird der TYPO3 CMS-Kern für diese Utilities überhaupt nicht benötigt.

Installation

git clone https://github.com/etobi/Typo3ExtensionUtils.git
cd Typo3ExtensionUtils/bin/
chmod +x t3xutils.phar
./t3xutils.phar help

Erweiterung zum TER hochladen

./t3xutils.phar upload <typo3.org-username> <typo3.org-password> <extensionKey> "<uploadComment>" <pathToExtension>

./t3xutils.phar upload eTobi.de 'mySecretPassword' foobar "Minor Bugfixes and cleanup" /var/www/foobar/typo3conf/ext/foobar/

5. Github: Travis-CI an TER

Helmut - Der TYPO3-Mann schrieb einen Artikel über die automatische Freigabe der TYPO3 Extension mit Travis-CI für TER.

# .travis.yml

language: php

# Do not build feature branches
branches:
  only:
    - latest
    - develop
    - /^v?([0-9]+\.){1,2}(x|[0-9]+)-?[a-z]*[1-9]*$/

# This is executed for all stages
before_install:
  - if php -i | grep -v TRAVIS_CMD | grep -q xdebug; then phpenv config-rm xdebug.ini; fi

# Configure build stages (with build matrix above, the test stage is implicitly defined)
jobs:
  allow_failures:
    - env: TYPO3_VERSION="dev-master"
  include:
    - stage: update extension repo
      if: type = push
      php: 7.2
      before_install: skip
      install: skip
      before_script:
        - mkdir -p ~/.ssh
        - openssl aes-256-cbc -K $encrypted_85bf36ae99bb_key -iv $encrypted_85bf36ae99bb_iv -in Resources/Private/deploy_rsa.enc -out ~/.ssh/id_rsa -d
        - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
        - chmod 600 ~/.ssh/id_rsa
        - git clone git@github.com:TYPO3-Console/Extension.git ../extension -b template
        - cd ../extension && git checkout origin/$TRAVIS_BRANCH || true && cd -
        - composer extension-release
        - cd ../extension
        - git checkout README.md
        - git add .
      script:
        - |
          if [ -n "$TRAVIS_TAG" ]; then
              git commit -m "Release extension version $TRAVIS_TAG" --author "Name <email>"
              git tag $TRAVIS_TAG
              git push --tags
            else
              git commit -m "Update extension based on commit $TRAVIS_COMMIT" --author "Name <email>"
              git push origin HEAD:$TRAVIS_BRANCH
          fi;
    - stage: ship to TER
      if: tag IS present
      php: 7.2
      install: skip
      before_script: skip
      script:
        - |
          if [[ "$TRAVIS_TAG" =~ ^v?([0-9]+\.)([0-9]+\.)([0-9]+)$ ]] && [ -n "$TYPO3_ORG_USERNAME" ] && [ -n "$TYPO3_ORG_PASSWORD" ]; then
            echo -e "Preparing upload of release ${TRAVIS_TAG} to TER\n";
            # Install ter client
            composer global require helhum/ter-client
            # Build extension files
            composer extension-release
            # Upload
            TAG_MESSAGE=`git tag -n10 -l $TRAVIS_TAG | sed 's/^[v]*[0-9.]*[ ]*//g'`
            echo "Uploading release ${TRAVIS_TAG} to TER"
            $HOME/.composer/vendor/bin/ter-client upload typo3_console ../extension -u "$TYPO3_ORG_USERNAME" -p "$TYPO3_ORG_PASSWORD" -m "$TAG_MESSAGE"
          fi;

6. TYPO3-Repository-Client-API/CLI

TYPO3 Extension Repository (TER) Client-Bibliothek und CLI-Befehle

Verwendung

Jeder Befehl, der ausgeführt werden kann, hat eine entsprechende Klasse, z.B. NamelessCoder\TYPO3RepositoryClient\Uploader und ein CLI-Skript, das als Wrapper für diese Klasse fungiert. Die Parameter, die an jedes CLI-Skript übergeben werden sollen, müssen die gleichen Argumente und in der gleichen Reihenfolge sein, wie sie von der Methode der Klasse benötigt werden.

Hochlader

// As component:
$uploader = new \NamelessCoder\TYPO3RepositoryClient\Uploader();
$uploader->upload('/path/to/extension', 'myusername', 'mypassword', 'An optional comment');

// And as CLI command:
./bin/upload /path/to/extension myusername mypassword "An optional comment"

7. TER-Kunde

TYPO3 Extension Repository (TER) Client-Bibliothek und Symfony-Konsolenbefehl. Diese wurde auf den Schultern von namelesscoder/typo3-repository-client aufgebaut.

Installation

Verwenden Sie composer, um den TER-Client zu installieren: composer require helhum/ter-client

Verwenden Sie

Jeder Befehl, der ausgeführt werden kann, hat eine entsprechende Klasse, z.B. Helhum\TerClient\Uploader und ein CLI-Skript, das als Wrapper für diese Klasse fungiert. Die an jedes CLI-Skript zu übergebenden Parameter müssen die gleichen Argumente und in der gleichen Reihenfolge sein, wie sie von der Methode der Klasse benötigt werden.

Hochlader\Uploader


// As component:
$uploadPacker = new ExtensionUploadPacker();
$connection = Connection::create($wsdUrl);
$result = $connection->upload(
    new UsernamePasswordCredentials($username, $password),
    $uploadPacker->pack($extensionKey, $directory, $comment)
);

// And as CLI command:

ter-client upload ext_key /path/to/extension -u myusername -p mypassword -m "Upload Comment"

8. TER TYPO3 WSDL-Erweiterungen

CI-Umgebungen (wie Jenkins oder GitLab CI) diese Befehle ausführen können, sollte es nicht so schwierig sein, eine Erweiterung automatisch zu veröffentlichen. 

Interessanterweise gibt es eine öffentliche SOAP-Schnittstelle für das TYPO3 Extension Repository. Die Gesamtheit der bisher referenzierten Lösungen nutzt diese API. 

Wenn Sie es ausgraben möchten, können Sie das Produkt SmartUI von SmartBear (Link: https://www.soapui.org/) verwenden.

 

Semantische Versionierung 2.0.0

Wenn Sie eine Versionsnummer MAJOR.MINOR.PATCH haben, erhöhen Sie die:

  • MAJOR-Version inkrementieren, wenn Sie inkompatible API-Änderungen vornehmen
  • MINOR-Version, wenn Sie Funktionalität rückwärtskompatibel hinzufügen
  • PATCH-Version, wenn Sie rückwärtskompatible Fehlerbehebungen vornehmen
  • Lesen Sie mehr unter semver.org

Komponist unterstützen

Als moderner TYPO3-Entwickler sollten Sie Komponistenunterstützung anbieten.

Jetzt ist es an der Zeit, den Composer zu konfigurieren. Packagist.org bietet eine einfache Konfiguration, um eine Verbindung zwischen Ihrem Git-Repository und dem Composer herzustellen. Natürlich unterstützt Packagist auch andere Git-Plattformen wie Gitlab ;)

Git-Repo bei Packagist einreichen

Schritt 1: Gehen Sie zu https://packagist.org/. 

Schritt 2: Um sich anzumelden, können Sie entweder https://packagist.org/register/ oder "Anmeldung mit Github" unter https://packagist.org/login/ verwenden. 

Schritt 3: Lassen Sie uns jetzt unser Paket/unsere Erweiterung einreichen. Klicken Sie auf "Einreichen" https://packagist.org/packages/submit

Schritt 4: Geben Sie Ihre Github-Repository-URL ein und klicken Sie auf die Schaltfläche "Prüfen". Überprüfen Sie sie einmal und reichen Sie dann Ihr Paket ein.

Wenn Sie einige Fehler erhalten, dann verifizieren Sie Ihre composer.json in Ihrem Git-Repository.

Schritt 5: Jetzt werden Sie zu Ihrer Paket-Landingpage umgeleitet, z.B. https://packagist.org/packages/nitsan/ns-news-comments. Hier sehen Sie, dass alle Informationen aus der composer.json-Datei Ihres Github-Repositorys entnommen wurden.

Wie werden Packagist und Git kommunizieren?

Wann immer Sie eine Änderung vornehmen oder eine neue Version bei Github veröffentlichen, wie werden sie kommunizieren, um den neuesten Code zum Komponisten zu bringen? Führen Sie die folgenden Schritte durch.

API-Token von Packagist abrufen

Schritt 1: Gehen Sie zu Ihrem Profil https://packagist.org/profile/

Schritt 2: Klicken Sie auf die Schaltfläche "Token API anzeigen".

Schritt 3: Gehen Sie zu Ihrem Github-Repository > Einstellungen > Webhooks > Klicken Sie auf die Schaltfläche Webhook hinzufügen

Schritt 4: Details zum Auffüllen

Composer-Befehl aktivieren

Wenn Sie alle mit dem Composer eingerichtet sind, dann stellen Sie sicher, dass Sie für Ihre TYPO3-Extension unter TER den Composer wie unten beschrieben aktivieren.

Hurra!
Ihre TYPO3 Extension Detailseite hat einen Composer-Befehl erhalten.

// Support TYPO3 Composer Command
composer req nitsan/ns_backup

Danke, dass Sie den Artikel gelesen haben!

Ich wünsche Ihnen viel Spaß beim Veröffentlichen von TER TYPO3 Extensions. Lassen Sie uns kurz rekapitulieren.

  • Richten Sie Ihr Konto bei TYPO3.org ein, und registrieren Sie Ihren Erweiterungsschlüssel bei TER.
  • Bereiten Sie Ihre lokale Umgebung mit Ihrem Lieblings-Git-Tool vor.
  • Als Add-On tun Sie Ihr Bestes, um die Dokumentation für Benutzer und Entwickler zu verbessern.
  • Wählen Sie Ihren bequemen Weg, Ihre TER TYPO3-Erweiterung zu veröffentlichen; Mein Favorit ist NamelessCoder's Service, der einfach nur Plug-n-Play ist.
  • Wie veröffentlichen Sie die TER TYPO3-Erweiterung am liebsten? Stehen Sie vor dem Problem, eine der oben genannten Methoden zum Start Ihrer TER TYPO3-Erweiterung einzurichten? Ich beantworte gerne alle Fragen im Kommentarfeld unten.

Viel Spaß mit Ihrem TYPO3-Beitrag :)

Would you prefer a Ready-made template(s) or a Custom one for TYPO3?

  • 200+Developed custom TYPO3 extensions
  • 90+ Score on TYPO3 SEO, speed & accessibility
  • 70+ Published free & premium TYPO3 extensions
  • 13+Years of TYPO3 experience
  • 5+Bestseller TYPO3 extensions (T3AI, Slider Revolution)
TYPO3 Extension Gig
Extension

Post a Comment

×
Captcha Code Kann das Bild nicht gelesen werden? Klicken Sie hier, um zu aktualisieren
  • user
    Nikita Hovratov 2020-10-09 um 3:33 pm
    Really nice article! Exactly what i needed, thank you.
  • user
    Erik Vogel 2020-09-04 um 2:00 pm
    Thanks Sanjay. The TYPO3 extension upload blog is super awesome and I appreciate you taking the time to detail all this out so well. I bookmarked this page just in case I really need it one day.