Age | Commit message (Collapse) | Author |
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
This removes the "tree" column from the "submits" table.
This is because we do not store the build-tree in the database anymore.
We don't actually need this feature and we can always re-build the tree
from an old commit in the repository.
Thus, this is not required anymore.
Also, it is less easy to do as soon as the internal implementation
changes from a "tree" structure to a "DAG" structure.
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
|
|
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
|
|
|
|
This patch changes the propagation of results, so that the UUIDs of the jobs
producing the artifacts are propagated through the whole tree.
This issue at hand was that when having a dependency tree like this:
C -> B -> A
The results from A were propagated to B and the results from B where propagated
to C. But, because the implementation did not do this, the results from A where
included in the results from B and the UUID from A was dropped.
This was an issue because the implementation waited for _all_ dependencies
(direct and transitive) by their job UUID.
This means that C waited on a UUID that described the Job for A, but never
received it, which caused everything to fail.
This patch changes the algorithm, to not only report the own UUID and all
artifacts of a job, but all artifacts with their UUID attached, which solves the
issue.
The root of the tree (the `Orchestrator`) simply drops the UUIDs before
returning the artifacts to its caller.
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
Tested-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
constructing error object
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
This seems strange, but it works. I don't know whether this is right, tho.
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
Tested-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
|
|
This patch fixes progress reporting. Because our progress-bar-creating helper
initializes the bar with length 1, we have to set the length here manually.
The bar has to be added to the multibar object right away, because otherwise it
will be rendered to the output which gives us an ugly dead progress bar.
If the length is set after the adding to the multibar object, this does not
happen.
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
Tested-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
This patch makes the bar moved to the LogReceiver instead of borrowing it to it.
Because ProgressBar::clone() is cheap (according to indicatif documentation it
is just an Arc<> holding the actual object), we can do this here without fearing
the overhead.
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
This patch adds the ability to set network mode for an endpoint. This means that
all containers on the endpoint are started with, for example, --net=host (if
that is desired).
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
Tested-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
|
|
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
This caused the program never to return if the running jobs resulted in an error
and no artifact being sent to the parent - which caused the tokio::join!() to
never return, thus the futures not to be pulled and thus the whole program sleep
in an strange state which looked like some filesystem operations did not return.
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
Tested-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
|
|
Because tokio 1.0 does not ship with the Stream trait, this patch also
introduces tokio_stream as new dependency.
For more information, look here:
https://docs.rs/tokio/1.0.3/tokio/stream/index.html
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
|
|
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
|
|
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
|
|
We don't need resiter::Map here anymore because itertools 0.10 provides
a map_ok() extension.
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
|
|
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Leon Schuermann <leon@is.currently.online>
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
With this change the table renders correctly in a variety of editors
and applications, such as emacs markdown-mode, GitHub and
dillinger.io.
Signed-off-by: Leon Schuermann <leon@is.currently.online>
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
MIT licensed documentation helper crate for drawing nice graphes.
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
|
|
|
|
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
Tested-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Before that change, it returned the dbmodels::Artifact objects, for which we
needed to fetch the filestore::Artifact again.
This change removes that restriction (improving runtime, of course).
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
Tested-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
This reimplements the Orchestrator::run() function _again_.
Commit 889649ac16367fe671ce61363bb6ce82531e5a6b was the basis for this work,
improving the baseline so we can take a step further in this commit.
The approach before the change from 889649ac16367fe671ce61363bb6ce82531e5a6b had
one flaw. In the following scenario:
A
/ \
B E
/ \ \
C D F
The nodes C, D and F are selected and then run.
After they all succeeded, the next iteration is checked, and yields that B and E can be built.
But if F takes extremely long, B and E both have to wait until it is ready
(because that's how the implementation works), although B can be built as soon
as C and D are ready.
This patch changes the implementation to the following:
1. For each job, there is a task.
2. The task has a channel where it receives results from its dependencides.
In above example, B would receive the results of the job runs for C and D,
and E would receive the result from the job run of F.
3. The task also has a sender where it can send its resulting artifacts to a
parent task.
The task _also_ sends the results of its childs. This way we propagate the
built artifacts up to the root node.
All these tasks are started concurrently.
The "root" task sends the result to the orchestrator.
The task itself is responsible for sending the job to the scheduler and
processing the result.
If the job errored, the task sends that to its parent.
If a child errored, the task aborts its own error and propagates that error.
What does not yet work in this commit:
* Artifacts that were built before the error occoured are not reported yet.
* The staging/release stores may contain artifacts that can be re-used.
They are completely ignored by now.
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
Tested-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
|
|
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
|
|
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
|
|
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
|