diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 913626d3f4eb02dff3d11a3174a94fddcdc2c022..af96d417d9bd0ec08cfeb12654af854fb680ac18 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,23 +1,56 @@ -# Exemplo usando make e artifacts. - before_script: - # Vamos precisar do build-essential para compilar - apt-get update && apt-get install -y build-essential +# Você pode definir estágios de integração contínua. Estes três estágios +# abaixo são os mais comuns. A ordem em que aparecem define a ordem de +# execução. De forma que os 'jobs' marcados como estágio 'build' executarão +# antes dos jobs 'test', que por sua vez executa antes dos jobs 'deploy'. +# O estágio seguinte só é executado se todos os jobs do estágio anterior +# completarem com sucesso. +# NOTA: ATUALMENTE NÃO EXISTE UMA FORMA DE PASSAR O RESULTADO DE UM ESTÁGIO +# PARA OUTRO, POR EXEMPLO O ARQUIVO COMPILADO EM 'BUILD' PARA SER TESTADO NO +# ESTÁGIO 'TEST'. EXISTE UMA SOLUÇÃO PREVISTA PARA O GITLAB 8.4. +stages: + - build + - test + - deploy + job1: + # Aqui aparece a definição sobre de qual estágio o job faz parte. Se + # nenhum for especificado, o gitlab assume que o estágio é 'test'. + # Repare que o valor foi atribuído na mesma linha, mas poderia ser na + # linha de baixo, como é feito na maioria dos casos. + stage: build + tags: + - debian script: - # Executa comando make + - echo "Estágio 'build'" - make - # Os artefatos são anexados a build e acessíveis na interface do Gitlab. - # Você pode querer anexar binários gerados, arquivos .deb ou qualquer - # coisa que seja fruto da build. - artifacts: - # paths define os diretórios/arquivos que serão arquivados, pode - # colocar uma lista deles. - paths: - - build/ - # Também é possível arquivar todos os arquivos não monitorados pelo - # git. - # - untracked: true + +job2: + # Esse job só será executado se todos os jobs do estágio 'build' + # terminarem com sucesso. + stage: test tags: - debian + script: + - echo "Estágio 'test'" + # Como dito, ainda não é possível passar arquivos de um estágio para + # outro, por isso o comando abaixo vai falhar. + - ./run-test.sh + +job3: + # Os jobs marcados como 'deploy' são os últimos a serem executados. + stage: deploy + tags: + - debian + script: + - echo "Estágio 'deploy'" + # Aqui você pode fazer upload de algo para um servidor. Para isso + # (atualmente) você precisa gerar um par de chaves e colocar a chave + # privada em alguma variável que é passada para os scripts + # abaixo como variável de ambiente. Defina essa variável em + # <projeto>/Settings/Variables. O script deve então salvar essa + # variável (chave privada) em um arquivo para poder utilizá-la com + # ssh. + #- script_que_vai_copiar_para_servidor.sh