94 lines
2.0 KiB
Jsonnet
94 lines
2.0 KiB
Jsonnet
local image = std.extVar("image");
|
|
local app_name = std.extVar("app_name");
|
|
local target_arch = std.extVar("target_arch");
|
|
|
|
local flags = " --release --target=" + target_arch;
|
|
|
|
local volume(name, path) = {
|
|
name: name,
|
|
path: path,
|
|
};
|
|
|
|
local volumes = [
|
|
volume("cargo", "/usr/local/cargo"),
|
|
volume("target", "/cache/target"),
|
|
volume("rustup", "/usr/local/rustup"),
|
|
];
|
|
|
|
local step(name, depends=[], commands=[], env={}) = {
|
|
name: name,
|
|
volumes: volumes,
|
|
image: image,
|
|
depends_on: depends,
|
|
commands: commands,
|
|
environment: env + {
|
|
CARGO_TARGET_DIR: "/cache/target",
|
|
APP_NAME: app_name,
|
|
},
|
|
};
|
|
|
|
local temp_volume(name) = {
|
|
name: name,
|
|
temp: {},
|
|
};
|
|
|
|
local host_volume(name, path) = {
|
|
name: name,
|
|
host: {
|
|
path: path,
|
|
},
|
|
};
|
|
|
|
{
|
|
kind: "pipeline",
|
|
type: "docker",
|
|
name: "default",
|
|
platform: {
|
|
"os": "linux",
|
|
"arch": "arm",
|
|
},
|
|
|
|
steps: [
|
|
step(
|
|
"validate",
|
|
commands=["cargo test" + flags],
|
|
),
|
|
step(
|
|
"test",
|
|
depends=["validate"],
|
|
commands=["cargo test" + flags],
|
|
),
|
|
step(
|
|
"build",
|
|
depends=["test"],
|
|
commands=["cargo build" + flags],
|
|
env={
|
|
GIT_REVISION: "${DRONE_COMMIT:0:8}",
|
|
GIT_BRANCH: "${DRONE_COMMIT_BRANCH}",
|
|
},
|
|
),
|
|
step(
|
|
"deploy",
|
|
depends=["build"],
|
|
commands=["sh scripts/deploy.sh"],
|
|
env={
|
|
TARGET_DIR: "/cache/target/" + target_arch + "/release",
|
|
SSH_PRIVATE_KEY: {"from_secret": "ssh_pk_base64"},
|
|
SSH_USER: {"from_secret": "SSH_USER"},
|
|
},
|
|
),
|
|
],
|
|
|
|
volumes: [
|
|
temp_volume("target"),
|
|
host_volume("cargo", "/home/pi/.cargo"),
|
|
host_volume("rustup", "/home/pi/.rustup"),
|
|
],
|
|
|
|
// BUG: thid does not add.
|
|
// environment: {
|
|
// CARGO_TARGET_DIR: "/cache/target/",
|
|
// APP_NAME: "deploytest",
|
|
// }
|
|
}
|