Buildomat manages the provisioning of ephemeral UNIX systems on which to run software builds

Overview

hammer logo
B U I L D O M A T
a software build labour-saving device


Buildomat manages the provisioning of ephemeral UNIX systems (e.g., instances in AWS EC2) on which to run software builds. It logs job output, collects build artefacts, and reports status. The system integrates with GitHub through the Checks API, to allow build jobs to be triggered by pushes and pull requests.

Components

Buildomat Core

The buildomat core is responsible for authenticating users and remote services, for managing build systems, and for running jobs and collecting output.

Client Command (buildomat, in client/)

A client tool that uses the client library to interface with and manipulate the core server. The tool has both administrative and user-level functions, expressed in a relatively regular hierarchy of commands; e.g., buildomat job run or buildomat user ls.

$ ./target/release/buildomat
Usage: buildomat [OPTS] COMMAND [ARGS...]

Commands:
    info                get information about server and user account
    control             server control functions
    job                 job management
    user                user management


Options:
        --help          usage information
    -p, --profile PROFILE
                        authentication and server profile

ERROR: choose a command

Client Library (buildomat-openapi, in openapi/)

A HTTP client library for accessing the core buildomat server. This client is regenerated by a script (./tools/generate.sh) which uses the progenitor OpenAPI client generator.

Server (buildomat-server, in server/)

The core buildomat API server. Manages the creation, tracking, and destruction of AWS EC2 instances as required to execute jobs. This component can be used by both the GitHub integration server (Wollongong) and the client command.

Agent (buildomat-agent, in agent/)

A process that is injected into an ephemeral AWS EC2 instance to allow the buildomat core server to take control and run jobs. This process receives single-use credentials at provisioning time from the core server, and connects out to receive instructions. The agent does not require a public IP, or any direct inbound connectivity, to allow agents to run inside remote NAT environments.

GitHub Integration (Wollongong)

Wollongong is the GitHub-specific portion of the buildomat suite. It is responsible for receiving and processing notifications of new commits and pull requests on GitHub, starting any configured build jobs, and reporting the results so that they are visible through the GitHub user interface.

Server (wollongong-server, in github/server/)

This server acts as a GitHub App. It is responsible for processing incoming GitHub webhooks that notify the system about commits and pull requests in authorised repositories. In addition to relaying jobs between GitHub and the buildomat core, this service provides an additional HTML presentation of job state (e.g., detailed logs) and access to any artefacts that jobs produce. This server keeps state required to manage the interaction with GitHub, but does not store job data; requests for logs or artefacts are proxied back to the core server.

Database Tool (wollongong-dbtool, in github/dbtool/)

This tool can be used to inspect the database state kept by Wollongong as it tracks GitHub pull requests and commits. Unlike the core client tool, this program directly interacts with a local SQLite database.

$ wollongong-dbtool
Usage: wollongong-dbtool COMMAND [ARGS...]

Commands:
    delivery (del)      webhook deliveries
    repository (repo)   GitHub repositories
    check               GitHub checks


Options:
    --help              usage information

ERROR: choose a command

Of particular note, the tool is useful for inspecting and replaying received webhook events; e.g.,

$ wollongong-dbtool del ls
SEQ   ACK RECVTIME             EVENT          ACTION
0     1   2021-10-05T01:58:32Z ping           -
1     1   2021-10-05T02:25:33Z installation   created
2     1   2021-10-05T02:26:53Z push
3     1   2021-10-05T02:26:53Z check_suite    requested
4     1   2021-10-05T02:26:56Z check_suite    completed
5     1   2021-10-05T02:26:56Z check_run      completed
6     1   2021-10-05T02:26:56Z check_run      created
7     1   2021-10-05T02:26:56Z check_run      created
8     1   2021-10-05T02:26:57Z check_run      created
...

The wollongong-dbtool del unack SEQ command can be used to trigger the reprocessing of an invididual webhook message.

Licence

Unless otherwise noted, all components are licenced under the Mozilla Public License Version 2.0.

