mirror of https://github.com/aya-rs/aya
WIP
parent
ace50a295d
commit
f5901900cb
@ -0,0 +1,90 @@
|
||||
use root/prepare::checkout
|
||||
use root/prepare::setupToolchain
|
||||
use root/prepare::prepareRust
|
||||
|
||||
treatment buildTestAyaForArch[logger: Logger, github_contexts: JavaScriptEngine, finish_concentrator: Concentrator](rust_target: string, repository_clone_url: string, repository_clone_ref: string)
|
||||
input trigger: Block<void>
|
||||
output finished: Block<void>
|
||||
{
|
||||
concentrateFinish: concentrateBlock<void>[concentrator=finish_concentrator]()
|
||||
run.finished -> concentrateFinish.data
|
||||
|
||||
checkout[logger=logger](
|
||||
label=|format("checkout ({rust_target})", |entry("rust_target", rust_target)),
|
||||
repository_clone_url=repository_clone_url,
|
||||
repository_clone_ref=repository_clone_ref,
|
||||
clone_directory=|format("/tmp/work_{rust_target}", |entry("rust_target", rust_target))
|
||||
)
|
||||
setupToolchain[logger=logger](rust_target=rust_target)
|
||||
prepareRust[logger=logger](rust_target=rust_target)
|
||||
|
||||
rustReady: waitBlock<void>()
|
||||
projectReady: waitBlock<void>()
|
||||
Self.trigger -> prepareRust.trigger,success ----> rustReady.a
|
||||
Self.trigger -> setupToolchain.trigger,success -> rustReady.b,awaited -> projectReady.a
|
||||
Self.trigger -> checkout.trigger,success ------------------------------> projectReady.b,awaited -> run.trigger
|
||||
|
||||
run: localStep[logger=logger](
|
||||
name = |format("run ({rust_target})", |entry("rust_target", rust_target)),
|
||||
variables = |wrap<StringMap>(
|
||||
|map([
|
||||
|entry("RUST_BACKTRACE", "full"),
|
||||
|entry("CARGO_BUILD_TARGET", rust_target)
|
||||
])
|
||||
),
|
||||
commands = [
|
||||
// Build
|
||||
|command("bash", ["-c", "
|
||||
set -o allexport && source /tmp/${CARGO_BUILD_TARGET}/github.env && set +o allexport
|
||||
cargo hack build --all-targets --feature-powerset \\
|
||||
--exclude aya-ebpf \\
|
||||
--exclude aya-ebpf-bindings \\
|
||||
--exclude aya-log-ebpf \\
|
||||
--exclude integration-ebpf \\
|
||||
--exclude xtask \\
|
||||
--workspace
|
||||
"]),
|
||||
// Test
|
||||
|command("bash", ["-c", "
|
||||
set -o allexport && source /tmp/${CARGO_BUILD_TARGET}/github.env && set +o allexport
|
||||
cargo hack test --all-targets --feature-powerset \\
|
||||
--exclude aya-ebpf \\
|
||||
--exclude aya-ebpf-bindings \\
|
||||
--exclude aya-log-ebpf \\
|
||||
--exclude integration-ebpf \\
|
||||
--exclude integration-test \\
|
||||
--exclude xtask \\
|
||||
--workspace
|
||||
"]),
|
||||
// Doc
|
||||
|command("bash", ["-c", "
|
||||
set -o allexport && source /tmp/${CARGO_BUILD_TARGET}/github.env && set +o allexport
|
||||
cargo hack test --doc --feature-powerset \\
|
||||
--exclude aya-ebpf \\
|
||||
--exclude aya-ebpf-bindings \\
|
||||
--exclude aya-log-ebpf \\
|
||||
--exclude integration-ebpf \\
|
||||
--exclude integration-test \\
|
||||
--exclude xtask \\
|
||||
--workspace
|
||||
"])
|
||||
],
|
||||
|
||||
)
|
||||
|
||||
prepare.awaited -> build.trigger,finished -> Self.finished
|
||||
|
||||
pendingState: postGithubStateContext[contexts=github_contexts, logger=logger](state = |pending(), name = rust_target, description = "Build and Test Aya on arch", log_response = true)
|
||||
successState: postGithubStateContext[contexts=github_contexts, logger=logger](state = |success(), name = rust_target, description = "Build and Test Aya on arch", log_response = true)
|
||||
errorState: postGithubStateContext[contexts=github_contexts, logger=logger](state = |error(), name = rust_target, description = "Build and Test Aya on arch", log_response = true)
|
||||
failureState: postGithubStateContext[contexts=github_contexts, logger=logger](state = |failure(), name = rust_target, description = "Build and Test Aya on arch", log_response = true)
|
||||
|
||||
Self.trigger --> pendingState.trigger
|
||||
run.success ---> successState.trigger
|
||||
run.error -----> errorState.trigger
|
||||
|
||||
uncheckSuccess: uncheck<void>()
|
||||
oneFailure: one<void>()
|
||||
run.success -> uncheckSuccess.value,uncheck -> oneFailure.a
|
||||
run.failed ----------------------------------> oneFailure.b,value -> failureState.trigger
|
||||
}
|
||||
@ -0,0 +1,77 @@
|
||||
use cicd/naive::localStep
|
||||
use log/logger::Logger
|
||||
use process/command::|raw_commands
|
||||
use std/data/string_map::StringMap
|
||||
use std/data/string_map::|entry
|
||||
use std/data/string_map::|map
|
||||
use std/text/compose::|format
|
||||
|
||||
treatment checkout[logger: Logger](label: string, repository_clone_url: string, repository_clone_ref: string, clone_directory: string)
|
||||
input trigger: Block<void>
|
||||
output success: Block<void>
|
||||
output finished: Block<void>
|
||||
output error: Block<void>
|
||||
{
|
||||
localStep[logger=logger](
|
||||
name = label,
|
||||
commands = |raw_commands([
|
||||
"git config --global url.https://.insteadOf git://",
|
||||
|format("git clone --branch {repository_clone_ref} --depth 1 {repository_clone_url} {clone_directory}",
|
||||
|map([
|
||||
|entry("repository_clone_ref", repository_clone_ref),
|
||||
|entry("repository_clone_url", repository_clone_url),
|
||||
|entry("clone_directory", clone_directory)
|
||||
])
|
||||
)
|
||||
])
|
||||
)
|
||||
Self.trigger -> localStep.trigger,success -> Self.success
|
||||
localStep.finished --------> Self.finished
|
||||
localStep.error -----------> Self.error
|
||||
}
|
||||
|
||||
treatment setupToolchain[logger: Logger](rust_target: string)
|
||||
input trigger: Block<void>
|
||||
output success: Block<void>
|
||||
output finished: Block<void>
|
||||
output error: Block<void>
|
||||
{
|
||||
prepareSystem: localStep[logger=logger](
|
||||
name = |format("setupToolchain ({rust_target})", |entry("rust_target", rust_target)),
|
||||
commands = |raw_commands([
|
||||
|format("mkdir /tmp/{rust_target}", |entry("rust_target", rust_target)),
|
||||
|format("touch /tmp/{rust_target}/github.env", |entry("rust_target", rust_target)),
|
||||
${bash -c "curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/taiki-e/setup-cross-toolchain-action/refs/tags/v1/main.sh | bash -"}/*,
|
||||
|format("cat /tmp/{rust_target}/github.env", |entry("rust_target", rust_target))
|
||||
]),
|
||||
variables = |wrap<StringMap>(
|
||||
|map([
|
||||
|entry("INPUT_TARGET", rust_target),
|
||||
|entry("GITHUB_ENV", |format("cat /tmp/{rust_target}/github.env", |entry("rust_target", short_rust_arch)))
|
||||
])
|
||||
)
|
||||
)
|
||||
Self.trigger -> prepareSystem.trigger,success -> Self.success
|
||||
prepareSystem.finished --------> Self.finished
|
||||
prepareSystem.error -----------> Self.error
|
||||
}
|
||||
|
||||
treatment prepareRust[logger: Logger](rust_target: string)
|
||||
input trigger: Block<void>
|
||||
output success: Block<void>
|
||||
output finished: Block<void>
|
||||
output error: Block<void>
|
||||
{
|
||||
|
||||
localStep[logger=logger](
|
||||
name = |format("prepareRust ({arch})", |entry("arch", rust_target)),
|
||||
commands = |raw_commands([
|
||||
|format("rustup target add {arch}", |entry("arch", rust_target)),
|
||||
${bash -c "curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash -"},
|
||||
"cargo binstall cargo-hack"
|
||||
])
|
||||
)
|
||||
Self.trigger -> localStep.trigger,success -> Self.success
|
||||
localStep.finished --------> Self.finished
|
||||
localStep.error -----------> Self.error
|
||||
}
|
||||
Loading…
Reference in New Issue