Subtitles for LinuxDays 2016 - Building a free software based development environment - F. Preinstorfer

14   0   0  
  Pause sub
por isso, obrigado por terem vindo ao meu
apresentação que eu vou falar sobre
a construção de um desenvolvimento de software livre
meio ambiente ou gasoduto para uma pequena
empresa basicamente é um pouco do que nós
temos e construído durante os últimos três
anos a nossa empresa
meu nome é o cultivo de plantas mais resistentes eu sou um
engenheiro de sistemas em uma pequena austríaca
empresa startup e fazemos laboratorial
equipamento de teste para papel e celulose
indústria, de modo que, basicamente, construir dispositivos
que vende a clientes e aqueles
clientes usá-lo para testar certos aspectos
por exemplo, papel para que caso um teste
seria a quantidade de água pode um pedaço de
papel absorver o tipo de dispositivos nada
em particular de fantasia a partir de um ponto de tecnologia
de vista que estamos usando na maior parte c ++ assim a maioria
do suave ao terço do que está escrito no
c ++, então há uma Python 3 e
obviamente, a glicose que você precisa
em todos os lugares seria basicamente paixão e
todos os 15
você sabia antes quer realmente
falar sobre o gasoduto eu gostaria de
introduzir alguns dos requisitos que
tivemos e esses são apenas alguns deles
Eu acho que é importante para obter o seu
sensação de do que é necessário pelo menos
para o nosso caso de uso por isso um importante
exigência era ter suporte offline
a sede da empresa está localizada em
Áustria no campo e que é
realmente bom se você olhar para a janela
e isso você pode ver na grama verde
montanhas e basicamente esse o caso
mas não é benéfico em caso de pretender
conexão de internet adequada, de modo que temos um
conexão de internet lenta eo vez
agite você quiser, para que não mais confiam
demais na internet que seria
seria bom para nós
Outra coisa que sabemos do passado
-se que é muito benéfico para não
depende de qualquer máquina do desenvolvedor única
em algum lugar eu tenho certeza que a maioria de vocês têm
ouviu
as histórias ou tê-lo visto com a sua
olhos próprios que alguns laptop alguma máquina
em algum escritório de algum desenvolvedor é
na verdade, o aspecto mais importante de
a empresa, porque sem esses
sem esse laptop certos produtos podem
ser construído em qualquer lugar
Eu não sei se alguém é assim todas as coisas
assim, mas eu vi-os e eles são
Não é ótimo ter então é melhor
se preparar para ela
outra coisa é que deve ser fácil de
usar e fácil de usar meios devemos usar
ferramentas e devemos fornecer aos desenvolvedores
ferramentas que eles estão confortáveis com
por isso, se estamos usando obtê-lo seria ótimo
se o desenvolvedor pode interagir com um
gasoduto e orquestrar o gasoduto ou
a maior parte do gasoduto apenas usando get
justo
e outra coisa é que deve ser
compreensível eu acho que é bastante
importante para um ambiente construído que
que os usuários possam compreendê-lo não o fizerem
precisa obter obter toda a eternidade grande
detalhes do mesmo, mas você deve ter um olhar
para ele e eles devem dizer bem eu sei que
construiu este pacote e foi a partir desta
máquina para esta máquina esta máquina e
isso aconteceu que seria que seria
ser justo o suficiente
e também ter um compreensível
oleoduto significa que também é um hackable
por isso pode ser pode ser facilmente modificada e
o ajustado conforme a necessidade Eu quero dar
-lhe uma visão muito mínima do que nós
ter
é longe de ser completa, mas
contém os aspectos mais importantes que
são necessários para este 20 minutos de conversa assim
Eu vou dar uma breve introdução ao
todas as peças aqui e então eu vou
fornecê-lo com alguns casos de uso, a fim
para obter o seu sentimento de do que é
possível, de modo que queremos começar no
inferior esquerda aqui, onde temos uma
desenvolvedor laptop poderia ser qualquer coisa que
caixa de mac janelas máquina Linux
o que quer que não há nenhum determinado requisito
em tal máquina, basicamente, os desenvolvedores
deve se sentir confortável
com a obtenção de seu trabalho feito então talvez 90
talvez talvez max e alguns de controle de versão
sistema seria seria suficiente para obter
começou de lá nós decidimos para
picareta obter volta como nosso como um repositório
servidor de gerenciamento ou versão socialismo
sistema de controle porque nós usá-lo
internamente um monte de nós gostamos e nós
acho que é que está aqui para ficar por isso lemos
então nós achamos que seria ótimo se se
tem algo que, obviamente, suporta
obter e também permite que os desenvolvedores usem um
arma para enfrentar se quiserem, porque
alguns desenvolvedores não sente que a poupança
com com com uma linha de comando e talvez
algumas tarefas são muito fáceis de fazer em tal
uma interface web, então nós achamos que seria
ser uma boa volta seria seria um grande
ferramenta aqui e estamos bastante satisfeitos com o
escolha, na verdade, naquela época, quando nós
começou foi foi um pouco rústica, mas
agora ele se sente ele se sente muito bem
muito bom para usar de lá nós nos dirigimos
mais para o tanque está aqui em um meio
aqui nós selecionamos Jenkins, porque eu estava
acostumar com isso e mike / processo seja qual for
trabalho
ok e é software livre que está tudo bem
usando Jenkins, por vezes, pode você
Jenkins poderia lhe dar algumas dores de cabeça se
se você não usá-lo como um mestre única
sistema para que você se você quiser usar Jenkins
é melhor você ter certeza que você use construir notas
e não construir nada em Jenkins
-se deixar Jenkins a todos os
orquestração e todos os outros
elaboração de relatórios e elaboração e haveria
estar lá seria suficiente, mas fazer o
constrói em outras máquinas e isso é
onde temos vários construção direito do nariz
aqui o material bill eles constroem c ++
projectos python projeto eles correm unidade
testes que fazem teste de integração seja qual for
é preciso
a partir daí, tivemos até um apelo e uma
fundamento é, pelo Debbie n versão compatível
hum servidor de repositório por isso decidimos
enviar nosso produto como um conjunto de Debian
pacotes e é a mais natural e 22
enviar pacotes Debian em uma e em uma
repositório debian regular e assim você
precisa de alguma ferramenta para lidar com pacotes e
alguns deles estão disponíveis e que furar
com um apelo porque pensamos ou no nosso
experimentá-lo se encaixa em nosso caso de uso melhor assim
é que eu acho que está escrito e ir
madura i pensam assim e é bastante útil
usar ele tem um monte de recursos e i
acho que você começa a maior parte do livro, na verdade,
feito no lado direito da evapora-se o
do lado direito dele aqui temos um
curta a linha pontilhada que significa que alguns
segregação de rede assim que nós temos a maioria dos
desta popelina em nossa rede interna
ou, na verdade, toda ela mais do mesmo e em
o lado direito sobre o externo
rede temos alguns espelhos externos
e que é basicamente motor X, por forma motor
ax está servindo do repositório para o nosso
clientes e temos várias instâncias
de que aqui então sim eu deixei de fora alguns
do material engraçado, na verdade, e alguns
o material útil, por exemplo, também
ter um servidor de tradução de modo tradutores
pode realmente traduzir todo o nosso
software usando um único web único
Interface usamos um site para isso, mas
é que é realmente bom que fornece o seu
o twitter interface web de bootstrap é
muito fácil de usar, mas não é tão
importante para para esta conversa, mas apenas para
dar-lhe uma ideia de que este é realmente o
a maioria dos componentes importantes do
popeline então eu quero começar com um
Caso de Uso e este caso de uso é construir
e libertar
um pedaço estável de software então assumimos
que o desenvolvedor aqui em seu laptop
tem um único repositório e contém
uma versão estável do software e também
tem todas as informações de pacotes Debian
nele para este repositório é basicamente
pronto para construir ok então o que um desenvolvedor
precisa fazer é basicamente cometer dele para
comprometer o estado atual da
repositório para um ramo release neste
caso eu chamá-lo de lançar agora, obviamente,
pode haver muitos mais, mas para este
exemplo libera bom o suficiente e de
há todo o desenvolvedor precisa fazer
empurrar este repositório para obter amor e se
-se não é apenas a entrada para este
oleoduto, mas também necessita de uma ou é o
máquina que é realmente responsável por
arquivando todo o código fonte por isso, se você
tem compromete-se em um ramo de liberação e e
em um ramo que poderia ser potencialmente
enviado para um cliente
seria muito aconselhável se você fizer
Certifique-se de que este cometer nunca vai
embora de novo
de modo a obter que lhe proporciona uma característica
que é chamado de protecção e ramos
você pode configurá-lo com base em projeto
com base em projeto e ele permite que você
proteger determinados ramos de estar
excluída e de ser forçado impulso para assim
que os desenvolvedores podem podem extirpar pode
extirpar ramos e de lá nós tivemos
mais de 22 Jenkins basicamente obter colo
notifica Jenkins sobre as alterações
certos repositórios usando usando esse
livro assim que esta é uma pedra que o
O recurso de laboratório API get padrão que
basicamente notifica Jenkins hey Jenkins I
tem algumas mudanças aqui talvez você quer
fazer algo com ele
assim Jenkins do seu lado tem uma lista enorme
de projetos que constrói ele constrói para
Exemplo C ++ projeto para ramos de libertação
ele constrói projeto de python como como nightly
versões que-tudo o que Jenkins, basicamente,
sabe como construir coisas, então ela assume a
informações de boa volta e avisos ok
este é um projecto C ++ e é realmente
vindo de um ramo release assim que eu deveria
construir uma versão basicamente assim Jenkins um
alguns passos e eles são, basicamente,
selecionando uma das build não fornecendo
um construído um ambiente de compilação limpa que fazemos
não compartilhar qualquer ambiente construído através
contas assim que certificar-se de que cada software
cada pacote é built-in estão em um ambiente limpo
e ambiente mínimo se você estiver
interessados que estamos usando debian Jenkins
pista para que ele é um bom conjunto de
basicamente shell script que abstract
fora um monte de o nitty e corajoso
detalhes de empacotamento Debian usando quando
você usa Jenkins Jenkins intitula o
pacote ou construíram as contas de origem para
construir os pacotes binários faz testes em
o nó de compilação de pacotes e depois é
feito que recolhe todos os resultados de TI
recolhe o artefato construtor e
fornece ao usuário algo como
gráficos e relatórios que é o que todos
quer ter por isso este é o real
lugar onde desenvolvedor pode olhar para o
estado atual deste projeto para que você possa
dê uma olhada nele e dizer bem isso é
os XX construir um pacote de sua
construtores limpa temos 20 testes de unidade e
e ele pode, ele pode rapidamente dar uma olhada
e que, no estado do mesmo e esta é
também o ponto onde você pode personalizar
bastante por isso, se você, por exemplo construída
documentação de oxigênio há alguns alguns
avisos e oxigénio ou em oxigênio
conta
bloqueio que você quer que você pode querer
para dar uma olhada e este relatório e
e recurso de Jenkins gráficos seria
o lugar certo para visualizar tais
mudanças tais detalhes, então vamos assumir
que o edifício bem sucedido e um de
os artefatos de construção é na verdade um binário
pacotes Debian ou pacote debian de

