Meetup

Web‑Worknights

Warum Web‑Worknights?

  • Möglichkeit zum Austausch für Unerfahrene bis Profis
  • IAD Lehrgang

Stefan Huber

  • Web-Bastler seit ~ 19 Jahr
  • Web-Entwickler seit ~ 13 Jahr

THX

Schule für Gestaltung Zürich

DANGER!

There will be live-coding...

Techniken

  • GitHub/Git
  • NodeJS
  • mdx-deck
  • no docker :(

Travis CI

Was kostet es?

Fokus in diesem Talk

  • Web-Projekte
  • NodeJS-Projekte

CI?

Continuous Integration

Continuous Integration

  • Zwischen Entwicklung und Auslieferung wenig Reibung
  • Schnelle Release-Zyklen

Was macht nun Travis CI?

  • Ich sage, was Travis macht!
  • Einfache Konfiguration
  • Ausgelöst durch GitHub (webhook)
  • Läuft als Software as a Service (SaaS)

Typische Tasks

  • Testing
  • Deployment
  • ...

Testing

  • Überprüft ob neuer Code läuft
  • Travis führt Tests aus – Entwickler muss Tests schreiben.

Deployment

  • Auslieferung von Software an Server
  • Meist nach bestandenem Test

Deployment?!

Unterschied?

  • Docker Cloud macht Container (ähnlich einem Computer)
  • Travis kann Container machen – muss aber nicht

Demo

Setup

mdx-deck

new hot shit in town...

npm init

Konfiguration

  • .travis.yml im Hauptverzeichnis genügt

Konfiguration

language: node_js
node_js: stable
install:
  - npm ci
script:
  - npm run build
deploy:
  provider: pages
  local-dir: ./dist
  skip-cleanup: true
  github-token: $GITHUB_TOKEN
  on:
    branch: master

Umgebung aufbauen

language: node_js
node_js: stable

mögliche Sprachen

Packages Installieren

install:
  - npm ci

oder auch

install:
  - npm install

Arbeit machen

script:
  - npm run build

Deploy

deploy:
  provider: pages
  local-dir: ./dist
  skip-cleanup: true
  github-token: $GITHUB_TOKEN
  on:
    branch: master

Konfiguration

language: node_js
node_js: stable
install:
  - npm ci
script:
  - npm run build
deploy:
  provider: pages
  local-dir: ./dist
  skip-cleanup: true
  github-token: $GITHUB_TOKEN
  on:
    branch: master

Test erstellen

"scripts": {
  "test": "echo "Error: no test specified" && exit 1"
},

Test erstellen

"scripts": {
  "test": "sh test.sh",
},

Test-Script

#!/bin/sh

 if grep "{swear word}" deck.mdx
 then
     # code if found
      exit 1
 else
     # code if not found
      exit 0
 fi

Konfiguration

language: node_js
node_js: stable
install:
  - npm ci
  - npm test
script:
  - npm run build
deploy:
  provider: pages
  local-dir: ./dist
  skip-cleanup: true
  github-token: $GITHUB_TOKEN
  on:
    branch: master

Merci