buildbot.git
18 months agobuildworker,buildmaster: bump Debian to version 11
Petr Štetiar [Mon, 15 May 2023 07:14:48 +0000 (09:14 +0200)]
buildworker,buildmaster: bump Debian to version 11

Debian 10 LTS support ends on 6/2024, so it makes no sense to use it as
a base for 23.05 release, so lets switch to Debian 11 which should've
LTS support till 6/2026.

Signed-off-by: Petr Štetiar <ynezz@true.cz>
18 months agoBump buildbot version to latest stable release 3.8.0
Petr Štetiar [Mon, 15 May 2023 07:12:16 +0000 (09:12 +0200)]
Bump buildbot version to latest stable release 3.8.0

Signed-off-by: Petr Štetiar <ynezz@true.cz>
18 months agobuildmaster: fix unpinned buildbot package version
Petr Štetiar [Mon, 15 May 2023 06:53:58 +0000 (08:53 +0200)]
buildmaster: fix unpinned buildbot package version

It seems, that current pip3 install pinning doesnt work properly as it
can result in the following package versions installation:

 buildbot-3.6.1 buildbot-console-view-3.5.0 buildbot-grid-view-3.5.0
 buildbot-waterfall-view-3.5.0 buildbot-worker-3.5.0 buildbot-www-3.5.0

So lets pin the buildbot package itself to BUILDBOT_VERSION as well.

References: https://gitlab.com/openwrt/buildbot/-/jobs/3324049571#L1158
Signed-off-by: Petr Štetiar <ynezz@true.cz>
18 months agophase1: make 'rsync -4' worker-configurable
Thibaut VARÈNE [Tue, 15 Nov 2022 09:44:56 +0000 (10:44 +0100)]
phase1: make 'rsync -4' worker-configurable

We set '-4' in rsync_defopts, asking rsync to "prefer" ipv4 whenever
possible on _all_ workers. This was historically done because some
workers had flaky ipv6 connectivity, however in the future the reverse
may be true, with worker having worse networking over ipv4 than ipv6.

This change introduces an 'rsync_ipv4' worker configuration option:
when set to a true value, the old rsync behavior (adding '-4') is used,
when unset or set to false, the extra rsync argument is not used.

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: call host ccache in stats
Thibaut VARÈNE [Fri, 28 Oct 2022 09:05:21 +0000 (11:05 +0200)]
phase1: call host ccache in stats

We do not use the staging_dir ccache on buildbots (config seed contains
CONFIG_CCACHE=n), only the host tool if present.
Also only execute this step if 'ccache_command' is set.

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: tag builders with their intended branch name
Thibaut VARÈNE [Thu, 27 Oct 2022 20:35:09 +0000 (22:35 +0200)]
phase1: tag builders with their intended branch name

This helps sorting them in waterfall and builders views.

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: documentation update
Thibaut VARÈNE [Thu, 27 Oct 2022 18:31:19 +0000 (20:31 +0200)]
phase1: documentation update

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: allow restricting builders to tag builds only
Thibaut VARÈNE [Thu, 27 Oct 2022 12:56:21 +0000 (14:56 +0200)]
phase1: allow restricting builders to tag builds only

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: refactor worker parsing
Thibaut VARÈNE [Thu, 27 Oct 2022 12:32:30 +0000 (14:32 +0200)]
phase1: refactor worker parsing

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: disable debug messages
Thibaut VARÈNE [Thu, 27 Oct 2022 12:11:13 +0000 (14:11 +0200)]
phase1: disable debug messages

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: prioritize builders by branch order
Thibaut VARÈNE [Thu, 27 Oct 2022 11:27:56 +0000 (13:27 +0200)]
phase1: prioritize builders by branch order

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: switch to separate builders per branch per target
Thibaut VARÈNE [Thu, 27 Oct 2022 11:09:17 +0000 (13:09 +0200)]
phase1: switch to separate builders per branch per target

This will simplify reporting and ensure consistent build statistics.
It will also simplify prioritizing builders by branch.

