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
TYPO3.org-Konto erstellen
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
TYPO3-Erweiterungsschlüssel registrieren
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/
Öffentliches Git-Repository initiieren
90% der TYPO3-Entwickler verwenden Git-Repositories, um ihre TYPO3-Erweiterungen für öffentliche TER- und private Projekte zu entwickeln und zu pflegen.
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!
TYPO3-Dokumentation vorbereiten
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
Verwaltung von Fragen
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.
Wie veröffentliche ich meine TYPO3-Erweiterung im TER?
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
./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.
Tipps & Tricks für TER TYPO3-Erweiterungen
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
- Nutzlast-URL:https://packagist.org/api/github?username=your-profile
- Inhaltstyp: Bewerbung/JSON
- Geheim: Fügen Sie Ihren API-Token-Schlüssel von Packagist hinzu
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.
// Support TYPO3 Composer Command
composer req nitsan/ns_backup
Einpacken!
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 :)
Post a Comment
- Really nice article! Exactly what i needed, thank you.
- 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.
Sanjay Chauhan
CTO - T3Planet & NITSANSanjay Chauhan, Mitbegründer von NITSAN (Preisgekrönte TYPO3 Agentur) und Pionier von T3Planet, dem ersten TYPO3-Store weltweit.
Ein wahrer TYPO3-Fanatiker seit 2010.
Mit meinem umfangreichen technischen Wissen und…
More From Author