summaryrefslogtreecommitdiffstats
path: root/Cargo.toml
AgeCommit message (Collapse)Author
2021-01-15Add compatiblity setting in configuration fileMatthias Beyer
This patch adds a compatibility setting in the configuration file, so that butido does not fail late when parsing configuration parameters or package definition files, but early, when the configured compatilibty does not match the version of butido itself. Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-01-13Revert "Reimplement hash verification"Matthias Beyer
This reverts commit c3fc1281142ec10414197a31070cc45930a859e3 and commit 18b256e040881ac674463913b2a7e290125ea738. The problem here is that we introduced "ring" to our dependencies, which has a unappropriate license (ISC and openssl thing). We should not depend on such a library, because it may conflict with our own EPL 2.0 (IANAL). Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-01-13Add more Authors to Cargo.tomlMatthias Beyer
2021-01-13Set license in Cargo.tomlMatthias Beyer
2021-01-12Reimplement hash verificationMatthias Beyer
This patch re-implements hashing using the "ring" crypto library and implementing a streaming hashing with it. This way, we stream the file to the hasher rather than reading the full file to memory. Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-01-12Fix: Spawn filesystem task on a blocking tokio threadMatthias Beyer
This patch changes the (possibly heavy) File reading from disk to be executed on a blocking tokio thread. This way, we ensure we do not block until the `read()` operation is finished and can continue executing async tasks on the runtime. Because IO might be expensive (think of a 5GB file that is read to memory), this is a good optimization. Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-01-12Pin shiplift to revisionMatthias Beyer
With this patch, we pin shiplift to a revision. That is because shiplift may break from one revision to another on master (which just happened and which is what we fixed in cc8d3a7912203c90a6591e0d178c80f620bd61d0 ("Fix: Add type annotation"). We expect shiplift to hit tokio 1.0 anytime now and because of that we might want to do a manual update of shiplift and tokio rather than an imperative `cargo update` which may (short-term) break our codebase. Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-01-11Fix: Remove indentation from script snippets when building scriptChristoph Prokop
We actually need to make an ugly (and very bad performing) hack here, to get the `unindent` crate to actually unindent here. text = format!("\n{}", text).unindent(), the format!() call is necessary to tell `unindent::Unindent::unindent()` that the intended indentation is actually zero. If we do not add that `\n` here, the first line of the to-be-unindented indented text stays unintentionally indented. For example, unindenting the intentionally indented string: " intentionally indented intentionally indented " results unintentionally in the partially indented and partially unindented text: " intentionally indented intentionally indented " Which is not our intention of course, although it seems to be the intention of the unindent crate, as documented. But with the intentionally added `\n` we unindent the indentation of all indented "intentionally indented" lines. Signed-off-by: Christoph Prokop <christoph.prokop@atos.net> Signed-off-by: Matthias Beyer <matthias.beyer@atos.net> Tested-by: Christoph Prokop <christoph.prokop@atos.net> Tested-by: Matthias Beyer <matthias.beyer@atos.net>
2020-12-16Replace manual Display implementations with deriveMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-12-15Add subcommand to generate CLI completion scriptMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-12-14Disable logging in handlebarsMatthias Beyer
Because the scripts we run should not be able to access the logger during handlbars rendering. This is due to the fact that we need to have control over stdout/stderr because of the progress bar printing, but also because there's absolutely no need for the user to log during the handlebars rendering process. Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-12-14Remove ContainerError type, thiserror dependencyMatthias Beyer
This removes the ContainerError type for simplicity. We can call anyhow!() and just work with that, no need to pull in thiserror just for one type. Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-12-11CleanupMatthias Beyer
Sort and make indention nice. Also dev-dependencies where removed because indoc is a normal dependency anyways. Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-12-11Remove unused dependency: tracingMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-12-11Add feature: script lintingMatthias Beyer
This patch adds script linting via a configurable script. With this patch, the configuration can point to a script or program that gets the packaging script on STDIN and might exit with a nonzero value on error. The simplest script I can think of that adds value is: #!/bin/bash shellcheck - to run the packaging script through shellcheck. stdout and stderr of the linting script are printed in case of non-zero return value. Linting can be disabled by not setting the script in the config or by passing a commandline flag to skip linting (a warning will be printed in this case). Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-12-07Fix Licensing issueMatthias Beyer
The licensing issue fixed by this patch is described in the comment in the code. Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-12-03Dependency: tokio: Enable only features we needMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-12-03Update dependency: ascii_table must be 3.0.2 or newerMatthias Beyer
This patch updates the ascii_table dependency with a requirement to be 3.0.2 or newer. This is because ascii_table was licensed as GPLv3 before that version, and got relicensed to MIT in 3.0.2. Because we do not want to depend on a library that is GPLv3, we asked the author to relicense their crate, which is what they did for us. This patch thus ensures that we do not link GPLv3 code. Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-11-26Update dependency: clap: 3.0.0-beta.1 -> 3.0.0-beta.2Matthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-11-26Update dependency: env_logger: 0.7 -> 0.8Matthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-11-26Update dependency: log: 0.3 -> 0.4Matthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-11-26Update dependency: config: 0.9 -> 0.10Matthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-11-15Implement error reporting of failed jobsMatthias Beyer
This patch implements error reporting if a container job did not end successfully. It does so by adding an error type `ContainerError`, which is either an error that describes that a container did not exit with success, or an anyhow::Error (that describes an error from the container management code). The algorithm of log-aggregation is now intercepted to catch any exit-state log items. If there is no exit-state from the container (No line with "#BUTIDO:STATE:..."), no error is assumed. Here could be a warning later on. The so aggregated state is then passed up to the orchestrator, which then collects the errors and prints them. If the implementation is correct (which is not tested yet, because this is rather difficult to test), all other containers should continue operation until they are ready, before the errors are handled. The code responsible for this (in the Orchestrator implementation) was adapted to not collect until the first error, but collect everything and then check for errors. Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-11-13Add flag to show script, highlighted automaticallyMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-11-13Add command to show a single job from the databaseMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-11-11Add subcommand "source download"Matthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-11-11Add hash algorithms to verify source integrityMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-11-09Add more trace outputMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-11-05Enable serde_json feature on dieselMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-11-05Downgrade dependency: We need to use uuid = "0.6" for compatibility with dieselMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-11-05Add dependency serde_json for de/encoding JSONMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-11-05Add helper function to find git commitMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-11-05Add model for submit storingMatthias Beyer
This also needs the "uuid" and "chrono" diesel features. Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-11-04Add FileSink as LogSink implementation that writes to a fileMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-11-04Merge branch 'db' into orchestratorMatthias Beyer
This imports the changes from the "db" branch, because the orchestrator needs the database interface code to be implemented.
2020-11-03Add flag to print output as CSVMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-11-03Do the right thing when output is a pipeMatthias Beyer
This changes the display_as_table() function to automatically ignore the headers and not printing a database, but simply the values as a whitespace seperated list when stdout is a pipe. Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-11-03Add subcommand to show all artifacts from dbMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-11-03Add DB interface module for talking to the DB directlyMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-11-03Add dependency dieselMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-11-03Add tar dependency for unpacking tar archivesMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-11-03Add first setup for EndpointManagerMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-10-29Dependency filter: master -> 0.4.0Matthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-10-29Add indoc!() to have less indention in the CLI help textMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-10-29Use filters from master branch until released in 0.4.0Matthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-10-29Implement what-depends subcommandMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-10-28Add configuration for releases/staging directories, including variable ↵Matthias Beyer
interpolation Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-10-27Add multiline string testMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-10-27Implement log module for job log handlingMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-10-26Add job related typesMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>