Travis CI: No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb)

Bei der sehr kryptischen Fehlermeldung in Travis CI:

No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb)

handlet es sich um ein Problem mit falschen Einrückungen im travis.yml File:

matrix:
  include:
    - php: 5.6
      env:
        - SYMFONY_VERSION='3.4.*'

Ein Leerzeichen zu wenig in der Zeile – SYMFONY_VERSION=’3.4.*’ und es kommt zu diesem wenig aufschlussreichen Fehler.

GitHub Continuous Integration und CodeCoverage mit Travis CI

Für mein öffentliches GitHub Projekt Entity to Rest Bundle für Symfony, habe ich Travis CI, ein Service einer Frima aus Berlin/Friedrichshain, für Continuous Integration benutzt und bin vollbegeistert. Ich musste nur eine .travis.yml erstellen und mich mit meinem Github Account kostenlos anmelden und mit wenigen Handgriffen kann ich jetzt mittels Travis CI:

  • Testen von unterschiedlichen PHP-Versionen
  • Testen von unterschiedlichen Symfony Versionen
  • Markup auf GitHub über den Stand der Tests: Build:success/failed
  • automatische E-Mail Benachrichtigung über das Ergebnis nach jedem Pull-Request

Jetzt erscheint eine schicke Grafik und informiert über den aktuellen Build Status:

travis_github_ci

Das Ergebnis des Builds kann man sich anschauen auf der travis ci Webseite.

Hinweis: Für öffentliche GitHub Repositories ist der Service kostenlos, für private Repositories muss man bezahlen.

Um die CodeCoverage auch anzeigen und berechnen zu können, kann man sich kostenlos bei einem der beiden Anbieter anmelden und muss nur die CodeCoverage Generierung in seiner .travis.yml triggern.

https://codecov.io  Beispiel Projekt

https://coveralls.io Beispiel Projekt

PHP Queue Systeme im Vergleich

Ein Vergleich verschiedener Queue Systeme für den Einsatz in einer PHP Applikation.

Apache ActiveMQ

Das Apache Projekt ActiveMQ bietet:

  • realtiv wenig Clients in verschiedenen Sprachen Java, C, C++, C#, Ruby, Perl, Python, PHP
  • die Kommunikation von PHP mit ActiveMQ erfolgt über das Stomp Protocoll
  • einen Stomp/ActiveMQ Client bietet stomp-php
  • Enterprise Einsatz möglich
  • Apache Projekt – Weiterentwicklung ist sicher
  • Open Source
  • eher veraltet

RabbitMQ

RabbitMQ ist ein modernes, weit verbreitetes Queue System.

  • große Auswahl an Clients
  • für PHP ist der php-amqplib Client am weitesten verbreitet
  • einfacher und moderner zu handeln
  • sehr gute Dokumentation
  • Enterprise Einsatz möglich
  • Open Source

Apache Kafka

Apache Kafka ist das modernste Queue System, die Besonderheit

  • extrem performant durch den Einsatz von Streams
  • PHP Clients vorhanden: php-rdkafka
  • Enterprise Einsatz möglich
  • sehr gute Dokumentation
  • Apache Projekt – Weiterentwicklung ist sicher
  • Open Source

Fazit:

Aufgrund des einfachen Handlings würde ich für die meisten Aufgaben RabbitMQ empfehlen. Für Performance kritische Anwendungsfälle ist Apache Kafka am besten geeignet.

Eine Übersicht über weitere Messaging Queues findet man auf Wikipedia.

Laravel Homestead installieren von PHP Ondrej Packages

Wenn man in einer Homestead Box versucht Ondrej Packages zu installieren bekommt die Fehlermeldung:

sudo apt-get install php-ldap
Error:1 http://ppa.launchpad.net/ondrej/php/ubuntu xenial/main amd64 php7.1-ldap amd64 7.1.10-1+ubuntu16.04.1+deb.sury.org+1   404  Not Found

Dies liegt daran das das Ondrej Repository nicht bekannt ist in der Box. Es kann hinzugefügt werden mit:

sudo add-apt-repository -y ppa:ondrej/php
sudo apt-get -y update
sudo apt-get install php-ldap

SSL für alle und kostenlos mit certbot.eff.org

