Bitbucket stellt eine nützliche Funktion bereit: automatische Build-Pipelines für Continuous Integration. Jeder Commit (je nach Configuration in einem speziellen Branch) stößt einen automatischen Prozess an. Dieser erstellt einen Docker Container, aus dem dann das Deployment zu einer Integration erfolgen kann. Oder die Pipeline führt nur Tests aus – gibt es einen Fehler im Script der Pipeline, wird eine E-Mail mit der Fehlerinfo verschickt.

Als Nutzer von Lambda mit Node.js gibt es leider kein fertiges Script für das Deployment, nur ein Beispiel für Python. Hier ist meine aktuelle Konfiguration. Der Code kommt in die Datei bitbucket-pipelines.yml und muss im Root vom Projekt liegen:

 

image: node:4.3.2

pipelines:
  default:
    - step:
      script:
        - apt-get update
        - apt-get install -y zip
        - apt-get install -y python
        - apt-get install -y python-pip
        - pip install awscli
        - npm install
        - zip /tmp/deployment.zip -r -q -X *
        - aws lambda update-function-code \
          --function-name $AWS_LAMBDA_FUNCTION_NAME \
          --zip-file fileb:///tmp/deployment.zip

 

Da das Skript eine YAML-Datei ist, sind die Einrückungen natürlich genau so einzuhalten.

Danach müssen die Pipelines noch in den Settings vom Bitbucket Projekt aktiviert werden, und die folgenden Umgebungsvariablen gesetzt werden:

  • AWS_ACCESS_KEY_ID
  • AWS_DEFAULT_REGION
  • AWS_LAMBDA_FUNCTION_NAME
  • AWS_SECRET_ACCESS_KEY

Diese Variablen können auch im persönlichen Nutzerprofil hinzugefügt werden – was sich für den Access Key, Secret Access Key und vielleicht die Default Region anbieten würde. Der Lambda Funktionsname dagegen wird sehr wahrscheinlich vom Projekt abhängen.

Bis zu 500 Minuten Pipeline Processing pro Teammitglied sind bis 2017 kostenfrei verfügbar. Bei meinem kleinen Beispielprojekt dauert die Pipeline etwa 30 Sekunden.

Einen zeitlichen Vorteil sehe ich daher erst bei größeren Projekten; aktuell wäre ich mit einem Upload vom kompletten Code zu Lambda auf meinem Rechner nicht viel langsamer.

Frühjahrsputz

Achja, das Internet, der “rechtsfreie Raum”… Impressumspflicht, Datenschutzerklärung, Verlinken und Einbinden von Medien auf sozialen Netzwerken… ich habe ernsthaft keine Lust mich damit zu belasten. Das hier ist ein privates Blog, nur für mich (und Family), was unschwer an der Anzahl der öffentlichen Postings zu erkennen ist.

Ich habe pauschal alles entfernt um Abmahnern keine Grundlage zu geben. Die Webseite ist privat, ich verdiene damit kein Geld, ich habe kein Google Analytics eingebaut, es gibt keine Banner, die Seite dient ausschliesslich persönlichen und familiären Zwecken. Rechtsanwälte, Politiker: geht weg, verlasst diese Seite. Bitte.

You know it’s Christmas…

when the airline of your choice plays Christmas songs during boarding. And the girl in the row behind you hums along to “Do they know it’s Christmas”.

So cool.

Recently I needed to calculate the distance between two points. Not too difficult by itself, all you need is the square root of the X/Y distances:

sqrt( (x1 - x2) * (x1-x2) + (y1 - y2) * (y1 - y2) )

Thing is: CLDC 1.0 does not have a sqrt function, only CLDC 1.1 has… Plus, double and float are also both CLDC 1.1 – which is OK, since I only needed an integer value.

Wikipedia proved to be a good source of information, once more, so I found that I could implement the Newton Method to achieve the desired result. Since I had no luck finding appropriate code with Google that I could employ, I wrote the function myself. See code below.

Read the rest of this entry »

Memo to myself: code nuggets

This post is more for my own benefit than for the public out there. Whenever I do some coding (rarely, which is part of the problem) I come across a problem and, after some trying & researching, possibly a solution.

However, after some time this solution is lost in the depths of my source codes. And a new research is sometimes futile – plus I reject the notion of going through the hoops again, since I already should know what to do. So, now I’ll drop little code nuggets here, so I can find them again with less effort. It’s certainly not an entertaining post, but it helps me.

First item: toggling boolean variables

I like to work with boolean values, and sometime I need to toggle them. So a true becomes false and vice versa. Of course this should be a short oneliner. Not an if-else construct. A good approach is:

boolean = boolean ? false : true;

I tend to use the ?: operator ad nauseum… so  an even better approach is (and my preferred way to do it):

boolean ^= true;

What is this? A XOR assignment operator, similar to += or -= If boolean is true, then the XOR return false (because it is not an inclusive OR). If boolean is false, then the XOR returns true. Mission accomplished.

Out Of Office…

Well, you probably have received an automated out-of-office reply mail at some point in life. And maybe you have created one yourself already. Normally it’s just a sentence or two, saying "I’m not here, I’ll read your mail later." Here is one I received today:

"As you read this I might be sunbathing in the Andalusion sun, eating tapas or maybe reading a book. I will be back in the office on the 12th of September and will try to get back to you asap."

Just the though of the beach and tapas kind of relaxed me already, so this is definetely one of the more noteworthy messages.

Creative Commons License - © 2007 Codecat - powered by WordPress