From 2ec6ffdb566db1791f9550eacfe052830d24444f Mon Sep 17 00:00:00 2001 From: kjuulh Date: Sat, 6 Apr 2024 23:22:37 +0200 Subject: [PATCH] feat: add plan Signed-off-by: kjuulh --- .drone.yml | 150 ++ .gitignore | 2 + Cargo.lock | 2103 ++++++++++++++++++++++++++ Cargo.toml | 12 + README.md | 1 + ci/Cargo.toml | 14 + ci/src/main.rs | 48 + crates/cuddle-empty-plan/.gitignore | 1 + crates/cuddle-empty-plan/Cargo.toml | 15 + crates/cuddle-empty-plan/src/main.rs | 34 + cuddle.yaml | 7 + renovate.json | 3 + templates/cuddle-empty-plan.yaml | 137 ++ 13 files changed, 2527 insertions(+) create mode 100644 .drone.yml create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 README.md create mode 100644 ci/Cargo.toml create mode 100644 ci/src/main.rs create mode 100644 crates/cuddle-empty-plan/.gitignore create mode 100644 crates/cuddle-empty-plan/Cargo.toml create mode 100644 crates/cuddle-empty-plan/src/main.rs create mode 100644 cuddle.yaml create mode 100644 renovate.json create mode 100644 templates/cuddle-empty-plan.yaml diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..3ae53df --- /dev/null +++ b/.drone.yml @@ -0,0 +1,150 @@ +kind: pipeline +name: default +type: docker + +steps: + - name: build ci + image: rustlang/rust:nightly + volumes: + - name: ci + path: /mnt/ci + environment: + PKG_CONFIG_SYSROOT_DIR: "/" + CI_PREFIX: "/mnt/ci" + commands: + - set -e + - apt update + - apt install musl-tools pkg-config libssl-dev openssl build-essential musl-dev -y + - rustup target add x86_64-unknown-linux-musl + - cargo build --target=x86_64-unknown-linux-musl -p ci --bin ci + - mv target/x86_64-unknown-linux-musl/debug/ci "$CI_PREFIX/ci" + + - name: load_secret + image: debian:buster-slim + volumes: + - name: ssh + path: /root/.ssh/ + environment: + SSH_KEY: + from_secret: gitea_id_ed25519 + commands: + - mkdir -p $HOME/.ssh/ + - echo "$SSH_KEY" | base64 -d > $HOME/.ssh/id_ed25519 + - chmod -R 600 ~/.ssh + - | + cat >$HOME/.ssh/config < eyre::Result<()> { + let client = dagger_sdk::connect().await?; + + let service = &RustService::from(client.clone()) + .with_arch(Architecture::Amd64) + .with_os(Os::Linux) + .with_apt(&[ + "clang", + "libssl-dev", + "libz-dev", + "libgit2-dev", + "git", + "openssh-client", + ]) + .with_apt_release(&["git", "openssh-client"]) + .with_docker_cli() + .with_cuddle_cli() + .with_kubectl() + .with_apt_ca_certificates() + .with_workspace_crates() + .await + .with_mold("2.3.3") + .with_bin_name(BIN_NAME) + .with_deployment(false) + .with_dagger_bin("0.9.8") + .to_owned(); + + let drone_templater = &DroneTemplater::new(client, "templates/cuddle-empty-plan.yaml") + .with_variable("bin_name", BIN_NAME) + .to_owned(); + + CuddleCI::default() + .with_pull_request(service) + .with_main(service) + .with_main(drone_templater) + .execute(std::env::args()) + .await?; + + Ok(()) +} diff --git a/crates/cuddle-empty-plan/.gitignore b/crates/cuddle-empty-plan/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/crates/cuddle-empty-plan/.gitignore @@ -0,0 +1 @@ +/target diff --git a/crates/cuddle-empty-plan/Cargo.toml b/crates/cuddle-empty-plan/Cargo.toml new file mode 100644 index 0000000..4879d21 --- /dev/null +++ b/crates/cuddle-empty-plan/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "cuddle-empty-plan" +version = "0.1.0" +edition = "2021" + +[dependencies] +tokio.workspace = true + +dagger-sdk = "0.9.8" +eyre = { version = "0.6.12" } + +dagger-components = { git = "https://git.front.kjuulh.io/kjuulh/dagger-components", branch = "main" } +dagger-rust = { git = "https://git.front.kjuulh.io/kjuulh/dagger-components", branch = "main" } +cuddle-ci = { git = "https://git.front.kjuulh.io/kjuulh/dagger-components", branch = "main" } +async-trait = "0.1.79" diff --git a/crates/cuddle-empty-plan/src/main.rs b/crates/cuddle-empty-plan/src/main.rs new file mode 100644 index 0000000..0bc0a30 --- /dev/null +++ b/crates/cuddle-empty-plan/src/main.rs @@ -0,0 +1,34 @@ +use cuddle_ci::cuddle_file::CuddleFile; +use cuddle_ci::rust_service::architecture::{Architecture, Os}; +use cuddle_ci::rust_service::extensions::*; +use cuddle_ci::rust_service::RustService; +use cuddle_ci::{cuddle_please, CuddleCI}; + +#[tokio::main] +async fn main() -> eyre::Result<()> { + let client = dagger_sdk::connect().await?; + let cuddle_file = CuddleFile::from_cuddle_file().await?; + + let service = &RustService::from(client.clone()) + .with_arch(Architecture::Amd64) + .with_os(Os::Linux) + .with_apt(&["libssl-dev", "libz-dev", "libpq-dev", "protobuf-compiler"]) + .with_apt_release(&["libssl-dev", "libz-dev", "libpq-dev"]) + .with_cuddle_file(&cuddle_file) + .with_apt_ca_certificates() + .with_workspace_crates() + .await + .with_mold("2.3.3") + .to_owned(); + + let cuddle_please = &cuddle_please::CuddlePlease::new(client.clone()); + + CuddleCI::default() + .with_pull_request(service) + .with_main(service) + .with_main(cuddle_please) + .execute(std::env::args()) + .await?; + + Ok(()) +} diff --git a/cuddle.yaml b/cuddle.yaml new file mode 100644 index 0000000..d24d4d7 --- /dev/null +++ b/cuddle.yaml @@ -0,0 +1,7 @@ +# yaml-language-server: $schema=https://git.front.kjuulh.io/kjuulh/cuddle/raw/branch/main/schemas/base.json + +base: "git@git.front.kjuulh.io:kjuulh/cuddle-base.git" + +vars: + service: "cuddle-empty-plan" + registry: kasperhermansen diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..7190a60 --- /dev/null +++ b/renovate.json @@ -0,0 +1,3 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json" +} diff --git a/templates/cuddle-empty-plan.yaml b/templates/cuddle-empty-plan.yaml new file mode 100644 index 0000000..e12f2c7 --- /dev/null +++ b/templates/cuddle-empty-plan.yaml @@ -0,0 +1,137 @@ +kind: pipeline +name: cuddle-empty-plan +type: docker + +steps: + - name: load_secret + image: debian:buster-slim + volumes: + - name: ssh + path: /root/.ssh/ + environment: + SSH_KEY: + from_secret: gitea_id_ed25519 + commands: + - mkdir -p $HOME/.ssh/ + - echo "$SSH_KEY" | base64 -d > $HOME/.ssh/id_ed25519 + - chmod -R 600 ~/.ssh + - | + cat >$HOME/.ssh/config <