HTTPS und SSL ist wichtig für jede Webseite und oft ein lästiger Zeitvertreib, wenn die Zertifikate ablaufen und man ganz schnell die aktuellen Zertifikate installieren muss.

Eine einfache und ksotenlose Alternative ist Let’s Encrypt, die einen kostenlosen Service anbieten mit dem man nicht nur sehr schnell (5 Minuten) SSL Zertifikate installieren kann, sonder der sich auch um die Aktualisierung der Zertifikate kümmert, die alle 90 Tage ablaufen.

Dazu installiert man einen Client auf der Console namens certbot, der automatisch die Zertifikate beim hauseigenen Webserver/Loadbalancer einbindet (nginx, apache) und später per Cronjob aktuell hält.

Eine tolle Sache, habe ich auf der Seite baby-taschenrechner.de im Live Einsatz und bin sehr zufrieden.

Docker – eine Einführung

Docker ist ein Virtualisierungs-Tool, mit dem sich Betriebsystemumgebungen und dort lauffähige Software in Container verpackt werden kann und auch auf betriebsystemfremden Umgebungen ausgeführt werden kann.

Die Vorteile von Docker:

- mit Docker können sehr einfach Container ausgetauscht werden, dies hilft bei der Arbeit an gemeinsamen Projekten weiter, wenn Infrastruktur angeapsst werden muss, erst auf der dev Umgebung, dann auf der Test Umgebung usw. So können Test mit der passenden Umgebung ausgeführt werden, man hat somit eine dynamische Testumgebung, anstelle einer statischen

- performance Vorteile gegenüber virtuellen Maschinen

- die Container machen es einfacher, die Entwicklungsumgebung bei Softwareprojekten allen Teilnehmern schnell und einfach zur Verfügung zu stellen. Dadurch wird das Onboarding einfacher und Abhängigkeiten werden vermieden, wie z.B. ein Development Server, auf dem alle arbeiten, der aber nicht verändert werden darf

- auch verteilte Systeme könnne so endlich im Development und Testing Umgebung simuliert und getestet werden. Dadurch könnne Fehler früher gefunden und vermieden werden. Wer kennt das nicht, das Produktivsystem besteht aus mehreren Nodes hinter einem Loadbalancer mit Master/Slave Datenbank, aber das Dev/Test/Staging System hat nur eine Node ohne Slave.

- Plattformunabhängikeit: Man kann auf seinem MAC Windows Applikationen laufen lassen im Container ohne Probleme

Docker besteht aus mehreren Komponenten: weiterlesen…

Projekt: baby-taschenrechner.de

Das gerade fertiggestellt Projekt baby-taschenrechner.de beschäftigt sich mit den Fragestellungen rund um die Entwicklung des eigenen Kindes:

  • Wie groß wird mein Kind werden in x-Jahren
  • Wie schwer wird mein Kind in x-Jahren
  • Ist mein Kind zu schwer/zu dünn
  • Welche Kleidergröße wird es wann tragen?

Die Webseite soll Eltern dabei helfen herauszufinden, wann sie welche Kleidergröße kaufen müssen, um im nahenden Winter/Sommer das passende zu Hause zu haben.

Eltern können so einschätzne, ob das Kind zu dünn oder zu dick ist  für ihr Alter/Größe/Gewicht-Verhältnis.

Für die Realiserung wurden folgende Technologien verwendet:

Symfony 3, Docker, MySQL, PHP, GIT, Google Material Design, Amazon AWS

ELK Stack auf Amazon EC2 installieren

Um den ELK Stack, bestehend aus:

  • Logstash
  • Elasticsearch
  • Kibana

auf Amazon AWS zum Testen auf einer einzigen Amazon EC2 Instanz zu installieren, kann man wie folgt vorgehen:

Man fährt eine EC2 Instanz hoch, die nicht zu klein ist, was den Ram anbelangt, mindestens eine m4.large mit 8GB Ram und 2 Prozessoren, da Elasticsearch schon gehobene Ansprüche an die Speicher stellt und auch Logstash sehr ressourcenhungrig ist. Als Betriebsystem habe ich Ubuntu-16 gewählt (ami-1e339e71).

Dann kann man eine Elastic-IP auf die Instanz legen, damit man die Instanzen unkompliziert austauschen kann und man trotzdem die IP weiter behält.

Security Groups weiterlesen…