rulu ruru

post Zavírám krám

August 7th, 2011

Filed under: other — starenka @ 18:43

Protože mě tahle šablona nudí, je nečitelená a především už mě doněkonečna nebaví bojovat s Wordpresem, rozhodnul jsem se to tady zabalit a rozjet si jinej bložínek. Takže jestli to tady ještě někdo čte, prosím zabukmarkovat si http://tailf.starenka.net a případně opravit feed na http://tailf.starenka.net/feeds/rss/blog. Mějte prosím trpělivost, nemám zrovna moc času, takže je možný že vzhled, ale možná i funkce budou ze začátku drhnout. Ale na to už jste stejně zvyklý… 

Tenhle bložínek tady prozatím zůstane, protože sem chodí docela dost lidí na některý konkrétní posty a jelikož jsem momentálně opravdu línej je pževádět a dělat redirekty. Ale bylo nám tu dobře, ne?

post Jenkins, Django, virtualenv, mercurial (a Debian)

July 30th, 2011

Filed under: programming — starenka @ 19:40
Tags: , , , , , , ,

 Nedávno jsem rozcházel testovací stroj pro Django projekty postavenej na Jenkinsu a jelikož informace o tomhle setupu jsou tak nějak polovičatý a navíc porozházený po internetech, rozhod’ jsem se to malinko rozepsat. Jenkins můžete s minimálním úsilím zaměnit za Hudson a Mercurial za git, Bazaar, SVN či kýhošlaka. Debian samozřejmě taky nehraje zásadní roli.

Nejdřív rozjedeme Jenkins:

echo ‘deb http://pkg.jenkins-ci.org/debian binary/’ >> /etc/apt/sources.list
aptitude update; aptitude install jenkins

Pokud je vše v pořádku, doinstalujeme pár pluginů. Takže nakopnout browser na http://localhost:8080/pluginManager/available a zaškrtnout: Mercurial Plugin (na Mercurial), Hudson Setenv Plugin (podpora ENV proměnnejch), Cobertura Plugin (coverage reporty), Violations (hlášení o prasení kódu z pylint a spol.), ChuckNorris Plugin (ehm) a Green Balls (ano, taky vám přijde zelená kulička po úspěšným buildu lepší než modrá?)

Až dorestartujete (jo, je to v Jáááááááááávěěěěěěěěěě), šup nastavit Mercurial na http://localhost:8080/configure

Cesty se samozřejmě můžou lišit, čili Executable zjistíte pomocí which hg a Installation directory vypreparujete z dpkg -L mercurial. To je co se týče Jenkinsu samotnýho všechno a tak jady vytvořit novej (Build a free-style software project) projekt http://localhost:8080/view/All/newJob

 

 

Obrázek je za sto slov, takže jen telegraficky. V sekci SCM nastavit cestu k repozitáři projektu, Jenkins tak díky Poll SCM (Build trigger), bude vědět, že do větve někdo pushnul novou revizi a spustí build. Schedule si nastavte dle potřeb, syntax je ne-nepodobnej crontabu, samozřejmě se nemusíme bát použít nápovědu. Jakmile, se Jenkins dozví, že přibyla nová revize, sám si ji potáhne. (Občas se mu to ale nepovede, v takovým případě nezbejvá nic jinýho než wipenout celej workspace)

V Build Environment de fakto aktivujeme virtualenv v adresáři .env (viz níže) a volitelně do PHYTONPATH přihodíme další potřebný knihovny (tady 3rdparty pro modifikované knihovny třetích stran a ourawesomelibs kde jsou naše skvělý knihovny sdílený napříč projekty). 

V sekci Build se děje většina tohole celýho mažiku. Myslím, že tady nemusím recitovat slovo od slovo, co ten skript dělá, ale kdyby to byl někdo chabrus na bash, tak pro jistotu: Zjistíme, jestli už máme vytvořený virtualenv a případně ho vytvoříme. Pak si naklonujeme nebo updateneme knihovny zmíněný výše. Nakonec použijeme pipinku na doinstalovaní knihoven, který náš projekt potřebuje. Preferuju dva soubory - jeden s knihovnama potřebnýma pro projekt a další, kde jsou knihovny potřebný pro otestování, lint, coverage a napojení na Jenkins (requirements_test). Po sestavení (updatnutí) envu se spustí samotný testy.

Po buildu si necháme ještě pěkně vymalovat code coverage (Cobertura), prohřešky naprásknutý pylintem (Violations) a hlavně taky výsledky testů (JUnit test result report). Všechno předatlovat z obrázku výše.

A to mám jako všechno přepisovat, jo? 

Moc toho na psani neni, ale ok:

#ENV vars
PATH=${WORKSPACE}/.env/bin:$PATH
PYTHONPATH=${WORKSPACE}/.env/LIBS/3rdparty:${WORKSPACE}/.env/LIBS/ourawesomelibs:$PYTHONPATH

##bash

if [ -d ".env" ]; then
    echo "**> Virtualenv already exists"
else
    echo "**> Creating virtualenv"
    virtualenv .env
fi

echo "**> UPDATING LIBS"
for lib in "3rdparty" "ourawesomelibs"; do
   if [ ! -e "$WORKSPACE/.env/LIBS/" ]; then
      mkdir "$WORKSPACE/.env/LIBS/"
   fi

   cd "$WORKSPACE/.env/LIBS/"

   if [ -e "$WORKSPACE/.env/LIBS/$lib" ]; then
      cd "$WORKSPACE/.env/LIBS/$lib"
      hg pul
      hg up
   else
      hg clone ssh://chrootuser@repo.myawesomcompany.cz/home/chrootuser/repos/LIBS/$lib
   fi
done

