X-Original-To: alpine-devel@lists.alpinelinux.org Received: from mail-ua0-f180.google.com (mail-ua0-f180.google.com [209.85.217.180]) by lists.alpinelinux.org (Postfix) with ESMTP id 499195C4E2C for ; Tue, 6 Feb 2018 00:43:59 +0000 (GMT) Received: by mail-ua0-f180.google.com with SMTP id e25so128393uan.5 for ; Mon, 05 Feb 2018 16:43:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=duniel-no.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=vn2VKdyv7L253jCohvwixt+5Sb26wkeZ2AugU9T3bX8=; b=CLh6Y0LBxKnl/5jSKk3GKf8buLMJYeMliapidz0v7unP3ba8RNM0xtiawk7CExFh5T 3ZV639/n3A01dTWGIRKLMvQaTyxh3yGIvlS69AxnqHV14eZROETWeJTIVRVi3Gpoetvg CpDBoyyd24EV5AzV1dwv6Cn0p89mYtcUFxNu6PzfW2I75C7HbwOIwjIaR4EcrOPM7nVW SPwdnQp4YcVOhs5xICcdB7naBUgHDHQC7bRoWi5bcG14DQC8Ad7C9wGLazYhdqeyTLwo lcvbYELEevU+YwfY0bd/Tb4gQR22bEEdNHhC2CMz2Q4MJqN2LZUrTgCbgJjyx1I4bp1d z13w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=vn2VKdyv7L253jCohvwixt+5Sb26wkeZ2AugU9T3bX8=; b=j4Wn2R0DznB53Mi0bJtf1AeVTkfBi0W6ejodjZ1YtWN3UoYiXpl1yyzE42dDv+4r19 Qk79tXRH7WDmYk79IlWzHWVcW1bHwWkDhbNvuYyoeMnf1V7e7/3Ous4xvn4sVfMF74k7 MccSmEPEAMAZCBhXt4U7OCkY/UH0WeVT8OLu2R1wEKipdojFQe/aC34OroW5aEXCe1ym P8mkmow/qPKuRhnZPI+3kuYEtzRoew+I+/pWToQH7yYtba7sR+S9fxPqFTJZk3waeLAa sJNLXx75tz5GnRRIDJnWpcg1dLk4w8uXThw8EiJ7uBiqd+2ve8Ckac1q4KpKKiBgAL9F ed9g== X-Gm-Message-State: APf1xPBhpLZXf9LqDBIAQlua2P4il8KN2VIr1kiibo5z8v38V6sLR1r2 5/X7gx0pJMYHDUIr4ASfhCPS0sYIXzIiiO94AG74LQ== X-Google-Smtp-Source: AH8x227C+ZcqrZfa/I4B/Evi6Wqxkh2mO1pm8x5mVYRYbxoYsue49lJxGhW7xpeWLtZraeZIS+P/m9CPd6HrFmOt7Js= X-Received: by 10.176.72.1 with SMTP id b1mr716701uad.22.1517877838525; Mon, 05 Feb 2018 16:43:58 -0800 (PST) X-Mailinglist: alpine-devel Precedence: list List-Id: Alpine Development List-Unsubscribe: List-Post: List-Help: List-Subscribe: MIME-Version: 1.0 Received: by 10.176.8.8 with HTTP; Mon, 5 Feb 2018 16:43:58 -0800 (PST) In-Reply-To: <20180206013944.7fa393b6@ncopa-macbook.copa.dup.pw> References: <20180206013944.7fa393b6@ncopa-macbook.copa.dup.pw> From: Daniel Isaksen Date: Tue, 6 Feb 2018 01:43:58 +0100 Message-ID: Subject: Re: [alpine-devel] rethinking the building infra To: Natanael Copa Cc: Alpine Development Content-Type: multipart/alternative; boundary="001a114526fe60ccc9056480795a" --001a114526fe60ccc9056480795a Content-Type: text/plain; charset="UTF-8" A small addition - this is in development, and some hands on it would be nice: https://github.com/kaniini/abuildd - Daniel On Tue, Feb 6, 2018 at 1:39 AM, Natanael Copa wrote: > Hi! > > I think we need to rethink the building infrastructure. The current > build scripts were written as a quick and dirt way to get started and > have lived longer way longer than originally planned. It simply does > not scale and is very fragile. > > I guess I don't need to go any deeper into why we need replace it... > > I'd like to discuss what we need from the build infra and why, before we > start talk about how to do it and what implementation etc. > > Here are some things I want a new building infra should be able to > do: > > - automatic build on git push > > There should not be needed to do anything more than do a git push to > get the package built and uploaded. Like we have today, but with > better error reporting. > > - isolated environment for each build > > each build should set up an isolated enviroment and destroy it when > build is done. This could be a container but it would be nice to be > able to set up a disposable build env in a vm in case we want hook it > into github PRs or similar. It should also kill everything after > build and test is done so we dont get any remains of test suites that > does not clean up after themselves (like redis and epmd) > > - support multi architectures > > need to support x86_64, x86, armhf, aarch64, ppc64le and s390x. Would > be nice it its not too complicated to add new architectures. > > - support parallel building > > would be nice to be able to distribute the workload over available > build servers. Should be possible and relatively easy to add new > hardware to the pool or remove or replace old without taking > everything down. > > - support cross compile > > would be nice to cross compile packages that (easily) can be cross > compiled. For example, we could let a big x86_64 or ppc64le machine > build linux kernel for armhf instead doing that on the slow armhf > server. Packages that cannot be cross compiled should be built on > native hardware. > > - separate out signing process of packages and index > > Would be nice if we could give access to build servers to more > people without giving those people access to the private signing keys. > > - build infra should be able to be used as CI > > We need do automatic compile checks of contributions, for example via > github pull requests or something corresponding. > > - efficient caching > > Would be nice to not need to git clone the entire repo for every > build for every server. Would be nice if we checkout a shared git > repo or do something so data does not goes over the wire more than > necessary. Same goes for source and apk packages. > > Anything else we need from the building infra? > > -nc > > > --- > Unsubscribe: alpine-devel+unsubscribe@lists.alpinelinux.org > Help: alpine-devel+help@lists.alpinelinux.org > --- > > --001a114526fe60ccc9056480795a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
A small addition - this is in development, and some hands = on it would be nice:=C2=A0ht= tps://github.com/kaniini/abuildd