This also introduces a single "trigger" scheduler that will handle all
trigger requests for each branch/target combination, speeding up the
forcing of builds.

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: fix ForceBuild validation logic
Thibaut VARÈNE [Thu, 27 Oct 2022 08:20:39 +0000 (10:20 +0200)]
phase1: fix ForceBuild validation logic

We shouldn't use the local GitPoller repo to find the commit hash of a
tag, since this repo may not yet have been updated at the time the new
tag value is fetched from the remote repo.

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: run ForceBuilder on local worker
Thibaut VARÈNE [Wed, 26 Oct 2022 20:53:12 +0000 (22:53 +0200)]
phase1: run ForceBuilder on local worker

There is no reason to send this over the network to some remote worker,
incurring latency for a purely housekeeping task that should be done on
the buildmaster host.

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: prune unused files from dl/
Thibaut VARÈNE [Wed, 26 Oct 2022 19:35:18 +0000 (21:35 +0200)]
phase1: prune unused files from dl/

Remove files that haven't been accessed in >15 days from dl/

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: workers are running a single build
Thibaut VARÈNE [Wed, 26 Oct 2022 19:34:19 +0000 (21:34 +0200)]
phase1: workers are running a single build

Worker lock on dl/ is now unnecessary

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: Fix the force scheduler process
Thibaut VARÈNE [Wed, 26 Oct 2022 18:51:20 +0000 (20:51 +0200)]
phase1: Fix the force scheduler process

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: always front-run the 00_force_build builder
Thibaut VARÈNE [Wed, 26 Oct 2022 17:30:25 +0000 (19:30 +0200)]
phase1: always front-run the 00_force_build builder

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: fix ForceScheduler
Thibaut VARÈNE [Wed, 26 Oct 2022 12:43:15 +0000 (14:43 +0200)]
phase1: fix ForceScheduler

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: don't log env on statistics steps
Thibaut VARÈNE [Wed, 26 Oct 2022 07:46:22 +0000 (09:46 +0200)]
phase1: don't log env on statistics steps

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: consistent step styling
Thibaut VARÈNE [Tue, 25 Oct 2022 20:09:55 +0000 (22:09 +0200)]
phase1: consistent step styling

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: gitcheckout workaround is no longer needed
Thibaut VARÈNE [Tue, 25 Oct 2022 19:58:53 +0000 (21:58 +0200)]
phase1: gitcheckout workaround is no longer needed

And it has adverse effects (slows/breaks Git step).

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: move shared dl to same folder as shared-workdir
Thibaut VARÈNE [Tue, 25 Oct 2022 18:41:21 +0000 (20:41 +0200)]
phase1: move shared dl to same folder as shared-workdir

The previous command moved it to $HOME/dl, which could pollute the user's
home folder during test runs. This brings the "shared dl" folder in line
with the shared workdir folder, all within buildbot folder hierarchy.

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: perform rsync steps only if configured
Thibaut VARÈNE [Tue, 25 Oct 2022 17:48:46 +0000 (19:48 +0200)]
phase1: perform rsync steps only if configured

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: adjust steps descriptions
Thibaut VARÈNE [Tue, 25 Oct 2022 17:25:39 +0000 (19:25 +0200)]
phase1: adjust steps descriptions

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: hide/skip ccache steps if not available
Thibaut VARÈNE [Tue, 25 Oct 2022 13:41:06 +0000 (15:41 +0200)]
phase1: hide/skip ccache steps if not available

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: FlattenList doesn't work on renderables
Thibaut VARÈNE [Tue, 25 Oct 2022 11:08:50 +0000 (13:08 +0200)]
phase1: FlattenList doesn't work on renderables

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: update config.ini.example
Thibaut VARÈNE [Mon, 24 Oct 2022 16:17:46 +0000 (18:17 +0200)]
phase1: update config.ini.example

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: populateConfig(): quiet git clone
Thibaut VARÈNE [Mon, 24 Oct 2022 16:03:26 +0000 (18:03 +0200)]
phase1: populateConfig(): quiet git clone

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: make scheduler and changesource branch-aware
Thibaut VARÈNE [Mon, 24 Oct 2022 15:09:43 +0000 (17:09 +0200)]
phase1: make scheduler and changesource branch-aware

