website annotate pt/doc/cookbook/build-bot.html @ rev 529

pt: cookbook - general update
author Claudinei Pereira <claudinei@slitaz.org>
date Sun Jul 26 11:36:42 2009 +0000 (2009-07-26)
parents
children c6b2d9c4e031
rev   line source
claudinei@529 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
claudinei@529 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
claudinei@529 3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt" lang="pt">
claudinei@529 4 <head>
claudinei@529 5 <title>Livro de Receitas do SliTaz - Build Bot</title>
claudinei@529 6 <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
claudinei@529 7 <meta name="description" content="slitaz portuguese cookbook" />
claudinei@529 8 <meta name="expires" content="never" />
claudinei@529 9 <meta name="modified" content="2009-06-20 00:10:00" />
claudinei@529 10 <meta name="publisher" content="www.slitaz.org" />
claudinei@529 11 <meta name="author" content="SliTaz contributors"/>
claudinei@529 12 <link rel="shortcut icon" href="favicon.ico" />
claudinei@529 13 <link rel="stylesheet" type="text/css" href="book.css" />
claudinei@529 14 </head>
claudinei@529 15 <body bgcolor="#ffffff">
claudinei@529 16
claudinei@529 17 <!-- Header and quick navigation -->
claudinei@529 18 <div id="header">
claudinei@529 19 <div align="right" id="quicknav">
claudinei@529 20 <a name="top"></a>
claudinei@529 21 <a href="boot-scripts.html">Scripts de Inicialização</a> |
claudinei@529 22 <a href="index.html">Conteúdo</a>
claudinei@529 23 </div>
claudinei@529 24 <h1><font color="#3E1220">SliTaz Cookbook (pt)</font></h1>
claudinei@529 25 </div>
claudinei@529 26
claudinei@529 27 <!-- Content. -->
claudinei@529 28 <div id="content">
claudinei@529 29 <div class="content-right"></div>
claudinei@529 30
claudinei@529 31 <h2><font color="#DF8F06">Build Bot (tazbb)</font></h2>
claudinei@529 32
claudinei@529 33 <p>
claudinei@529 34 O objetivo do Tazbb é automatizar, testar e criar relatórios sobre os
claudinei@529 35 pacotes gerados no wok. A execução do comando <code>tazbb usage</code>
claudinei@529 36 mostra uma lista de comandos disponiveis e sua descrição. O status
claudinei@529 37 do Build Bot pode ser acompanhado na interface web do Tazbb em
claudinei@529 38 <a href="http://bb.slitaz.org/">bb.slitaz.org</a>. Colaborações podem ser
claudinei@529 39 feitas na <a href="http://labs.slitaz.org/wiki/distro/Tazbb">Tazbb Wiki</a>.
claudinei@529 40 </p>
claudinei@529 41
claudinei@529 42 <ul>
claudinei@529 43 <li><a href="#about">Como funciona</a></li>
claudinei@529 44 <li><a href="#cmds">Comandos</a></li>
claudinei@529 45 <li><a href="#woks">Hg e chroot Wok</a></li>
claudinei@529 46 <li><a href="#log">Arquivos de Log</a></li>
claudinei@529 47 <li><a href="#web">Interface Web</a></li>
claudinei@529 48 <li><a href="#hg-hook">Hg hook</a></li>
claudinei@529 49 <li><a href="#cron">Cron Job</a></li>
claudinei@529 50 <li><a href="#db">Arquivos de banco de dados</a></li>
claudinei@529 51 </ul>
claudinei@529 52
claudinei@529 53 <a name="about"></a>
claudinei@529 54 <h3>Como funciona</h3>
claudinei@529 55 <p>
claudinei@529 56 O Tazbb pode ser executado por um cron job e checa pelo último commit
claudinei@529 57 feito por algum colaborador, gerando então os pacotes modificados. A
claudinei@529 58 execução do comando 'tazbb cook-commit' irá gerar novamente os últimos
claudinei@529 59 pacotes modificados. Para gerar novamente todos os pacotes marcados como
claudinei@529 60 'missing', 'modified' ou 'unbuilt' deve-se executar o comando 'tazbb cook-all'.
claudinei@529 61 </p>
claudinei@529 62 <p>
claudinei@529 63 A geração de relatórios procura por todas as receitas (receipts) contidas no wok
claudinei@529 64 e verifica se um pacote foi gerado, se não o pacote é inserido à lista de
claudinei@529 65 compilação. Para os pacotes existentes são comparadas as datas dos arquivos
claudinei@529 66 do repositório (o arquivo 'receipt', o diretório 'stuff', por exemplo)
claudinei@529 67 com as datas contidas no arquivo do pacote no formato 'pacote.tazpkg',
claudinei@529 68 se houver alguma diferença o pacote também é inserido na lista de
claudinei@529 69 compilação.
claudinei@529 70 </p>
claudinei@529 71 <p>
claudinei@529 72 O tazbb também verifica o wok contido no ambiente chroot e checa se o
claudinei@529 73 pacote já foi compilado (procura pela existência de um diretório 'taz/').
claudinei@529 74 Caso o pacote não tenha sido compilado, é gerado um log e o pacote é adicionado
claudinei@529 75 à lista de compilação. Todos os pacotes são compilados por intermédio de
claudinei@529 76 um script, os logs de compilação são armazenados em $LOG_DIR e um link
claudinei@529 77 é criado para ser inserido na interface web do tazbb, de modo a permitir
claudinei@529 78 que os desenvolvedores verifiquem o processo de compilação e corrijam
claudinei@529 79 possíveis bugs.
claudinei@529 80 </p>
claudinei@529 81 <p>
claudinei@529 82 Quando executado com a opção 'cook' o tazbb remove pacotes antigo e/ou
claudinei@529 83 corrompidos e reconstroi todas as listas de pacotes (por meio do comando
claudinei@529 84 'tazwok genlist --text'). Para funcionar corretamente, tanto o tazwok
claudinei@529 85 quanto o tazbb devem ter seus caminhos (path) configurados igualmente.
claudinei@529 86 O arquivo de configuração do tazbb encontra-se em
claudinei@529 87 <code>/etc/slitaz/tazbb.conf</code>
claudinei@529 88 </p>
claudinei@529 89
claudinei@529 90 <a name="cmds"></a>
claudinei@529 91 <h3>Comandos</h3>
claudinei@529 92 <p>
claudinei@529 93 O Tazbb pode ser instalado em sua máquina e executado pela linha de
claudinei@529 94 comando - 'tazbb usage' retorna uma lista de funções disponíveis. Pode-se
claudinei@529 95 executar o programa de modo a obter diversas informações com a opção
claudinei@529 96 '--verbose'.
claudinei@529 97 </p>
claudinei@529 98
claudinei@529 99 <a name="woks"></a>
claudinei@529 100 <h3>Repositório Hg e Wok em modo chroot</h3>
claudinei@529 101 <p>
claudinei@529 102 O Tazbb utiliza 2 woks: um wok do repositório mercurial e um wok para a
claudinei@529 103 compilação de pacotes em um ambiente chroot. A cada vez que o tazbb é
claudinei@529 104 executado os arquivos do wok contido no repositório são atualizados e
claudinei@529 105 copiados para o wok de compilação, o que possibilita manter o wok
claudinei@529 106 principal (do repositório) limpo e permite a modificação manual das
claudinei@529 107 receitas (arquivos nomeados 'receipts'). Se configurado corretamente, o
claudinei@529 108 comando 'tazdev update-wok' atualiza o wok do repositório, copiando os
claudinei@529 109 arquivos necessários para tal atualização.
claudinei@529 110 </p>
claudinei@529 111
claudinei@529 112 <a name="log"></a>
claudinei@529 113 <h3>Arquivos de Log</h3>
claudinei@529 114 <p>
claudinei@529 115 O Tazbb utiliza as ferramentas existentes no sistema SliTaz, como o
claudinei@529 116 tazwok para compilar pacotes, porém gera arquivos de log e possui sua
claudinei@529 117 própria base de dados contida num arquivo de texto. Estes arquivos podem
claudinei@529 118 ser consultados pela interface web e são encontrados em:
claudinei@529 119 <code>/var/log/tazbb</code>
claudinei@529 120 </p>
claudinei@529 121
claudinei@529 122 <a name="web"></a>
claudinei@529 123 <h3>Interface Web</h3>
claudinei@529 124 <p>
claudinei@529 125 O Tazbb mantem logs de todas suas atividades em arquivos de log e num
claudinei@529 126 arquivo que tem por função listar pacotes a serem compilados (cooklist).
claudinei@529 127 Estes arquivos podem ser consultados por intermédio de uma interface web,
claudinei@529 128 permitindo aos desenvolvedores uma visão geral sobre os resultados das
claudinei@529 129 últimas compilações. Esta interface é construida com PHP, CSS e suas imagens
claudinei@529 130 são instaladas em <code>/var/lib/tazbb/web</code>.
claudinei@529 131 A instalação do pacote cria um link simbólico em <code>/var/www/vhosts</code>,
claudinei@529 132 provendo fácil acesso aos arquivos de log por intermédio de um host
claudinei@529 133 virtual na máquina local, que podem ser acessados pelo endereço:
claudinei@529 134 <code>http://localhost/vhosts/bb</code>.
claudinei@529 135 </p>
claudinei@529 136
claudinei@529 137 <a name="hg-hook"></a>
claudinei@529 138 <h3>Hg hook</h3>
claudinei@529 139 <p>
claudinei@529 140 O Mercurial possui um mecanismo poderoso que executa tarefas automaticamente
claudinei@529 141 em resposta a eventos que ocorrem em um repositórios. Estas tarefas
claudinei@529 142 automáticas são chamadas de 'hooks'. Utiliza-se esse mecanismo para
claudinei@529 143 executar o tazbb a cada vez que um commit é feito no repositórios,
claudinei@529 144 bastando apenas adicionas um 'hook' no arquivo de configuração do
claudinei@529 145 repositório mercurial (o arquivo .hgrc). Exemplo:
claudinei@529 146 </p>
claudinei@529 147 <pre class="script">
claudinei@529 148 [hooks]
claudinei@529 149 commit = tazbb cook-commit
claudinei@529 150 </pre>
claudinei@529 151
claudinei@529 152 <a name="cron"></a>
claudinei@529 153 <h3>Cron Job</h3>
claudinei@529 154 <p>
claudinei@529 155 O Tazbb também pode ser executado por intermédio de um cron job, compilando
claudinei@529 156 os pacotes adicionados ou modificados no repositórios em horários pré
claudinei@529 157 determinados. Pode-se também atualizar o relatório gerado pelo tazbb
claudinei@529 158 ou compilar todos os pacotes contidos no wok. Deve-se tomar o cuidado
claudinei@529 159 de deixar um bom espaço de tempo entre as execuções do tazbb, visto que
claudinei@529 160 se uma compilação ainda não tiver terminada ou se o tazbb for executado
claudinei@529 161 manualmente e aí for rodado um cron job, o comando será terminado pois
claudinei@529 162 o arquivo /var/lock será travado. Exemplo de um cron job que executa
claudinei@529 163 'tazbb cook commit' a cada duas horas e que compila todos os pacotes do
claudinei@529 164 repositório todos os dias à noite:
claudinei@529 165 </p>
claudinei@529 166 <pre class="script">
claudinei@529 167 */2 * * * * /usr/bin/tazbb cook-commit
claudinei@529 168 03 02 * * * /usr/bin/tazbb cook-all
claudinei@529 169 </pre>
claudinei@529 170
claudinei@529 171 <a name="db"></a>
claudinei@529 172 <h3>Arquivos da base de dados</h3>
claudinei@529 173 <ul>
claudinei@529 174 <li>blocked : Lista de pacotes bloqueados</li>
claudinei@529 175 <li>cooklist : Lista de compilação atual ou da próxima compilação</li>
claudinei@529 176 <li>corrupted : Lista de pacotes corrompidos</li>
claudinei@529 177 <li>packaged : Todos os pacotes contidos no wok de compilação</li>
claudinei@529 178 <li>removed : Últimos pacotes removidos</li>
claudinei@529 179 <li>report : Último relatório gerado por check_{wok,commit}</li>
claudinei@529 180 <li>running : Tarefas rodando atualmente</li>
claudinei@529 181 <li>summary : Último resumo gerado para a interface web</li>
claudinei@529 182 <li>unbuilt : Lista de pacotes não compilados</li>
claudinei@529 183 </ul>
claudinei@529 184
claudinei@529 185 <!-- End of content -->
claudinei@529 186 </div>
claudinei@529 187
claudinei@529 188 <!-- Footer. -->
claudinei@529 189 <div id="footer">
claudinei@529 190 <div class="footer-right"></div>
claudinei@529 191 <a href="#top">Topo da Página</a> |
claudinei@529 192 <a href="index.html">Conteúdo</a>
claudinei@529 193 </div>
claudinei@529 194
claudinei@529 195 <div id="copy">
claudinei@529 196 Copyright &copy; 2009 <a href="http://www.slitaz.org/en/">SliTaz</a> -
claudinei@529 197 <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public License</a>;<br />
claudinei@529 198 Documentation is under
claudinei@529 199 <a href="http://www.gnu.org/copyleft/fdl.html">GNU Free Documentation License</a>
claudinei@529 200 and code is <a href="http://validator.w3.org/">valid xHTML 1.0</a>.
claudinei@529 201 </div>
claudinei@529 202
claudinei@529 203 </body>
claudinei@529 204 </html>