4个版本 (2个重大变更)
0.3.0 | 2022年2月14日 |
---|---|
0.2.1 | 2021年2月15日 |
0.2.0 | 2020年6月10日 |
0.1.0 | 2019年3月17日 |
#95 in #org
130KB
205 代码行
concourse-resource-rs
主分支的API文档发布在此处。链接.
根据https://concourse-ci.org/implementing-resource-types.html在Rust中创建Concourse资源。
示例
更多示例请参阅示例.
包含的多阶段Dockerfile展示了如何构建一个最小化的Docker镜像以部署Concourse资源。要运行它
docker build --build-arg EXAMPLE=hello_world .
简单的hello world
use std::{fs::File, io::Write, path::Path};
use serde::{Deserialize, Serialize};
use concourse_resource::*;
struct HelloWorld {}
#[derive(Serialize, Deserialize)]
struct Version {
ver: String,
}
impl Resource for HelloWorld {
type Version = Version;
type Source = concourse_resource::Empty;
type InParams = concourse_resource::Empty;
type InMetadata = concourse_resource::Empty;
type OutParams = concourse_resource::Empty;
type OutMetadata = concourse_resource::Empty;
fn resource_check(_: Option<Self::Source>, _: Option<Self::Version>) -> Vec<Self::Version> {
vec![Self::Version {
ver: String::from("static"),
}]
}
fn resource_in(
_source: Option<Self::Source>,
_version: Self::Version,
_params: Option<Self::InParams>,
output_path: &str,
) -> Result<InOutput<Self::Version, Self::InMetadata>, Box<dyn std::error::Error>> {
let mut path = Path::new(output_path).to_path_buf();
path.push("hello_world.txt");
let mut file = File::create(path)?;
file.write_all(b"hello, world!")?;
Ok(InOutput {
version: Self::Version {
ver: String::from("static"),
},
metadata: None,
})
}
fn resource_out(
_: Option<Self::Source>,
_: Option<Self::OutParams>,
_: &str,
) -> OutOutput<Self::Version, Self::OutMetadata> {
unimplemented!()
}
}
create_resource!(HelloWorld);
依赖项
~0.7–1.6MB
~35K SLoC