The ForcedScheduler for tags still needs work

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: branch-aware signall.sh
Thibaut VARÈNE [Mon, 24 Oct 2022 14:56:45 +0000 (16:56 +0200)]
phase1: branch-aware signall.sh

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agoscripts/signall.sh: make branch aware
Thibaut VARÈNE [Mon, 24 Oct 2022 14:56:37 +0000 (16:56 +0200)]
scripts/signall.sh: make branch aware

This commit is a NO-OP if signall.sh is called with a single argument,
as is currently done, and will allow fetching branch-specific signing
credentials if a branch name is passed as second argument.

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: abort early if current builder does not apply
Thibaut VARÈNE [Mon, 24 Oct 2022 14:41:00 +0000 (16:41 +0200)]
phase1: abort early if current builder does not apply

Some builders (target/subtarget) may only apply to particular branches,
but are nevertheless defined for all branches. Detect such case early,
stop the build but do not mark it FAILURE.

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: make populateTargets() branch aware
Thibaut VARÈNE [Mon, 24 Oct 2022 14:17:03 +0000 (16:17 +0200)]
phase1: make populateTargets() branch aware

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: make GetNextBuild() branch aware
Thibaut VARÈNE [Mon, 24 Oct 2022 14:03:38 +0000 (16:03 +0200)]
phase1: make GetNextBuild() branch aware

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: use single var for rsync_bin_defopts and rsync_src_defopts
Thibaut VARÈNE [Mon, 24 Oct 2022 16:08:23 +0000 (18:08 +0200)]
phase1: use single var for rsync_bin_defopts and rsync_src_defopts

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: use branch config in factory
Thibaut VARÈNE [Mon, 24 Oct 2022 12:41:28 +0000 (14:41 +0200)]
phase1: use branch config in factory

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: rsync_src_url is always set
Thibaut VARÈNE [Mon, 24 Oct 2022 10:48:11 +0000 (12:48 +0200)]
phase1: rsync_src_url is always set

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: prepare to parse branches
Thibaut VARÈNE [Fri, 21 Oct 2022 16:54:10 +0000 (18:54 +0200)]
phase1: prepare to parse branches

This commit breaks config

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: Git() no need to specify branch
Thibaut VARÈNE [Fri, 21 Oct 2022 16:38:58 +0000 (18:38 +0200)]
phase1: Git() no need to specify branch

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: replace 'repo_branch' with 'branch' prop in factory
Thibaut VARÈNE [Fri, 21 Oct 2022 16:25:03 +0000 (18:25 +0200)]
phase1: replace 'repo_branch' with 'branch' prop in factory

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: refactor populateTargets()
Thibaut VARÈNE [Fri, 21 Oct 2022 09:16:42 +0000 (11:16 +0200)]
phase1: refactor populateTargets()

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: move target enumeration to function
Thibaut VARÈNE [Thu, 20 Oct 2022 17:41:57 +0000 (19:41 +0200)]
phase1: move target enumeration to function

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: reorder/regroup globals
Thibaut VARÈNE [Thu, 20 Oct 2022 17:24:56 +0000 (19:24 +0200)]
phase1: reorder/regroup globals

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: fix option parsing typo for 'ul_lock'
Thibaut VARÈNE [Thu, 20 Oct 2022 14:06:54 +0000 (16:06 +0200)]
phase1: fix option parsing typo for 'ul_lock'

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: remove 'cleanup' worker option (always set)
Thibaut VARÈNE [Thu, 20 Oct 2022 13:51:38 +0000 (15:51 +0200)]
phase1: remove 'cleanup' worker option (always set)

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: remove 'shared_wd' worker option (always set)
Thibaut VARÈNE [Thu, 20 Oct 2022 13:49:43 +0000 (15:49 +0200)]
phase1: remove 'shared_wd' worker option (always set)

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: remove dead code due to shared_wd=1
Thibaut VARÈNE [Thu, 20 Oct 2022 13:48:04 +0000 (15:48 +0200)]
phase1: remove dead code due to shared_wd=1

