Tag Archive for 'script'

Shell Script + Hudson

Shell Script

É muito fácil programar em Shell Script.
Agora que realmente precisei desta feature para incrementar os builds do Hudson, aqui no ambiente do trabalho, acabei gostando mesmo.
E com uma fonte de pesquisa muito 10 chamada CANIVETE ( http://aurelio.net/shell/canivete.html ) , do Aurélio, que me ajuda em tudo, ficou mais fácil ainda.

Achei também um tutorial de “Introdução ao Shell Script”, advinha de quem? Aurélio, que me ajudou muito nos passos iniciais e a entender alguns pontos ainda obscuros para mim.

No Hudson, temos como chamar scripts de Shell Script, e estes recebem os parametros do projeto atual, por exemplo:
Tenho um projeto chamado XYZ, este projeto tem como workspace ‘/home/hudson/workspaces/xyz’ e tem um parametro chamado ‘nome’.
Crio um .sh , e mando o projeto executar, clicando em “Add build step->Execute Shell”, informando o caminho para o shell, por exemplo ‘/home/hudson/scripts/meushell.sh’. Ok !

Neste shell, eu tenho disponível uma gama de variáveis de ambiente, disponibilizadas pelo Hudson, como:

$WORKSPACE = Informa o diretorio da workspace do projeto
$BUILD_NUMBER = Numero do build corrente
$BUILD_ID = Id completo , identificador, do build.
$JOB_NAME = Nome do projeto
$JAVA_HOME = Caminho do java que está sendo executado pelo hudson

E por ai vai …

E mais as variáveis que foram definidas como parametros, quando mandamos o projeto construir, será solicitado um valor para cada paremtro definido, e estes valores chegam em forma de variáveis de ambiente em nosso script, como $NOME, no nosso exemplo supra citado.
O script será executado pelo ‘/bin/sh’ passando -xe como parametro, para que seja mostrado cada comando exetudado pelo shell, ou se você configurar um executor shell direfente, este será respeitado (Hudson->Gerenciar Hudson->Configure System->Shell) .

Aliás, eu gosto de fazer uma estrutura simples de diretorios para trabalhar com cada projeto no Hudson, que seria mais ou menos assim:

HOME:/home/hudson
Logs do hudson: $HOME/logs
Scripts ( sejam eles ant, shell, bat, groovy, etc… ) $HOME/scripts
Locais de Trabalho (workspaces) : $HOME/workspaces/[NOME PROJETO]
Local para atualização de códigos do SVN/CVS: $HOME/workspaces/[NOME PROJETO]/SVN
Local para deposito de artefatos gerados ( somente finais ): $HOME/workspaces/[NOME PROJETO]/BUILD
Local para trabalho de scripts dentro de cada projeto ( arquivos temporarios, alterados, movidos. etc… ) : $HOME/workspaces/[NOME PROJETO]/WORK

/home/hudson
/home/hudson/logs
/home/hudson/scripts
/home/hudson/workspaces
/home/hudson/workspaces/[NOME DO PROJETO]
/home/hudson/workspaces/[NOME DO PROJETO]/SVN
/home/hudson/workspaces/[NOME DO PROJETO]/BUILD
/home/hudson/workspaces/[NOME DO PROJETO]/WORK

Assim, mantemos um padrão para todos os projetos, facilita, e muito, a geração de scripts para os builds.

Fica aqui ume pequeniníssima contribuição de um shell, que limpa arquivos .mine, que as vezes são gerados pelo subversion:

#!/bin/sh
echo Verificando arquivos .mine no caminho: `pwd`
for f in `find . -name *.mine` 
do
    echo Removendo mines de: ${f%.mine}
    rm -rf ${f%.mine}* 
done

Groovy – An agile dynamic language for the Java Platform

Eu como programador que sou, acabo aprendendo/conhecendo várias linguagens de programação.
Umas mais aprofundadamente, outras nem tanto…

E por estes dias, tenho entrado em contato com o Groovy.
O Groovy para quem não conhece: Continuar lendo ‘Groovy – An agile dynamic language for the Java Platform’

Ajuda dos Deuses…

É muito interessante como a comunidade de Linux anda, todos juntos, todos se ajudando e tudo livre !
Acho muito legal os scripts de instalam tudo que precisamos que não vem por padrão nas distribuições escolhidas. Continuar lendo ‘Ajuda dos Deuses…’

Carregar Arquivo JavsScript

Como, se tem utilizado muito esta historia de ajax, acho interessante não deixar todos os scripts JS carregados em nossa pagina quando a carregamos a primeira vez…

E se você nao quer ficar recarregando a pagina todas as vezes que precisa buscar um novo JS ou algum dado novo, pode se utilizar de uma tatica, um tanto interessante: carregar os arquivos JavaScript “on-demand”, ou seja, somente quando necessário.

Assim você pode muito bem repartir e organizar mais ainda suas funcoes JS e, deixar a pagina principal beeeemmm mais rapida para carregar, do que se estivesse com muitas tags scripts no inicio…

Segue, abaixo, uma funçãozinha JavaScript que montei juntando dados de scripts da internet.
A moral é que ela recebe o caminho de um arquivo JS para carregar na pagina, mas porém, retira a tag onde o mesmo JS já foi carregado anteriormente, assim não deixando ficar tags apontadoras para o mesmo arquivo repetidas, e não deixa ficar um monte de lixo desnecessário na pagina, o que pode ocasionar uma lentidão demasiada do browser…

function dhtmlLoadScript(url){
    var e = document.createElement("script"); //Cria o objeto para inserir na pagina..
    e.language = 'JavsScript';
    e.src = url;
    e.type="text/javascript";
    var hdEl = document.getElementsByTagName("head")[0];
    if (hdEl.childNodes.length > 1) { //Se tem filhos..
        for ( var i = 0; i -1 ){
                    hdEl.removeChild(ch);
                }
            }
        }
    }
    hdEl.appendChild(e);
}

Um exemplo completo segue no meu wiki…




Better Tag Cloud