Jenkins leva um pacote e atira-o para
um apelo e um apelo lança um olhar sobre o
pacote de entrada e do edifício
informação que é fornecido com ela
e avisos de concurso
ok este é um Isto parece uma liberação
pacote porque está vindo de um
ramo de lançamento a partir do get originais
empenhada em obter ramo release para que ele
diz que está bem Eu sei como lidar com
lançamentos Vou levá-lo e colocá-lo
na minha distribuição instável ou
repositório para que para que o assunto de modo
isto significa que um ou todos os pacotes
que são construídos, basicamente, são recheadas
em um único repositório ups um apelo
distribuição, temos vários desses
e eu quero ficar apenas muito rapidamente sobre
ou ao longo dos diferentes distribuições
temos temos, por exemplo, nós instável
ter um teste e nós temos um estável e
aqueles que servem a diferentes casos de uso de modo que o
um é instável é a distribuição que
pacotes são jogados em todo o tempo assim
se o desenvolvedor faz uma nova versão do
qualquer pacote é recheado para a instável
agora em algum ponto no tempo você basicamente
quer enviar software para os clientes
caso contrário, você seria logo fora do
negócio assim em um ponto no tempo I
desenvolvedor precisa decidir ok este é
bom o suficiente para obter basicamente em
ensaios e ensaios significa que a nossa
teste Departamento de departamento de QA pode
começar a tomar um olhar para o atual
Estado da
lata auditivo para que a equipe, por exemplo,
testar se instala a partir desta
trabalho repositório se upgrades de funcionar se o
embalagens estão completas, se as características
Se estão a trabalhar todas as caixas que são
obrigatórios são, na verdade, e sim
de lá nós exigem a Q18 para
basicamente iniciar o trabalho de Jenkins e Mark
a distribuição e tão estável testes
meios estáveis que é espelhada para o
repositórios externos para o externo
espelhos assim uma vez que um membro do QA diz que está bem
este esta versão do teste
repositório é bom o suficiente, pode ser
enviados para os clientes que podem comercializar um
estável e tudo está dançando fora
fora do repositório de modo que este é um
listagem completa sobre a sobre a inteira
gasoduto e eu quero ficar apenas rapidamente
com um ou dois outros casos de uso como
bem para lhe dar uma impressão de de
o que é que é possível
por isso antes Eu quero rapidamente resumir nós
tem um pacote fonte braço estável com
debian informações embalagem em que nós
enviou este pacote para chegar se obter colo
Começar observado construção Jenkins Jenkins
software, temos uma uma debian binário
pacote que está em presente um apelo e
uma vez que escorre através do gasoduto
através de testes instável e estável
mais cedo ou mais tarde, vai bater o cliente
em algum momento e, geralmente, quando isso
acontece o cliente caixa de denunciar
espero que ele faz no nosso caso o façam
vamos continuar com outro exemplo e
vamos supor ok tais cliente relata um
Buck e vamos supor que ok
um homem páginas em falta a partir de um debian
empacotar esses dólares normalmente não recebem
relatado, mas vamos supor que para este
exemplo de que é assim que o desenvolvedor é
encarregado de ok por favor, na página de mãe para
este pacote e agora ele faz ele cria
um ramo surdos, basicamente, surdos e escolher
qualquer nome poderia ser embalagem surdo por
exemplo e, em seguida, ele começa a trabalhar em
o pacote e ele agora poderia, obviamente,
construir tudo sozinho que podia
construir um sido embalados localmente aqui em
todo o teste de unidade localmente verificação Picard
a cobertura de código localmente para todo o
coisas, mas não há nenhuma necessidade de porque ele
também pode empurrar essa equipe esta morte
embalagem filial aqui apenas para se levantar
novamente e deixe o amor fazer o trabalho por ele
ou fazer o último gasoduto fazer o trabalho de forma
levantar-se mais uma vez notar Jenkins Jenkins
sabe como construir pacotes se trata
de outro ramo, mas realmente não
importa, por isso constrói pacotes e novamente
Artesanato Jenkins e relatórios para o usuário
pode muito facilmente detectar, por exemplo,
avisos de Incheon e linchamento é uma ferramenta
que você pode querer usar em caso
você estiver usando pacotes Debian é uma é
um linter para David pacotes e pode
notificá-lo sobre coisas como bem há um
binário neste pacote e ele estiver ausente
uma página homem então vamos assumir esta manhã
é não se foi ea conta é construir
sua ok, então, além dos gráficos e
relatando também temos de ter a
pacote debian e, neste ponto, é
novamente jogado contra um apelo e feio
diz que está bem é um é um pacote debian
ele é realmente bom, mas ele está vindo
algum ramo que eu não sei que parece
como ele está vindo embalagem def
Eu não estou levando ele para que ele basicamente jogar
-la assim que se pôde dizer bem isso é
este é um exemplo bastante inútil
sim, mas é a base da construção
outras coisas em cima que são a sua vez
-se bastante útil uma vez que você tem
-los, por exemplo, usando este presente
oleoduto e usando a um único ponto
fundamento para decidir se deve ou não pacotes
deve bater o repositório permite que você
fazer coisas como bem podemos fazer todas as noites
reconstrução de todos os pacotes Debian em qualquer
tempo nunca se vai bater qualquer repositório
mas podemos detectar coisas como mudar a
pacotes PIS ou ido ou ruptura de
empacotado com com esses tais casos
outros fatores interessantes e quero
apenas para saltar muito rapidamente no que
porque eu já estou com o tempo, mas apenas
para dar-lhe uma impressão
ele também permite que você para fornecer uso
casos como por que não criar um especial
distribuição no servidor de aplicação que
é chamado de embalagem def e se nós batemos
Tal diferente positiva se se um
pacote atinge um tal repositório que podia
ir para a embalagem de morte é essa
neste exemplo para que ele não vá muito
instável ele vai ter de embalagens
e de lá nós temos um táxi regular e
repositório para que ele possa ser usado internamente
por QA departamento pode ser usado por pelo
-se promotores e isto permite
exemplo para fazer grandes refatorações sem
quebrando instável durante dois meses ou
três meses porque o desenvolvedor pode
escolher qualquer pacote de origem que ele quer ou
qualquer repositório que ele quer cortar nele
e empurre a cometer não não liberar
sucursal, mas a um ramo de desenvolvimento conhecida
e todos os pacotes que saem de
este ramo de desenvolvimento conhecida atingido este
muito repositório e nunca
nunca ir para os clientes, mas que
permitir-nos algum algum grande interna
ensaios e uma vez que o refatoramento é feito
o trabalho pode simplesmente ser fundidas para
liberar a prática e você tem o primeiro
usar caso novamente tão obviamente meu tempo é
sobre a direita agora eu quero apenas muito
rapidamente passar por cima para ir ao longo de vários
lições que aprendemos
talvez eles sejam úteis para você que eu seria
ótimo se eu tivesse sabido-los antes do
Primeiro é melhor você ter certeza que você
ter um realmente fácil de usar gasoduto e
easy-to-use significa para o ponto desenvolvedor
ver se você usar get na sua empresa
certificar-se de que a tubagem está
controlável e utilizável por obter apenas tão
Se você tem se você exigir o seu
desenvolvedores para configurar Jenkins para a sua
construção de software próprio que pode ser um
problema porque alguns desenvolvedores ainda que
é política da empresa que Jenkins deve
ser usado para a construção de alguns desenvolvedores
vai dizer sim eu ignorá-lo
outros finas vai dizer sim eu vou
tomar Jenkins para a construção, mas eu nunca
ouviu falar de testes de unidade e eu não me importo
sobre gráficos sobre unidade testa ok fina
outras vão dizer bem, eu sei como
como analisar resultados de teste de unidade che
com Jenkins isso é bom e ele está feliz
mas esqueceu-se que há, por exemplo,
cobertura de código, bem assim seria
ótimo para se certificar de que que você pode
abstrato longe do desenvolvedor e você
não exigem um desenvolvedor para configurar
Jenkins ele pode dar uma olhada no que faz
nenhum problema, mas, basicamente, é melhor
fornecer para ele ou ela eu acho que é
importante para obter serviços a funcionar
verdadeira rapidamente por isso não não construir tudo
as características que você acha que são
importante ou útil, mas começar com o
mais importante e prever que
requisitos para mudar ao longo do tempo mmm
eles mudam muitas vezes mais frequentemente e
é melhor você se preparar para isso e
Eu acho que a melhor preparação para
requisitos mudança é automatizar
tanto quanto possível e de automação significa ok
Estou usar ansible uso fantoches chefe
o que quer que você tem que fazer o seu servidor
configuração, mas não pára por aí
porque, por exemplo, obter alto fornece uma
API estavam todos os projectos con pode ser
configurada programaticamente por isso há
não há necessidade de percorrer as configurações do
várias centenas de projectos e exigem e
e ganchos de adesão de edição de grupo ou editar
ou algo parecido que pode ser
automatizado de distância e que deve ser
forma automatizada
outra coisa é se você estiver usando Jenkins
há projetos como Jenkins tiro
Construtor Eu não sei se é se as pessoas
sei que, mas eu acho que é bastante útil
porque temos alguns que eu não vou
mil verificando lojas e mudando
peças únicas do trabalho nos um requer
minutos de fazer isso à mão e você poderia
divirta-se para as próximas duas semanas para que se
você estiver usando o conjunto usando Jenkins certifique-se
você nunca toque na interface de configuração
dele, exceto para o teste, obviamente, e
O último ponto é que você escolher melhor o seu
ferramentas sabiamente
começámos com outro repositório
servidor e sem confronto muito muito
avaliação, porque nós pensamos nós temos tudo bem
sabe-se do passado e é ok que ele
faz o seu trabalho, mas nós batemos limitações
muito rapidamente e, na verdade, quando você
construir tal gasoduto integrações vêm
ao longo do tempo e você acha que tudo bem esta é
apenas um se machuca-los a
servidor de repositório debian não pode ser
tão difícil de rasgar-se que, mas na verdade se
existem cinco outros serviços que
dependem dele e de alguma forma integrar com
ele É obtê-lo fica complicado
ok então é isso da minha palestra obrigado
muito para ouvir
Se você tiver alguma dúvida
você pode perguntar-lhes o seu informante quatro
minutos ou você pode encontrar o contato
detalhes sobre minha página
ok thanks
sim por favor
veja abaixo eu gostaria de pedir
além dessas ferramentas de desenvolvimento são
Existem outras peças de software livre
para usar a partir de nossos outros aspectos da
o seu negócio como núcleo de contabilidade
relações com os clientes talvez ou projeto
gestão excelente pergunta
estamos atualmente migrando longe de um
planejamento de recursos empresariais proprietárias
sistema para um software livre deles é
chamado Triton Eu não sei se você se você
sei que mesmo na seria pelo menos o
ferramenta de escolha para nós agora eu acho
Eu não tenho certeza que eu acho que é chamado de novo
saúde, que é construído em cima tentou em modo
você pode querer olhar para uma nova saúde
para obter demos e ter um olhar para o que era
possível
sim, por favor eu preciso para apresentação e
rever alguns unificada para o modelo de ramificação
educar algo como isso por tipo de
que temos um temos uma ramificação
modelar sim e ele é baseado na liberação
nomes internamente por isso é o que eu
apresentado aqui é realmente muito um
minutos um fide temos duro ilimitada
para explicar
Então, basicamente temos temos lançamentos
a cada poucos anos ou pode não liberar se
a cada poucos anos que fora, que têm nomes
e abaixo este nome nós lançamos
ramos e nós temos o desenvolvimento
ramos e temos filiais de embalagem
e todo o tipo de coisas, então sim o que fazemos
e se você está vindo interessado em me
depois e eu vou explicar em detalhe
para você
sim bem-vinda
sim, por favor, sim, como você lida com
como até mesmo ter um professor muito velho foi
como três semanas de idade
tente integrá-lo com a banda
lançado como semanalmente ou apenas como tentar
mesclar esses ramos velhos a nova versão
que mais recursos adicionados pela única
na forma e que podem causar outros
espécie de caixa
ok então a questão é quando nós quando nós
têm tais ramos de desenvolvimento longos que
usamos e depois vamos ser embalados
separadamente quer fundi-los de volta
e, na verdade, sim, nós, basicamente,
rebase então o que atinge o desenvolvimento
ramo não importa para nós, então nós r
existem muitas comissões que são
apenas trabalhando material progresso assim
e uma vez que voltar para dominar ou para
ramo release eles são geralmente esmagados
em commits lógicos com adequada comprometer
mensagens e, em seguida, toda a pipeline é
reconstruídos ou o software é reconstruído de modo
o que não fazer é não tomarmos
pacotes de desenvolvimento do Debian que atingiram um
repositório de desenvolvimento e movê-lo em
o repositório instável ou estável, de modo que
certifique-se de que todas as compilações realmente usar
o caminho com as versões lá assim que nós
nunca tomar pacotes Debian binários para
surdos para o que todos nós estamos sempre
reconstruir o tipo de coisa
Está bem

Share this subtitle


Description

This talk will cover how to power the development infrastructure of a small (non-cloud) company using free software. I present the goals and our requirements for the infrastructure and dig into some interesting parts, including: * Using a free software pipeline to get from code to the final product. * Discuss the use of free software alternatives to proprietary solutions. * Why the work on infrastructure is never finished. * Lessons learned