shared_wd is always set, the conditional on these bits were thus always
the same resulting in dead code.

Remove 'expire' config option which is no longer needed.

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: remove now redundant 'njobs' (== 'nprocs') property
Thibaut VARÈNE [Thu, 20 Oct 2022 18:16:10 +0000 (20:16 +0200)]
phase1: remove now redundant 'njobs' (== 'nprocs') property

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: max_builds and shared_wd are always set to 1
Thibaut VARÈNE [Thu, 20 Oct 2022 13:43:15 +0000 (15:43 +0200)]
phase1: max_builds and shared_wd are always set to 1

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: rework GetNumJobs()
Thibaut VARÈNE [Thu, 20 Oct 2022 13:30:45 +0000 (15:30 +0200)]
phase1: rework GetNumJobs()

Ensure we never end up with "0".
Set a build property step with the computed concurrency level, so that
this information is available in build status.

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: remove GetCCache()
Thibaut VARÈNE [Thu, 20 Oct 2022 11:18:25 +0000 (13:18 +0200)]
phase1: remove GetCCache()

ccache_command is set from "which ccache" which is either empty or
contains "ccache". Use a simple interpolation instead.

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: remove unused IsNoTaggingRequested()
Thibaut VARÈNE [Thu, 20 Oct 2022 11:11:26 +0000 (13:11 +0200)]
phase1: remove unused IsNoTaggingRequested()

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: deduplicate 'git' step
Thibaut VARÈNE [Thu, 20 Oct 2022 10:47:05 +0000 (12:47 +0200)]
phase1: deduplicate 'git' step

method renderers are supported now.

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: remove dead step CleanTargetMap
Thibaut VARÈNE [Thu, 20 Oct 2022 10:34:48 +0000 (12:34 +0200)]
phase1: remove dead step CleanTargetMap

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: remove GetCC()/GetCXX()
Thibaut VARÈNE [Thu, 20 Oct 2022 09:37:21 +0000 (11:37 +0200)]
phase1: remove GetCC()/GetCXX()

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: remove GetCwd()
Thibaut VARÈNE [Thu, 20 Oct 2022 09:33:10 +0000 (11:33 +0200)]
phase1: remove GetCwd()

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: buildfactory: remove deadcode
Thibaut VARÈNE [Wed, 19 Oct 2022 18:02:51 +0000 (20:02 +0200)]
phase1: buildfactory: remove deadcode

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: remove checkBuiltin deadcode
Thibaut VARÈNE [Wed, 19 Oct 2022 17:57:18 +0000 (19:57 +0200)]
phase1: remove checkBuiltin deadcode

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: remove unused variables
Thibaut VARÈNE [Wed, 19 Oct 2022 17:53:54 +0000 (19:53 +0200)]
phase1: remove unused variables

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: cleanup ini accessors
Thibaut VARÈNE [Wed, 19 Oct 2022 17:13:43 +0000 (19:13 +0200)]
phase1: cleanup ini accessors

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: fix leading whitespace
Thibaut VARÈNE [Wed, 19 Oct 2022 15:39:57 +0000 (17:39 +0200)]
phase1: fix leading whitespace

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: remove unused 'kmod_repository'
Thibaut VARÈNE [Wed, 19 Oct 2022 15:35:32 +0000 (17:35 +0200)]
phase1: remove unused 'kmod_repository'

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: remove unused 'git_ssh'
Thibaut VARÈNE [Wed, 19 Oct 2022 14:35:44 +0000 (16:35 +0200)]
phase1: remove unused 'git_ssh'

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: remove unused 'cc_version'
Thibaut VARÈNE [Wed, 19 Oct 2022 14:24:46 +0000 (16:24 +0200)]
phase1: remove unused 'cc_version'

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agophase1: remove unused 'other_builds'
Thibaut VARÈNE [Wed, 19 Oct 2022 14:19:42 +0000 (16:19 +0200)]
phase1: remove unused 'other_builds'

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agoRevert "phase1: remove renderable locks: not supported in 0.8.9"
Thibaut VARÈNE [Tue, 6 Sep 2022 15:19:37 +0000 (17:19 +0200)]
Revert "phase1: remove renderable locks: not supported in 0.8.9"