cd "$WORKSPACE"
pip install -r requirements.pip
pip install -r requirements_test.pip
python manage.py jenkins –settings=settings.test

 

Počkej, počkej! A co máš teda v těch requirements_test a jak vypadá ten Django setting pro test?

Mimo obvyklejch nastavení je tady pár věcí, který je třeba nastavit kvůlivá Jenkinsu. Podotýkám, že tohle je setting importující z nějakýho base nastavení a přepisuje jen pár nastavení:

TEST_RUNNER = ‘django_nose.NoseTestSuiteRunner’
#PROJECT_APPS = (,) #if defined, only defined tests will be started

#excluded apps
TEST_EXCLUDES = (    
   #django itself
    ‘django.contrib.auth’,
    ‘django.contrib.contenttypes’,
    ‘django.contrib.sessions’,
    ‘django.contrib.sites’,
    ‘django.contrib.admin’,
    ‘django.contrib.sitemaps’,
   #3rd party
    ‘django_extensions’,
   #test stuff
    ‘django_nose’, ‘django_jenkins’, ’south’,
)

SOUTH_TESTS_MIGRATE = False

INSTALLED_APPS += (‘django_nose’, ‘django_jenkins’,’south’)
 

Díky TEST_EXCLUDES můžeme vyřadit některý appky, nebo konkrétní testy. Nemusíme tedy zbytečně čekat na testy origoš Django appek apod. Do INSTALLED_APPS přihodíme věci potřebný pro testování, který by nám na produkci nebo někde jinde zbytečně strašily. Pokud by nám na prázdný testovací db z nějakýho důvodu haprovaly migrace, mužeme použít SOUTH_TEST_MIGRATE.

Co se týče knihoven, requirements_test říká:

south
coverage
nose
pylint
git+git://github.com/starenka/django-jenkins.git#egg=django_jenkins
#django_jenkins

Pokud nechceš/nepotřebuješ používat EXCLUDED_TESTS, bude lepší použít originál django_jenkins. Ten (můj) fork z GitHubu má právě tuhle fičuru backportlou z django_hudson, ale negarantuju, že to budu udržovat. Ostatní je jasny, coverage na generování coverage statistik, nose jako runner a pylint na statistiky Violations.

No a to je asi víceméně všechno. Ano, dalo se toho napsat rozhodně míň. Na druhou stranu se toho dalo napsat taky o dost víc. Doufám, že i tohle někomu aspoň trochu pomůže. Kdyby nastaly nějaký komplikace, nebojte se ozvat v komentářích.

 

 

post Copywriter

June 1st, 2011

Filed under: python — starenka @ 18:27
Tags: , , , , ,

Dneska dgx hledal nějakou sample databázi bložínku, kterou se posléze rozhod’ vygenerovat sám. Já se samozřejmě učím na státnice, takže vymejšlím, co bych moh’ kromě učení na státnice dělat. Takže díky a tady máte jednoho copywritera. Laholu nebo Vogla to generuje celkem hezky (Lahola): 

Ostatně tak jsme všichni začali poznávat tento svět již jako děti. Každý smysl má svůj tělesný orgán, který žil v letech 384 – 322 před Kristem, jeden z největších filosofů vůbec – Martine – nejen rozum nás dvou se může někdy mýlit, ale ve své ubohosti si tím více myslí, že pojem věřit znamená přijmout určitou pravdu bez rozumového důkazu, respektive účinky nějakým způsobem ať již nynějších názorů anebo co bude ještě těžší – našeho dosavadního způsobu života, jestliže to bude nezbytné, jsme ochotni zříci se ať již oprávněného anebo neoprávněného subjektivního přesvědčení dokonaleji zná pravdu, respektiv e přesněji řečeno – všechny příčiny, od které ostatní vzniknuvší bytí, které samo o sobě na to jiný způsob poznávání, pak máte k dispozici jedno velice jednoduché a spolehlivé řešení, aby mi pak mohli psát své jízlivé e - mailech psal pro studenta Martina by s největší pravděpodobností zemřu dříve než vznikla příčina, pak máte k dispozici jedno velice jednoduché a spolehlivé řešení, aby tito lidé víru přijali zejména na zákl a dě svého rozumového poznání, plus aby mně vystřídala u počítače. Ještě Martine, že všechny jestvující bytí nejsou účinky, a to ještě horší, někdy dokonce i jeden rakouský biskup se kterým jsem o tomhle psát. Nicméně, když se na ni díváme z téhož hlediska – Martine - jedna taková veliká autorita, které Vás trápí, ale někdy s e může mýlit rozum i těch lidí, kteří by měli vyhledat dobrého psychiatra. Kromě toho věřím vážený pane ” génie ”.

Új! Na základě tohohle skriptu jsem sestrojil jediný, samočinný, nevládní Laholátor, Martine (github).
Új Új! Ještě víc ňuňu je Kalužátor, Mojmíre.

 


post Mercurial (hg) shell

February 15th, 2011

Filed under: python — starenka @ 23:55
Tags: , , , ,

post Maralík

February 14th, 2011

Filed under: easter egg, python — starenka @ 17:18
Tags: , , ,

K smrti nenávidim slovo geek. Každej je geek, nerd a kdovícoještě. Nicméně dneska na Twitteru někdo odstartoval opravdu zábavnej hash #CimrmanForGeeks (zaloha) a po pár kvíknutích jsem se rozhodnul moji nejoblíbenější “báseň” tak trochu zvěčnit. Asi to neni vtipný, ale mě to docela bavilo. A to je hlavní, ne? 

Next Page »
ruldrurd
© starenka 2oo7, cute alien monster by noizcut, original theme by Laurentiu Piron - customized by starenka | proudly powered by WordPress