T3DD13 Deployment Workshop – t3xutils – (Part 5/10)

This article is part of a series about my deployment workshop on the T3DD13. Make sure to read the other posts, too.

TYPO3 Extension Utilities

With the refactoring of the core extension manager in one of the last version, it losts the ability to upload extensions to the TYPO3 Extension Repository (TER). By that time I wanted to release an extension in the TER (i think it was the EXT:caretaker), but wasn’t able to do so, because I had no old TYPO3 instance running, which i could utilize for it. I asked myself why one needs a running TYPO3 instance at all, to upload an extension to the TER.

So I started to dig into the extension manager code, which is in charge for up- and downloading extensions to the TER. The result is a standalone PHP script called „t3xutils“.

t3xutils

The script is a full TER client. It can upload extensions to the TER, as well as downloading extensions in a specific version and fetch and show the extension metadata. But it also create and extract .t3x file (archives containing an TYPO3 extension).

It is available on Github https://github.com/etobi/Typo3ExtensionUtils.

deployment?

You might ask: „how is this related to my TYPO3 CMS deployment?“. A valid question.

If you just want to deploy your TYPO3 instance and all of the used extension coming for your or any other repository, you might not need the t3xutils. But for example if you are maintaining an own extension in the TER, and think of automating processes, this can be very helpful (release to TER on tagging in git). Also the ability to fetch and extract extension from the TER using CLI only (e.g. to automate a setup of an new instance and if you don’t have an TYPO3 instance yet) might be a usecase, too.

others and the future of „t3xutils“

Elmar Hinz created an command-line TER client called „EXT“, which is using the „t3xutils“ as library for the uploading and wraps it in a comfortable useable cli tool.

Christian Zenker started to refactor the whole t3xutils to base it in the Symphony Console component, which totally makes sense. He has done an awesome job on this so far. His fork is on github, too, and I’m currently working to review and merge it back to my repository and make it the default.

If you are already using, or going to use, the t3xutils, please consider testing the dev-2.0 branch from my repository on github and provide feedback on it. I will appreciate that a lot!

T3DD13 Deployment Workshop – EXT:coreapi – (Part 4/10)

This article is part of a series about my deployment workshop on the T3DD13. Make sure to read the other posts, too.

We all love the CLI, don’t we?

While administrating TYPO3 CMS instances, you quickly stumble over common tasks, like clearing the caches, you only able to do by open up a browser, login in the backend and do it there. This might be no problem for one single instance or small projects, but if you want to execute these tasks in a automated deployment, you need a new way to run them. You need a way to do it from the CLI.

There are some extensions, which address this issue and solve it for single tasks: For example EXT:cleartypo3cache provides a CLI command to clear the caches and EXT:t3deploy enables you to run a database compare from CLI, too.

EXT:coreapi

When I started to think about automated deployments for TYPO3 CMS, the idea of EXT:coreapi raised up. How awesome, if i (as a developer) could do anything using the CLI instead of need to do it in the browser…

EXT:coreapi is supposed to provide an easy to use API for the „everything“ one might want to automate or just like do it from CLI, but is only able to do using the backend before. It abstracts the internal TYPO3 APIs, which might differ in major TYPO3 versions (4.5, 6.x, …). EXT:coreapi implements and offers service classes, which can be used in your own extension (e.g. to build a custom webservice). But most important, it provides commands to run from CLI, too.

Besides of the probably most needed „database compare“ and several „clear cache“ commands (clear all, clear pages cache, clear configuration cache) it offers commands to handle extensions (info, listInstalled, updateList from TER, fetch an extension from TER, import an extension, install / uninstall extension, create upload folders, configure extension).

plans

It’s also planed to provide more commands/APIs, like

  • managing backend users (list, create, update, delete)
  • printing/output the page tree or sub trees
  • a generic data API to list/create/update/delete any records by using the internal DataHandler (aka tcemain) of TYPO3
  • run and check reports from the reports module
  • list, get and set TYPO3 configurations (e.g. TYPO3CONFVARS)
  • create database dumps (and excluding all caches tables and e.g. sys_log if you want)
  • im-/export .t3d files
  • output/analyze TypoScript for a certain page (like the Template Object Browser in the Backend)

During the workshop on the T3DD13 a small group formed and discussed, what’s missing and can be improved. You will find a protocol here.

EXT:coreapi is available on github and we collect and discuss the ideas, and feature requests there. Feel free to join the discussions in the issues on github and fork the project to solve some of the issues. I’m really looking forward to your pull requests.