This commit re-enables the network locks that were first introduced in
in 0edb49341 ("phase1: provide upload/download locking"), but which were
disabled in 1e1a32607 as they weren't supported by the buildbot version
used at the time.

The use and benefits of this system is described in 0edb49341.

This reverts commit 1e1a326074018542c4a6f14ffe12984fa9c8a192.

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
18 months agoCreate README.md v1
Petr Štetiar [Mon, 15 May 2023 06:08:42 +0000 (08:08 +0200)]
Create README.md

Signed-off-by: Petr Štetiar <ynezz@true.cz>
18 months agoci: disable container pushing during pull request builds
Petr Štetiar [Sun, 14 May 2023 19:44:53 +0000 (21:44 +0200)]
ci: disable container pushing during pull request builds

Seems like we need to find a different workflow for container
pre-testing.

Signed-off-by: Petr Štetiar <ynezz@true.cz>
18 months agoci: fix ghcr.io container pushing
Petr Štetiar [Sun, 14 May 2023 18:40:08 +0000 (20:40 +0200)]
ci: fix ghcr.io container pushing

Attempt to fix following:

 #11 ERROR: denied: permission_denied: The requested installation does not exist.
 ------
  > pushing ghcr.io/ynezz/buildworker-v3.5.0:master with docker:
 ------
 ERROR: denied: permission_denied: The requested installation does not exist.
 Error: buildx failed with: ERROR: denied: permission_denied: The requested installation does not exist.

References: https://github.com/openwrt/buildbot/actions/runs/4971701948/jobs/8899889081#step:9:191
Signed-off-by: Petr Štetiar <ynezz@true.cz>
18 months agoIntroduce GitHub actions
Petr Štetiar [Sun, 14 May 2023 07:12:44 +0000 (09:12 +0200)]
Introduce GitHub actions

Signed-off-by: Petr Štetiar <ynezz@true.cz>
2 years agophase2: fix just another byte/string inconsistencies
Petr Štetiar [Sat, 26 Mar 2022 09:18:10 +0000 (10:18 +0100)]
phase2: fix just another byte/string inconsistencies

 File "/phase2/master.cfg", line 203, in parse_feed_entry
   if parts[0].startswith("src-git"):
 builtins.TypeError: startswith first arg must be bytes or a tuple of bytes, not str

Fixes: f3fcdbec877e ("phase2: fix obsolete assumption about feed methods")
Signed-off-by: Petr Štetiar <ynezz@true.cz>
2 years agoBump to latest Buildbot release 3.5.0
Petr Štetiar [Fri, 25 Mar 2022 21:38:54 +0000 (22:38 +0100)]
Bump to latest Buildbot release 3.5.0

Signed-off-by: Petr Štetiar <ynezz@true.cz>
2 years agophase2: handle missing change sources
Petr Štetiar [Wed, 23 Feb 2022 17:46:41 +0000 (18:46 +0100)]
phase2: handle missing change sources

