Bizitza sinplifikatu nahian erremintak sinplifikatzen hasi naiz.

Alde batetik Phabricator-ek garatzerako garaian beharrezkoak diren erreminta guztiak (esango nuke) eskeintzen ditu (issue-ak, paste-ak, biltegiak, wikia, egutegia, fitxategi partekatze sinplea, taldeak, kanboard, …) eta denak gune berean biltzen ditu. Funtzio berberak egiteko lauzpabost software ezberdin beharko lirateke, eta elkarren artean kordinatzea lortu… Instalatzea erraza da, funtzionaltasun guztiak konfiguratzea konplexuagoa, mantenua erraza du. Pixkana hobetzen eta funtzionaltasun berriak gehitzen ari dira, Phabricator bera erabiltzen dute garatzeko. Ultimate garapen erreminta da niretzat!

Phabricator-en promozioaren ostean guazen sinplifikazioaren hurrengo fasearekin: bloga(k).

Wordpress oso ondo dago, gauza pila egin daitezke eta nire lanaren zati bat da, besteak beste. Baina nire blog kutreetarako gehiegizkoa da: mantentzea behar du, konplexua da, hosting-a behar du… Eta blog bakoitzeko biderkatu egiten da.

Bizitza sinplifikatu nahian eta idazketa esperientzia hobetzearren web orri estatiko generadore bat erabiltzea erabaki det. Bilaketa azkar baten ostean Hexo-ri aukera eman diot, node.js darabilkielako, sinplea, pluggable-a… eta itxurak garatzeko jade (orain pug) erabili daitekelako. Eta nola ez, Markdown-en idazten direlako testuak.

Hexo erabiltzen hastea erraza da:

npm install hexo-cli -g
hexo init blog
cd blog
npm install
hexo server

Dena den, artikulu honen intentzioa ez da Hexo erabiltzen azaltzea. Artikulu honen intentzioa Hexo blog bat git bidez kudeatzeko era bat azaltzea da. Guazen ba.

GitLab erabiliko det, kaña handia ematen ari diren proiektu oso interesgarria delako eta zuk zeuk zeurea instalatu dezakezulako. Gainera GitLab CI proiektua (librea) integratua dute garapen prozesuak (test, build, deploy …) modu sinplean automatizatzeko. Phabricator-ek badu funtzionaltasun hau (hobetzen ari dira gainera) baina GitLab-ena frogatu nahi det. Bizitza sinplifikatzearren beraien doako zerbitzua erabiltzea erabaki det, kontuan izan edozein momentutan zurea prestatu eta bertara migratu daitekela guztia.

GitLab duela gutxi hasi da Pages eskeintzen. GitHub-en antzera, git biltegi batean dagoen eduki estatikoa zerbitzatzen dute. GitLab CI erabilita prozesua automatizatzeko aukera dago. Dena den, blog honen kasuan, edukia nire zerbitzariak zerbitzatzea nahi dut (oraingoz) baina Pages-en froga egingo det Hackmildegia-ren webgunearekin laster.

GitLab CI erabiltzeko gure proiektuaren karpeta nagusian .gitlab-ci.yml izeneko fitxategia sortu behar da. Exekutatu behar dituen lanak eta konfigurazioa idatziko ditugu bertan, irakurri dokumentazioa egin daitekena ikusteko.

Blog honen kasuan prozesu bakarra dago: dependentziak instalatu, orrialde estatikoak sortu eta publikatu. Git biltegian commit bat jasotzen den bakoitzean exekutatuko da, horrela, artikulu berri bat pusheatzean automatikoki sortu eta publikatuko da.

GitLab Ci-k, lanak exekutatzeko runner bat erabiltzen du. Runner publikoak erabiltzeko aukera eskeintzen dute, baina segurtasun/pribatasunik gabeko makinak dira. Hori dela eta runner propioak instalatzea da aukera bat. Oso erraza da martxan jartzea. Docker-ekin mobida guapoak egin daitezke (on-demand runners) baina nahiago nuke lxc erabili eta paso oraingoz.

Hona hemen baibalab.net-en .gitlab-ci.yml:

deploy:
  cache:
    paths:
    - node_modules/

  script:
  - bash deploy.sh
  artifacts:
    paths:
    - public
  only:
  - master

Hexo blog bat GitLab-en kudeatu/publikatzeko eredu proiektua oinarri, aldaketa batzuk egin behar izan ditut, GitLab Pages erabiliko ez dudalako besteak beste. deploy izeneko lan bakarra dago, deploy.sh izeneko Bash script bat exekutatzen duena. Hona hemen elementu interesgarria, GitLab CI-k exekutatu ditzakeen scriptak gehitu daitezke proiektuari: build, test… prozesuak/scriptak git bidez kudeatu daitezke :______)

Bash scripta honakoa da:

#!/bin/bash
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.26.1/install.sh | bash
source ~/.nvm/nvm.sh
nvm install
nvm use
npm install hexo-cli -g
npm install
hexo generate
rsync -v -az public/ $DEPLOY_USER@$DEPLOY_HOST:$DEPLOY_DIR

Ikusten den bezala nvm instalatzen du lehen. Proiektu bakoitzkeko node.js bertsio espezifikoa erabiltzeko eta node.js eta npm pakete globalak erabiltzalearen inguruan instalatzeko (sitema ez kakazteko zein pribiliegiorik gabe exekutatzeko ideala) aukera ematen du, besteak beste.

nvm install eta nvm use proiektuaren .nvmrc fitxategiak dioen node.js bertsio instalatu eta erabiltzeko dira, hurrenez hurren. Ondoren Hexo instalatzen da, globalki. Mobida guzti hau GitLab Ci runner-aren pribilegiorik ez duen erabiltzaileak exekutatu ahal dezan. Ondoren npm dependentziak instalatu (npm install), orri estatikoak sortu (hexo generate) eta rsync bidez publikatu.

Badago horretarako Hexo plugin bat baina akatsen bat du (konponduko dutela imajinatzen det) eta gainera GitLab-en bidez kudeatu daitezken ingurune aldagaiak frogatu nahi ditut. $DEPLOY_HOST, $DEPLOY_USER eta $DEPLOY_DIR, GitLab-en proiektuaren konfigurazioaren bidez, GitLab CI runner-ak izango dituen ingurune aldagaiak dira. Kasu hontan gertatzen den bezala, git biltegira kodea bidaltzean, nahi gabe, gure dev-ops prozesuen informazio sensiblea bidaltzea ekidingo dugu! Edo script berbera proiektu ezberdinetan aldaketarik gabe erabiltzeko aukera izango dugu.

Rsync-ek interakziorik gabe funtziona dezan pasahitzik gabeko ssh giltza bat sortu diot gitlab-runner erabiltzaileari zerbitzarian www karpetan idazteko baimenarekin (ISPConfig-ek kudeatua).

Eta… kitto! Artikulu berria idatzi, commit, push eta profit!

BONUS! Eguneroko erremintak bloga idazteko:

ionic-logo