Comments
  • can we unblock dependabot and renovate from buildomat jobs?

    can we unblock dependabot and renovate from buildomat jobs?

    It looks like after the recent config change, dependabot PRs (and I expect renovate PRs) require explicit authorization from an Oxide org member in order to run the buildomat tests. This is pretty tedious because dependabot PRs wind up getting rebased and otherwise updated a lot before landing. This is particularly important for omicron and dropshot, though there are other repos that use dependabot and renovate.

    I'm not sure how best to fix this. I don't think these users are really that special -- this could apply to any external contributor. But in the interest of urgency I could see a simpler mechanism that's constrained to these users. We could hardcode these users in the buildomat source or maybe make this configurable on a per-repo basis?

    opened by davepacheco 8
  • after the job program has executed, report lingering open stdio file descriptors and fail job

    after the job program has executed, report lingering open stdio file descriptors and fail job

    Under some conditions the job program might exit, such as if it has decided it has reached a fatal condition or hit a self-imposed timeout. Unfortunately, the child process exiting is not presently enough to end the buildomat job; I believe we will also wait to read everything we can read from the stdout and stderr descriptors, which may be shared with and then held open by background processes.

    When the child process exits, we should start a timer (say, 30-60 seconds) and abandon the file descriptors at that point even if we have not hit EOF. This condition should at least result in a warning message in the job event stream, and probably also fail the job.

    opened by jclulow 1
  • build(deps): bump thread_local from 1.1.3 to 1.1.4 in /github/server

    build(deps): bump thread_local from 1.1.3 to 1.1.4 in /github/server

    Bumps thread_local from 1.1.3 to 1.1.4.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • build(deps): bump hyper from 0.14.5 to 0.14.12 in /github/server

    build(deps): bump hyper from 0.14.5 to 0.14.12 in /github/server

    Bumps hyper from 0.14.5 to 0.14.12.

    Release notes

    Sourced from hyper's releases.

    v0.14.12

    Bug Fixes

    • ffi: on_informational callback had no headers (39b6d01a)
    • http1: apply header title case for consecutive dashes (#2613) (684f2fa7)
    • http2: improve errors emitted by HTTP2 Upgraded stream shutdown (#2622) (be08648e)

    Features

    • client: expose http09 and http1 options on client::conn::Builder (#2611) (73bff4e9, closes #2461)

    v0.14.11

    Bug Fixes

    • client: retry when pool checkout returns closed HTTP2 connection (#2585) (52214f39)
    • http2:
      • improve I/O errors emitted by H2Upgraded (#2598) (f51c677d)
      • preserve proxy-authenticate and proxy-authorization headers (#2597) (52435701)

    Features

    • ffi: add hyper_request_on_informational (25d18c0b)

    v0.14.10

    Bug Fixes

    • http1:
      • reject content-lengths that have a plus sign prefix (06335158) (Security GHSA-f3pg-qwvg-p99c)
      • protect against overflow in chunked decoder (efd9a982) (Security GHSA-5h46-h7hh-c6x9)

    Features

    • ffi: add option to get raw headers from response (8c89a8c1)

    v0.14.9

    Bug Fixes

    • http1: reduce memory used with flatten write strategy (eb0c6463)

    v0.14.8

    Features

    • client: allow to config http2 max concurrent reset streams (#2535) (b9916c41)
    • error: add Error::is_parse_too_large and Error::is_parse_status methods (#2538) (960a69a5)
    • http2:

    ... (truncated)

    Changelog

    Sourced from hyper's changelog.

    v0.14.12 (2021-08-24)

    Bug Fixes

    • ffi: on_informational callback had no headers (39b6d01a)
    • http1: apply header title case for consecutive dashes (#2613) (684f2fa7)
    • http2: improve errors emitted by HTTP2 Upgraded stream shutdown (#2622) (be08648e)

    Features

    • client: expose http09 and http1 options on client::conn::Builder (#2611) (73bff4e9, closes #2461)

    v0.14.11 (2021-07-21)

    Bug Fixes

    • client: retry when pool checkout returns closed HTTP2 connection (#2585) (52214f39)
    • http2:
      • improve I/O errors emitted by H2Upgraded (#2598) (f51c677d)
      • preserve proxy-authenticate and proxy-authorization headers (#2597) (52435701)

    Features

    • ffi: add hyper_request_on_informational (25d18c0b)

    v0.14.10 (2021-07-07)

    Bug Fixes

    • http1:
      • reject content-lengths that have a plus sign prefix (06335158)
      • protect against overflow in chunked decoder (efd9a982)

    Features

    • ffi: add option to get raw headers from response (8c89a8c1)

    v0.14.9 (2021-06-07)

    Bug Fixes

    ... (truncated)

    Commits
    • f46b175 v0.14.12
    • 39b6d01 fix(ffi): on_informational callback had no headers
    • adaa8b3 chore(dependencies): require httparse 1.5.1
    • 95a9783 refactor(http1): use MaybeUninit for parsing with uninitialized headers (#2545)
    • be08648 fix(http2): improve errors emitted by HTTP2 Upgraded stream shutdown (#2622)
    • 9a113ed docs(capi): fix typo in the upload example build (#2626)
    • a1995ee docs(capi): build 'upload' example too by default (#2625)
    • 3b26572 refactor(ffi): check pointer arguments for NULL (#2624)
    • c351539 docs(capi): output the hyper_version in the capi examples (#2623)
    • 684f2fa fix(http1): apply header title case for consecutive dashes (#2613)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • build(deps): bump regex from 1.5.4 to 1.5.6 in /github/server

    build(deps): bump regex from 1.5.4 to 1.5.6 in /github/server

    Bumps regex from 1.5.4 to 1.5.6.

    Changelog

    Sourced from regex's changelog.

    1.5.6 (2022-05-20)

    This release includes a few bug fixes, including a bug that produced incorrect matches when a non-greedy ? operator was used.

    1.5.5 (2022-03-08)

    This releases fixes a security bug in the regex compiler. This bug permits a vector for a denial-of-service attack in cases where the regex being compiled is untrusted. There are no known problems where the regex is itself trusted, including in cases of untrusted haystacks.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • build(deps): bump hyper from 0.14.5 to 0.14.10 in /github/server

    build(deps): bump hyper from 0.14.5 to 0.14.10 in /github/server

    Bumps hyper from 0.14.5 to 0.14.10.

    Release notes

    Sourced from hyper's releases.

    v0.14.10

    Bug Fixes

    • http1:
      • reject content-lengths that have a plus sign prefix (06335158) (Security GHSA-f3pg-qwvg-p99c)
      • protect against overflow in chunked decoder (efd9a982) (Security GHSA-5h46-h7hh-c6x9)

    Features

    • ffi: add option to get raw headers from response (8c89a8c1)

    v0.14.9

    Bug Fixes

    • http1: reduce memory used with flatten write strategy (eb0c6463)

    v0.14.8

    Features

    • client: allow to config http2 max concurrent reset streams (#2535) (b9916c41)
    • error: add Error::is_parse_too_large and Error::is_parse_status methods (#2538) (960a69a5)
    • http2:
      • Implement Client-side CONNECT support over HTTP/2 (#2523) (5442b6fa, closes #2508)
      • allow HTTP/2 requests by ALPN when http2_only is unset (#2527) (be9677a1)

    Performance

    • http2: reduce amount of adaptive window pings as BDP stabilizes (#2550) (4cd06bf2)

    v0.14.6

    Features

    • client: add option to allow misplaced spaces in HTTP/1 responses (#2506) (11345394)
    • http1: add options to preserve header casing (#2480) (dbea7716, closes #2313)
    Changelog

    Sourced from hyper's changelog.

    v0.14.10 (2021-07-07)

    Bug Fixes

    • http1:
      • reject content-lengths that have a plus sign prefix (06335158)
      • protect against overflow in chunked decoder (efd9a982)

    Features

    • ffi: add option to get raw headers from response (8c89a8c1)

    v0.14.9 (2021-06-07)

    Bug Fixes

    • http1: reduce memory used with flatten write strategy (eb0c6463)

    v0.14.8 (2021-05-25)

    Features

    • client: allow to config http2 max concurrent reset streams (#2535) (b9916c41)
    • error: add Error::is_parse_too_large and Error::is_parse_status methods (#2538) (960a69a5)
    • http2:
      • Implement Client and Server CONNECT support over HTTP/2 (#2523) (5442b6fa, closes #2508)
      • allow HTTP/2 requests by ALPN when http2_only is unset (#2527) (be9677a1)

    Performance

    • http2: reduce amount of adaptive window pings as BDP stabilizes (#2550) (4cd06bf2)

    v0.14.7 (2021-04-22)

    Bug Fixes

    • http1: http1_title_case_headers should move Builder (a303b3c3)

    Features

    ... (truncated)

    Commits
    • 9b69cbc v0.14.10
    • 1fb719e fix(http1): reject content-lengths that have a plus sign prefix
    • 1068b99 fix(http1): protect against overflow in chunked decoder
    • 11cb472 refactor(http2): fix unstable name clash of Cursor::remaining
    • 13594c3 chore(github): merge duplicate issue templates
    • c60a9dd chore(github): add issue templates
    • 8c89a8c feat(ffi): add option to get raw headers from response
    • 08b2138 refactor(error): add header parse error details in hyper::Error
    • ea8b0cd refactor(error): remove PartialEq derives for error kind enums
    • 8b71a67 v0.14.9
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • build(deps): bump crossbeam-utils from 0.8.5 to 0.8.8 in /github/server

    build(deps): bump crossbeam-utils from 0.8.5 to 0.8.8 in /github/server

    Bumps crossbeam-utils from 0.8.5 to 0.8.8.

    Release notes

    Sourced from crossbeam-utils's releases.

    crossbeam-utils 0.8.8

    • Fix a bug when unstable loom support is enabled. (#787)

    crossbeam-utils 0.8.7

    • Add AtomicCell<{i*,u*}>::{fetch_max,fetch_min}. (#785)
    • Add AtomicCell<{i*,u*,bool}>::fetch_nand. (#785)
    • Fix unsoundness of AtomicCell<{i,u}64> arithmetics on 32-bit targets that support Atomic{I,U}64 (#781)

    crossbeam-utils 0.8.6

    • Re-add AtomicCell<{i,u}64>::{fetch_add,fetch_sub,fetch_and,fetch_or,fetch_xor} that were accidentally removed in 0.8.0 0.7.1 on targets that do not support Atomic{I,U}64. (#767)
    • Re-add AtomicCell<{i,u}128>::{fetch_add,fetch_sub,fetch_and,fetch_or,fetch_xor} that were accidentally removed in 0.8.0 0.7.1. (#767)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • build(deps): bump tokio from 1.12.0 to 1.19.2 in /github/server

    build(deps): bump tokio from 1.12.0 to 1.19.2 in /github/server

    Bumps tokio from 1.12.0 to 1.19.2.

    Release notes

    Sourced from tokio's releases.

    Tokio v1.19.1

    1.19.1 (June 5, 2022)

    This release fixes a bug in Notified::enable. (#4747)

    #4747: tokio-rs/tokio#4747

    Tokio v1.19.0

    1.19.0 (June 3, 2022)

    Added

    • runtime: add is_finished method for JoinHandle and AbortHandle (#4709)
    • runtime: make global queue and event polling intervals configurable (#4671)
    • sync: add Notified::enable (#4705)
    • sync: add watch::Sender::send_if_modified (#4591)
    • sync: add resubscribe method to broadcast::Receiver (#4607)
    • net: add take_error to TcpSocket and TcpStream (#4739)

    Changed

    • io: refactor out usage of Weak in the io handle (#4656)

    Fixed

    • macros: avoid starvation in join! and try_join! (#4624)

    Documented

    • runtime: clarify semantics of tasks outliving block_on (#4729)
    • time: fix example for MissedTickBehavior::Burst (#4713)

    Unstable

    • metrics: correctly update atomics in IoDriverMetrics (#4725)
    • metrics: fix compilation with unstable, process, and rt, but without net (#4682)
    • task: add #[track_caller] to JoinSet/JoinMap (#4697)
    • task: add Builder::{spawn_on, spawn_local_on, spawn_blocking_on} (#4683)
    • task: add consume_budget for cooperative scheduling (#4498)
    • task: add join_set::Builder for configuring JoinSet tasks (#4687)
    • task: update return value of JoinSet::join_one (#4726)

    #4498: tokio-rs/tokio#4498 #4591: tokio-rs/tokio#4591 #4607: tokio-rs/tokio#4607 #4624: tokio-rs/tokio#4624 #4656: tokio-rs/tokio#4656 #4671: tokio-rs/tokio#4671 #4682: tokio-rs/tokio#4682 #4683: tokio-rs/tokio#4683 #4687: tokio-rs/tokio#4687 #4697: tokio-rs/tokio#4697 #4705: tokio-rs/tokio#4705 #4709: tokio-rs/tokio#4709 #4713: tokio-rs/tokio#4713 #4725: tokio-rs/tokio#4725 #4726: tokio-rs/tokio#4726 #4729: tokio-rs/tokio#4729

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Buildomat: Target for Oxide VMs

    Buildomat: Target for Oxide VMs

    We currently have a "factory" for AWS, and one for lab infrastructure within https://github.com/oxidecomputer/buildomat/tree/main/factory

    We should add a third factory for "oxide", which appears similar to the AWS interface, but which creates VMs on an Oxide rack instead.

    opened by smklein 0
  • handle installation_repositories events and update the repository cache

    handle installation_repositories events and update the repository cache

    We receive webhook deliveries with the event field set to installation_repositories, and the payload.action field set to either added or removed. We should at least use the removed events to ditch old cached values. Otherwise, things can become confused when a repository is deleted and then another repository is subsequently created with the same name later.

    opened by jclulow 0
  • file publishing should report errors

    file publishing should report errors

    At present, if you add a [[publish]] directive to the TOML, but something about it was wrong, we not only do not fail the job but we don't even report the problem. This happens in wollogong, in the basic variety code:

                /*
                 * Resolve any publishing directives.  For now, we do not handle
                 * publish rules that did not match any output from the actual job.
                 * We also do not yet correctly handle a failure to publish, which
                 * will require more nuance in reported errors from Dropshot and
                 * Progenitor.  This feature is broadly still experimental.
                 */
                for p in c.publish.iter() {
                    if let Some(o) =
                        outputs.iter().find(|o| o.path == p.from_output)
                    {
                        b.job_output_publish(
                            jid,
                            &o.id,
                            &buildomat_openapi::types::JobOutputPublish {
                                series: p.series.to_string(),
                                version: cs.head_sha.to_string(),
                                name: p.name.to_string(),
                            },
                        )
                        .await
                        .ok();
                    }
                }
    

    https://github.com/oxidecomputer/buildomat/blob/085e7685f3d3a6b99edbd7fb336533c84bf64fbe/github/server/src/variety/basic.rs#L420-L443

    It is probably time to consider this less experimental:

    • publish directives for files not produced as output artefacts should be reported and fail the job
    • publish failures for otherwise present output artefacts should be also be reported and fail the job
    opened by jclulow 0
  • Include logs from timed out jobs

    Include logs from timed out jobs

    See https://github.com/oxidecomputer/omicron/pull/1564/checks?check_run_id=7729390898 -- the job timed out and there should be logs lying around to upload, but I don't think they get uploaded. (https://github.com/oxidecomputer/omicron/issues/1576)

    opened by iliana 1
Owner
Oxide Computer Company
Servers as they should be.
Oxide Computer Company
Yellhole is a lightweight tumblelog which can run on e.g. fly.io for cheap.

Yellhole A Hole To Yell In Yellhole is a lightweight tumblelog which can run on e.g. fly.io for cheap. Features Runs on a single node. Use a CDN if yo

Coda Hale 8 Dec 15, 2022
QueingSimulator is an application that can be used to build intuitions about behavior of synchronous request/reply systems

Queueing Simulator QueingSimulator is an application that can be used to build intuitions about behavior of synchronous request/reply systems (such as

Joe Magerramov 7 Sep 11, 2022
`fugit` provides a comprehensive library of `Duration` and `Instant` for the handling of time in embedded systems, doing all it can at compile time.

fugit fugit provides a comprehensive library of Duration and Instant for the handling of time in embedded systems, doing all it can at compile time. T

Emil Fresk 40 Oct 2, 2022
Nimbus is a framework for building parachain consensus systems on cumulus-based parachains.

Cumulo -- Nimbus ⛈️ Nimbus is a framework for building parachain consensus systems on cumulus-based parachains. Given the regular six-second pulse-lik

null 36 Dec 14, 2022
Amethyst is a systems language aimed at being simple, small, portable, and safe.

amethyst Amethyst is a systems language aimed at being simple, small, portable, and safe. What is this language? From the r/ProgLangs discord server:

Amethyst Language 34 Dec 18, 2022
Opensource diagnostic software for Daimler vehicles, inspired by Xentry and DAS, written in Rust

OPENSTAR An opensource diagnostic application for Daimler vehicles inspired by DAS and Xentry. Some of the work here is based on OpenVehicleDiag If yo

Ashcon Mohseninia 21 Nov 20, 2022
A powerful minecraft bedrock software written in Rust with a powerful Typescript plugin API.

Netrex A powerful minecraft bedrock software written in RustLang. Why Netrex? It's written in Rust. Unique and straight to the point. Typescript Plugi

Netrex 51 Dec 26, 2022
A realtime flight tracking program for our Software Engineering 300 class at ERAU

Flight Tracking ERAU SE300 Description Software that allows for weather and plane tracking to facilitate the user in looking at plane paths. Many peop

null 18 Sep 29, 2022
Software for managing Stream Deck devices with folders and actions

Streamduck Software for managing Stream Deck devices with folders and actions Project that will perhaps be better than streamdeck-ui Currently still i

TheJebForge 21 Dec 16, 2022
Software adapter for various Chunithm slider controllers with a built-in Brokenithm web controller

slidershim Software adapter for various Chunithm slider controllers with a built-in Brokenithm web controller. Has support for keyboard/gamepad output

Si Yuan 45 Dec 17, 2022
Meet Rustacean GPT, an experimental project transforming OpenAi's GPT into a helpful, autonomous software engineer to support senior developers and simplify coding life! 🚀🤖🧠

Rustacean GPT Welcome, fellow coding enthusiasts! ?? ?? I am excited to introduce you to Rustacean GPT, my humble yet ambitious project that aims to t

Gary McDougall 3 May 10, 2023
This is a public snapshot of Fly's init code. It powers every Firecracker microvm we run for our users.

Fly Init This is a public snapshot of Fly's init code. It powers every Firecracker microvm we run for our users. It is Rust-based and we thought makin

fly.io 186 Dec 30, 2022
Damavand is a quantum circuit simulator. It can run on laptops or High Performance Computing architectures, such CPU distributed architectures or multi GPU distributed architectures.

Damavand is a quantum circuit simulator. It can run on laptops or High Performance Computing architectures, such CPU distributed architectures or multi GPU distributed architectures.

MichelNowak 0 Mar 29, 2022
Rust Keeper bots that run various functions, from liquidations, to orderbook cranks, and more.

The zo-keeper (pronounced "zoo keeper") repository runs large scale instructions that secure the 01 network, and allow it to operate in a fully decentralized manner.

Zero One Global Foundation 61 Dec 16, 2022
Telegram bot help you to run Rust code in Telegram via Rust playground

RPG_BOT (Rust Playground Bot) Telegram bot help you to run Rust code in Telegram via Rust playground Bot interface The bot supports 3 straightforward

TheAwiteb 8 Dec 6, 2022
Run LLaMA inference on CPU, with Rust 🦀🚀🦙

LLaMA-rs Do the LLaMA thing, but now in Rust ?? ?? ?? Image by @darthdeus, using Stable Diffusion LLaMA-rs is a Rust port of the llama.cpp project. Th

Rustformers 2.7k Apr 17, 2023
Run LLaMA inference on CPU, with Rust 🦀🚀🦙

LLaMA-rs Do the LLaMA thing, but now in Rust ?? ?? ?? Image by @darthdeus, using Stable Diffusion LLaMA-rs is a Rust port of the llama.cpp project. Th

Rustformers 2.7k Apr 17, 2023
osu-link is a program which links osu!stable beatmaps to osu!lazer's new store format, saving you disk space.

osu-link is a program which links osu!stable beatmaps to osu!lazer's new store format, saving you disk space.

LavaDesu 2 Nov 8, 2021
Simple tray application which shows battery level for HyperX Cloud Flight Wireless Headset.

HyperX Cloud Flight Battery Monitoring Introduction Simple tray application which shows battery level for HyperX Cloud Flight Wireless Headset. Screen

Stefan Kondinski 18 Dec 27, 2022