In commit f3fcdbec877e ("phase2: fix obsolete assumption about feed
methods") we've fixed stuck buildmaster for master/phase2 builds, but
the issue wasn't obvious at first sight and some digging was necessary.
So lets make it obvious if/when it happens next time.

Signed-off-by: Petr Štetiar <ynezz@true.cz>
2 years agophase2: fix obsolete assumption about feed methods
Petr Štetiar [Wed, 23 Feb 2022 17:23:43 +0000 (18:23 +0100)]
phase2: fix obsolete assumption about feed methods

In commit 7fae1e5677e9 ("feeds: use git-src-full to allow Git
versioning") there was `src-git` method of shallow clone replaced with
`src-git-full` and this has caused issue with GitPoller configuration as
it only assumed, that only `src-git` method is going to be used for feed
updates. Fix currently stuck buildbot master by allowing usage of both
Git update methods.

Signed-off-by: Petr Štetiar <ynezz@true.cz>
2 years agoBump to latest Buildbot release 3.4.1
Petr Štetiar [Wed, 23 Feb 2022 17:22:41 +0000 (18:22 +0100)]
Bump to latest Buildbot release 3.4.1

Signed-off-by: Petr Štetiar <ynezz@true.cz>
2 years agoBump to latest Buildbot release 3.4.0
Petr Štetiar [Sat, 22 Jan 2022 10:50:11 +0000 (11:50 +0100)]
Bump to latest Buildbot release 3.4.0

Signed-off-by: Petr Štetiar <ynezz@true.cz>
3 years agoci: docker: deploy automatically only on default branch and tags
Petr Štetiar [Wed, 3 Nov 2021 13:59:26 +0000 (14:59 +0100)]
ci: docker: deploy automatically only on default branch and tags

In commit fecd899e8189 ("docker: deploy only manually and on
master/tags") we've introduced manual deployment of the Docker images,
but this is unneeded additional manual step, so rather prefer automatic
deployment. While at it, convert to usage of `rules:` as `only:` is
deprecated and `rules:` are preferred.

Signed-off-by: Petr Štetiar <ynezz@true.cz>
3 years agodocker: install `mkisofs` to worker container
Paul Spooren [Fri, 3 Sep 2021 18:39:47 +0000 (08:39 -1000)]
docker: install `mkisofs` to worker container

x86 targets allow the creation of ISO images, however this is not
possible because the `mkisofs` is missing. Install it.

Signed-off-by: Paul Spooren <mail@aparcar.org>
3 years agodocker: sort installed packages alphabetically
Paul Spooren [Fri, 3 Sep 2021 18:35:55 +0000 (08:35 -1000)]
docker: sort installed packages alphabetically

Signed-off-by: Paul Spooren <mail@aparcar.org>
3 years agodocker: deploy only manually and on master/tags
Paul Spooren [Sun, 5 Sep 2021 01:51:07 +0000 (15:51 -1000)]
docker: deploy only manually and on master/tags

Unmerged branches shouldn't be deployed as "latest" image, only tags and
`master` branches should.

It is still possible to use containers from tested branches since they
are uploaded to the container registry using their *commit slug*.

Signed-off-by: Paul Spooren <mail@aparcar.org>
3 years agophase1,phase2: improve round robin builds
Petr Štetiar [Wed, 21 Jul 2021 19:31:28 +0000 (21:31 +0200)]
phase1,phase2: improve round robin builds

There seems to be some issue with database updates, where database
updates are asynchronous and thus the status update of the previous
build (complete_at DB column) might take little bit longer, then
preparation of the next/current build.

This is issue during job prioritization as this might result in the
build of the same builder twice in a row, for example:

 2021-06-22 02:42:54+0000 [-]  <Build mipsel_24kc number:95 results:success>: build finished
 2021-06-22 02:42:55+0000 [-] prioritizeBuilders:          mipsel_24kc complete_at: 2021-06-21 20:17:14+00:00
 2021-06-22 03:14:30+0000 [-] prioritizeBuilders:          mipsel_24kc complete_at: 2021-06-22 02:42:54+00:00

Build finishes at 02:42:54, scheduler then asks for next build at
02:42:55, but the build still has the old complete_at timestamp
2021-06-21 20:17:14 instead of the correct one 2021-06-22 02:42:54, thus
scheduling the build of oldest mipsel_24kc builder one more time.

This is so far very promising workaround attempt which checks latest
builder complete_at in builds table which seems to be updated faster,
thus using greater complete_at value seems to work for now.

References: https://github.com/buildbot/buildbot/issues/4592#issuecomment-801163587
Signed-off-by: Petr Štetiar <ynezz@true.cz>
3 years agoBump to latest Buildbot release 3.2.0
Petr Štetiar [Mon, 28 Jun 2021 06:39:14 +0000 (08:39 +0200)]
Bump to latest Buildbot release 3.2.0

Signed-off-by: Petr Štetiar <ynezz@true.cz>
3 years agodocker,worker: install libelf-dev, libdw-dev
Tony Ambardar [Fri, 26 Mar 2021 09:55:41 +0000 (09:55 +0000)]
docker,worker: install libelf-dev, libdw-dev

The libelf-dev is a previous requirement to support STACK_VALIDATION
during kernel builds (x86/64). Building kernels with BTF debug
information requires both this and libdw-dev be installed.

Signed-off-by: Tony Ambardar <itugrok@yahoo.com>
3 years agobuildworker: provide OpenWrt version in description
Petr Štetiar [Thu, 25 Mar 2021 10:21:04 +0000 (11:21 +0100)]
buildworker: provide OpenWrt version in description

So it's clear to anyone which version is actually deployed.

Signed-off-by: Petr Štetiar <ynezz@true.cz>
3 years agobuildmaster: provide OpenWrt version in About section
Petr Štetiar [Thu, 25 Mar 2021 10:03:30 +0000 (11:03 +0100)]
buildmaster: provide OpenWrt version in About section

So it's clear to anyone which version is actually deployed.

Signed-off-by: Petr Štetiar <ynezz@true.cz>
3 years agophase1,phase2: add file space usage reporting
Petr Štetiar [Thu, 25 Mar 2021 08:54:49 +0000 (09:54 +0100)]
phase1,phase2: add file space usage reporting

Add `du` step so it's clear how much space was used by the build.

Signed-off-by: Petr Štetiar <ynezz@true.cz>
3 years agophase1, phase2: exclude temporary source files from sourceupload step
Baptiste Jonglez [Wed, 24 Mar 2021 22:28:25 +0000 (23:28 +0100)]
phase1, phase2: exclude temporary source files from sourceupload step

When the dl/ directory is shared with several workers, there can be
temporary "*.hash" and "*.dl" files being created by other workers.
These files should be excluded from the sourceupload step, otherwise it
can cause a failure when rsync tries to read them.

See for example:

  https://buildbot.openwrt.org/master/packages/#/builders/14/builds/18/steps/39/logs/stdio

Signed-off-by: Baptiste Jonglez <git@bitsofnetworks.org>
3 years agophase1, phase2: don't mark the build failed if a non-critical step fails
Baptiste Jonglez [Wed, 24 Mar 2021 22:48:13 +0000 (23:48 +0100)]
phase1, phase2: don't mark the build failed if a non-critical step fails

Some steps are informative or optional (haltOnFailure=False), so it makes
no sense to mark the whole build as failed if such a step fails.

Depending on the case, we either mark the build as "warning"
(warnOnFailure=True) or as successful (warnOnFailure=False).

Signed-off-by: Baptiste Jonglez <git@bitsofnetworks.org>
3 years agophase1,phase2: fix reconfig command by creating twistd.pid
Petr Štetiar [Fri, 19 Mar 2021 20:54:30 +0000 (21:54 +0100)]
phase1,phase2: fix reconfig command by creating twistd.pid

Currently it's not possible to reconfig buildmaster as twistd.pid is
missing so fix it by creating one manually.

Signed-off-by: Petr Štetiar <ynezz@true.cz>
3 years agobuildmaster: add some OpenWrt branding
Petr Štetiar [Wed, 17 Mar 2021 09:28:39 +0000 (10:28 +0100)]
buildmaster: add some OpenWrt branding

 Welcome to OpenWrt buildbot

Signed-off-by: Petr Štetiar <ynezz@true.cz>
3 years agoBump to latest Buildbot release 3.0.2
Petr Štetiar [Wed, 17 Mar 2021 08:36:10 +0000 (09:36 +0100)]
Bump to latest Buildbot release 3.0.2

Signed-off-by: Petr Štetiar <ynezz@true.cz>
3 years agoRevert "docker: master/worker: fix issue with latest stable sqlalchemy"
Petr Štetiar [Wed, 17 Mar 2021 08:35:14 +0000 (09:35 +0100)]
Revert "docker: master/worker: fix issue with latest stable sqlalchemy"

This reverts commit 1d17927e74896df84208da090c80c2d1791d5fe6 as the
issue got fixed in Buildbot version 3.0.2

Signed-off-by: Petr Štetiar <ynezz@true.cz>
3 years agophase1,phase2: implement round robin builds
Petr Štetiar [Tue, 16 Mar 2021 17:21:15 +0000 (18:21 +0100)]
phase1,phase2: implement round robin builds

Gather newest complete and not skipped build timestamps, reverse sort
them and use that as builder priority, so the newest built targets are
at the bottom.

Signed-off-by: Petr Štetiar <ynezz@true.cz>
3 years agodocker: master/worker: fix issue with latest stable sqlalchemy
Petr Štetiar [Mon, 15 Mar 2021 22:39:55 +0000 (23:39 +0100)]
docker: master/worker: fix issue with latest stable sqlalchemy

Fixes following issue with sqlalchemy version 1.4.0 and too relaxed
dependecies `sqlalchemy>=1.2.0` in buildbot:

 Traceback (most recent call last):
   File "/usr/local/bin/buildbot", line 8, in <module>
     sys.exit(run())
     from buildbot.db import enginestrategy
   ...
   File "/usr/local/lib/python3.7/dist-packages/buildbot/db/enginestrategy.py", line 154, in <module>
     class BuildbotEngineStrategy(strategies.PlainEngineStrategy):
 AttributeError: module 'sqlalchemy.engine.strategies' has no attribute 'PlainEngineStrategy'

References: https://github.com/buildbot/buildbot/issues/5911
Signed-off-by: Petr Štetiar <ynezz@true.cz>
3 years agophase1,phase2: shuffle order of builds
Petr Štetiar [Mon, 15 Mar 2021 21:46:09 +0000 (22:46 +0100)]
phase1,phase2: shuffle order of builds

It seems that once there are new commits, buildbot restarts building all
targets in alphabetical order. The current logic pretty much disables
the building of the alphabetically last targets, so until there is
proper solution just workaround it by randomly shuffling the builders
list.

References: https://github.com/buildbot/buildbot/issues/5193
Signed-off-by: Petr Štetiar <ynezz@true.cz>
3 years agoBump to latest Buildbot release 3.0.1
Petr Štetiar [Mon, 15 Mar 2021 07:34:58 +0000 (08:34 +0100)]
Bump to latest Buildbot release 3.0.1

Signed-off-by: Petr Štetiar <ynezz@true.cz>
3 years agoci: buildworker: disabled test temporarily
Petr Štetiar [Sat, 13 Mar 2021 23:12:41 +0000 (00:12 +0100)]
ci: buildworker: disabled test temporarily

It seems to be getting stuck for some yet to be investigated reason.

References: https://gitlab.com/gitlab-com/gl-infra/production/-/issues/3925#note_528657831
Signed-off-by: Petr Štetiar <ynezz@true.cz>
3 years agoci: use private runner
Petr Štetiar [Sat, 13 Mar 2021 22:33:49 +0000 (23:33 +0100)]
ci: use private runner

Shared runners seems to be unreliable lately and private runner should
be more secure as well.

Signed-off-by: Petr Štetiar <ynezz@true.cz>
3 years agobuildworker: add Python2 package
Petr Štetiar [Sat, 13 Mar 2021 06:51:03 +0000 (07:51 +0100)]
buildworker: add Python2 package

Which is still needed for 19.07 builds.

Signed-off-by: Petr Štetiar <ynezz@true.cz>