- Daniel

On Tue, Feb 6, 2= 018 at 1:39 AM, Natanael Copa <ncopa@alpinelinux.org> wr= ote:
Hi!

I think we need to rethink the building infrastructure. The current
build scripts were written as a quick and dirt way to get started and
have lived longer way longer than originally planned. It simply does
not scale and is very fragile.

I guess I don't need to go any deeper into why we need replace it...
I'd like to discuss what we need from the build infra and why, before w= e
start talk about how to do it and what implementation etc.

Here are some things I want a new building infra should be able to
do:

- automatic build on git push

=C2=A0 There should not be needed to do anything more than do a git push to=
=C2=A0 get the package built and uploaded. Like we have today, but with
=C2=A0 better error reporting.

- isolated environment for each build

=C2=A0 each build should set up an isolated enviroment and destroy it when<= br> =C2=A0 build is done. This could be a container but it would be nice to be<= br> =C2=A0 able to set up a disposable build env in a vm in case we want hook i= t
=C2=A0 into github PRs or similar. It should also kill everything after
=C2=A0 build and test is done so we dont get any remains of test suites tha= t
=C2=A0 does not clean up after themselves (like redis and epmd)

- support multi architectures

=C2=A0 need to support x86_64, x86, armhf, aarch64, ppc64le and s390x. Woul= d
=C2=A0 be nice it its not too complicated to add new architectures.

- support parallel building

=C2=A0 would be nice to be able to distribute the workload over available =C2=A0 build servers. Should be possible and relatively easy to add new
=C2=A0 hardware to the pool or remove or replace old without taking
=C2=A0 everything down.

- support cross compile

=C2=A0 would be nice to cross compile packages that (easily) can be cross =C2=A0 compiled. For example, we could let a big x86_64 or ppc64le machine<= br> =C2=A0 build linux kernel for armhf instead doing that on the slow armhf =C2=A0 server. Packages that cannot be cross compiled should be built on =C2=A0 native hardware.

- separate out signing process of packages and index

=C2=A0 Would be nice if we could give access to build servers to more
=C2=A0 people without giving those people access to the private signing key= s.

- build infra should be able to be used as CI

=C2=A0 We need do automatic compile checks of contributions, for example vi= a
=C2=A0 github pull requests or something corresponding.

- efficient caching

=C2=A0 Would be nice to not need to git clone the entire repo for every
=C2=A0 build for every server. Would be nice if we checkout a shared git =C2=A0 repo or do something so data does not goes over the wire more than =C2=A0 necessary. Same goes for source and apk packages.

Anything else we need from the building infra?

-nc


---
Unsubscribe:=C2=A0 alpine-devel+unsubscribe@lists.alpinelinux.org
Help:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0alpine-devel+help@lists.alpinelinux.org ---


--001a114526fe60ccc9056480795a-- --- Unsubscribe: alpine-devel+unsubscribe@lists.alpinelinux.org Help: alpine-devel+help@lists.alpinelinux.org ---