Signed-off-by: kjuulh <contact@kjuulh.io>
This commit is contained in:
parent
90928d08ff
commit
c1d71df0e5
2372
Cargo.lock
generated
2372
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -9,6 +9,7 @@ tokio.workspace = true
|
|||||||
dagger-sdk = "0.9.8"
|
dagger-sdk = "0.9.8"
|
||||||
eyre = { version = "0.6.12" }
|
eyre = { version = "0.6.12" }
|
||||||
|
|
||||||
|
tracing.workspace = true
|
||||||
tracing-subscriber.workspace = true
|
tracing-subscriber.workspace = true
|
||||||
|
|
||||||
dagger-components = { git = "https://git.front.kjuulh.io/kjuulh/dagger-components", branch = "main" }
|
dagger-components = { git = "https://git.front.kjuulh.io/kjuulh/dagger-components", branch = "main" }
|
||||||
|
@ -1,10 +1,18 @@
|
|||||||
|
use std::collections::HashMap;
|
||||||
|
use std::path::PathBuf;
|
||||||
|
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use cuddle_ci::cuddle_file::CuddleFile;
|
use cuddle_ci::cuddle_file::{self, CuddleFile};
|
||||||
use cuddle_ci::cuddle_releaser::CuddleReleaser;
|
use cuddle_ci::cuddle_releaser::CuddleReleaser;
|
||||||
use cuddle_ci::rust_service::architecture::{Architecture, Os};
|
use cuddle_ci::rust_service::architecture::{Architecture, Os};
|
||||||
use cuddle_ci::rust_service::RustService;
|
use cuddle_ci::rust_service::RustService;
|
||||||
use cuddle_ci::rust_service::{extensions::*, RustServiceContext};
|
use cuddle_ci::rust_service::{extensions::*, RustServiceContext};
|
||||||
use cuddle_ci::{Context, CuddleCI, MainAction, PullRequestAction};
|
use cuddle_ci::{Context, CuddleCI, MainAction, PullRequestAction};
|
||||||
|
use cuddle_clusters::catalog::cluster_vars::ClusterVars;
|
||||||
|
use cuddle_clusters::catalog::cuddle_vars::CuddleVars;
|
||||||
|
use cuddle_clusters::catalog::vault_secret::VaultSecret;
|
||||||
|
use cuddle_clusters::releaser::Releaser;
|
||||||
|
use cuddle_clusters::IntoComponent;
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() -> eyre::Result<()> {
|
async fn main() -> eyre::Result<()> {
|
||||||
@ -25,12 +33,15 @@ async fn main() -> eyre::Result<()> {
|
|||||||
.with_mold("2.3.3")
|
.with_mold("2.3.3")
|
||||||
.to_owned();
|
.to_owned();
|
||||||
|
|
||||||
let render = &RustServiceRender::default();
|
let render = &RustServiceRender {
|
||||||
|
service: cuddle_file.vars.service,
|
||||||
|
registry: "http://localhost:7900".into(),
|
||||||
|
};
|
||||||
let deployment = &CuddleReleaser::new(client).await?;
|
let deployment = &CuddleReleaser::new(client).await?;
|
||||||
|
|
||||||
CuddleCI::default()
|
CuddleCI::default()
|
||||||
.with_pull_request(service)
|
.with_pull_request(service)
|
||||||
//.with_pull_request(render.clone())
|
.with_pull_request(render)
|
||||||
//.with_pull_request(deployment.clone())
|
//.with_pull_request(deployment.clone())
|
||||||
.with_main(service)
|
.with_main(service)
|
||||||
.with_main(render)
|
.with_main(render)
|
||||||
@ -42,13 +53,43 @@ async fn main() -> eyre::Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Default, Clone)]
|
#[derive(Default, Clone)]
|
||||||
struct RustServiceRender {}
|
struct RustServiceRender {
|
||||||
|
service: String,
|
||||||
|
registry: String,
|
||||||
|
}
|
||||||
|
|
||||||
impl RustServiceRender {
|
impl RustServiceRender {
|
||||||
async fn render_templates(&self) -> eyre::Result<()> {
|
async fn render_templates(&self, image_tag: &str) -> eyre::Result<()> {
|
||||||
cuddle_clusters::process()
|
let mut releaser = Releaser::default();
|
||||||
.await
|
|
||||||
.map_err(|e| eyre::anyhow!("failed to process templates: {}", e.to_string()))?;
|
releaser
|
||||||
|
.with_service(&self.service)
|
||||||
|
.with_registry(&self.registry);
|
||||||
|
|
||||||
|
match cuddle_clusters::process_opts(
|
||||||
|
vec![
|
||||||
|
CuddleVars::new(&std::env::current_dir()?)
|
||||||
|
.await
|
||||||
|
.map_err(|e| eyre::anyhow!("failed to get cuddle vars: {}", e.to_string()))?
|
||||||
|
.into_component(),
|
||||||
|
ClusterVars::default().into_component(),
|
||||||
|
VaultSecret::default().into_component(),
|
||||||
|
],
|
||||||
|
cuddle_clusters::process::ProcessOpts {
|
||||||
|
path: std::env::current_dir()?,
|
||||||
|
output: PathBuf::from(".cuddle/tmp/cuddle-clusters"),
|
||||||
|
variables: HashMap::from([("image_tag".into(), image_tag.into())]),
|
||||||
|
},
|
||||||
|
Some(releaser),
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
.map_err(|e| eyre::anyhow!("failed to process templates: {}", e.to_string()))
|
||||||
|
{
|
||||||
|
Ok(_) => {}
|
||||||
|
Err(e) => {
|
||||||
|
tracing::error!("failed to process templates: {}", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
@ -57,12 +98,12 @@ impl RustServiceRender {
|
|||||||
#[async_trait]
|
#[async_trait]
|
||||||
impl MainAction for RustServiceRender {
|
impl MainAction for RustServiceRender {
|
||||||
async fn execute_main(&self, ctx: &mut Context) -> eyre::Result<()> {
|
async fn execute_main(&self, ctx: &mut Context) -> eyre::Result<()> {
|
||||||
self.render_templates().await?;
|
|
||||||
|
|
||||||
let image_tag = ctx
|
let image_tag = ctx
|
||||||
.get_image_tag()?
|
.get_image_tag()?
|
||||||
.ok_or(eyre::anyhow!("failed to find image_tag"))?;
|
.ok_or(eyre::anyhow!("failed to find image_tag"))?;
|
||||||
|
|
||||||
|
self.render_templates(&image_tag).await?;
|
||||||
|
|
||||||
cuddle_ci::cuddle_x::well_known::render(vec![
|
cuddle_ci::cuddle_x::well_known::render(vec![
|
||||||
"--cluster",
|
"--cluster",
|
||||||
"clank-prod",
|
"clank-prod",
|
||||||
@ -78,19 +119,11 @@ impl MainAction for RustServiceRender {
|
|||||||
#[async_trait]
|
#[async_trait]
|
||||||
impl PullRequestAction for RustServiceRender {
|
impl PullRequestAction for RustServiceRender {
|
||||||
async fn execute_pull_request(&self, ctx: &mut Context) -> eyre::Result<()> {
|
async fn execute_pull_request(&self, ctx: &mut Context) -> eyre::Result<()> {
|
||||||
self.render_templates().await?;
|
|
||||||
|
|
||||||
let image_tag = ctx
|
let image_tag = ctx
|
||||||
.get_image_tag()?
|
.get_image_tag()?
|
||||||
.ok_or(eyre::anyhow!("failed to find image_tag"))?;
|
.ok_or(eyre::anyhow!("failed to find image_tag"))?;
|
||||||
|
|
||||||
cuddle_ci::cuddle_x::well_known::render(vec![
|
self.render_templates(&image_tag).await?;
|
||||||
"--cluster",
|
|
||||||
"clank-prod",
|
|
||||||
"--image_tag",
|
|
||||||
&image_tag,
|
|
||||||
])
|
|
||||||
.await?;
|
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
0
cuddle-clusters/k8s/dev/configmap.yaml
Normal file
0
cuddle-clusters/k8s/dev/configmap.yaml
Normal file
@ -15,6 +15,9 @@ vars:
|
|||||||
secrets:
|
secrets:
|
||||||
something.else: something
|
something.else: something
|
||||||
|
|
||||||
|
cuddle/clusters:
|
||||||
|
dev:
|
||||||
|
|
||||||
scripts:
|
scripts:
|
||||||
render:
|
render:
|
||||||
type: shell
|
type: shell
|
||||||
|
11
templates/clusters/configmap.yaml.jinja2
Normal file
11
templates/clusters/configmap.yaml.jinja2
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: {{ vars.cuddle_vars.service }}-config
|
||||||
|
data:
|
||||||
|
{%- if (vars.cluster_vars.env | items | length) > 0 %}
|
||||||
|
environment:
|
||||||
|
{%- for (name, value) in vars.cluster_vars.env | dictsort %}
|
||||||
|
{{name | upper | replace(".", "_") | replace("-", "_") }}: {{value}}
|
||||||
|
{%- endfor %}
|
||||||
|
{%- endif %}
|
41
templates/clusters/deployment.yaml.jinja2
Normal file
41
templates/clusters/deployment.yaml.jinja2
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{%- set service_name = vars.cuddle_vars.service -%}
|
||||||
|
{%- set cluster_name = vars.cluster_vars.name -%}
|
||||||
|
{%- set cluster_namespace = vars.cluster_vars.namespace -%}
|
||||||
|
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: {{ service_name }}
|
||||||
|
cluster: {{ cluster_name }}
|
||||||
|
name: {{ service_name }}
|
||||||
|
namespace: {{ cluster_namespace }}
|
||||||
|
spec:
|
||||||
|
replicas: 3
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: {{ service_name }}
|
||||||
|
cluster: {{ cluster_name }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: {{ service_name }}
|
||||||
|
cluster: {{ cluster_name }}
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- args:
|
||||||
|
- serve
|
||||||
|
command:
|
||||||
|
- {{ service_name }}
|
||||||
|
image: kasperhermansen/{{ service_name }}:{{ vars.user_vars.image_tag }}
|
||||||
|
name: {{ service_name }}
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: {{service_name}}-config
|
||||||
|
ports:
|
||||||
|
- containerPort: 3000
|
||||||
|
name: external-http
|
||||||
|
- containerPort: 3001
|
||||||
|
name: internal-http
|
||||||
|
- containerPort: 3002
|
||||||
|
name: internal-grpc
|
Loading…
Reference in New Issue
Block a user