Compare commits
10 Commits
e403e22ba7
...
v0.1.3
| Author | SHA1 | Date | |
|---|---|---|---|
| 8290896f9d | |||
|
f51746c5df
|
|||
|
ca72d08cc1
|
|||
| 6a7ab1f9d5 | |||
|
f7e4a2d545
|
|||
|
7142ff0fa3
|
|||
| afcca9eb47 | |||
|
c76b0e6ade
|
|||
|
8e5e02d29d
|
|||
|
c15f1ae5c4
|
@@ -36,7 +36,7 @@ jobs:
|
||||
- name: release-plz release
|
||||
env:
|
||||
CARGO_REGISTRIES_INFRA_TOKEN: "Bearer ${{ secrets.RELEASE_PLZ_TOKEN }}"
|
||||
run: release-plz release --git-token "${{ secrets.RELEASE_PLZ_TOKEN }}" --forge gitea --dry-run
|
||||
run: release-plz release --git-token "${{ secrets.RELEASE_PLZ_TOKEN }}" --forge gitea
|
||||
|
||||
release-plz-pr:
|
||||
name: Release-plz PR
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
name: Release
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "v*"
|
||||
|
||||
jobs:
|
||||
archlinux:
|
||||
name: Arch Linux
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
packages: write
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
- name: Build package
|
||||
uses: https://git.huizinga.dev/infra/archlinux-package-action@v4
|
||||
with:
|
||||
path: .
|
||||
- name: Upload package
|
||||
run: |
|
||||
curl --user ${{ gitea.actor }}:${{ secrets.REGISTRY_TOKEN }} \
|
||||
--upload-file "$(ls | grep -E 'crete-[0-9]+\.[0-9]+\.[0-9]+-[0-9]+-.*.pkg.tar.zst')" \
|
||||
https://git.huizinga.dev/api/packages/infra/arch/core
|
||||
@@ -31,6 +31,7 @@ repos:
|
||||
rev: "1.0.0"
|
||||
hooks:
|
||||
- id: mdformat
|
||||
exclude: "^CHANGELOG.md$"
|
||||
|
||||
- repo: local
|
||||
hooks:
|
||||
|
||||
@@ -1 +1,63 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.1.3](https://git.huizinga.dev/infra/crete/compare/v0.1.2...v0.1.3) - 2026-04-21
|
||||
|
||||
### <!-- 0 -->Features
|
||||
|
||||
- Add function that applies netmask to ip
|
||||
|
||||
### <!-- 3 -->Refactor
|
||||
|
||||
- Use ViaDeserialize to convert ip address
|
||||
|
||||
## [0.1.2](https://git.huizinga.dev/infra/crete/compare/v0.1.1...v0.1.2) - 2026-04-17
|
||||
|
||||
### <!-- 0 -->Features
|
||||
|
||||
- Make dns optional
|
||||
- Allow more than two dns entries
|
||||
|
||||
## [0.1.1](https://git.huizinga.dev/infra/crete/compare/v0.1.0...v0.1.1) - 2026-04-13
|
||||
|
||||
### <!-- 2 -->Bug Fixes
|
||||
|
||||
- No default value for advertise routes
|
||||
|
||||
## [0.1.0](https://git.huizinga.dev/infra/crete/releases/tag/v0.1.0) - 2026-04-07
|
||||
|
||||
### <!-- 0 -->Features
|
||||
|
||||
- _(package)_ Added PKGBUILD
|
||||
- Set user agent
|
||||
- _(performance)_ Disable request features to reduce binary size
|
||||
- Generate talos configs
|
||||
- Show error if no clusters are found in repo
|
||||
- Initial rewrite of python render tool
|
||||
|
||||
### <!-- 3 -->Refactor
|
||||
|
||||
- Big internal refactor
|
||||
|
||||
### <!-- 4 -->Testing
|
||||
|
||||
- Disable building tests
|
||||
|
||||
### <!-- 5 -->Miscellaneous Tasks
|
||||
|
||||
- _(actions)_ Publish Arch Linux package
|
||||
- _(license)_ Add GPL license
|
||||
- _(actions)_ Name steps
|
||||
- _(actions)_ Renamed release-plz workflow file
|
||||
- _(actions)_ Use committed to check pr commits
|
||||
- _(actions)_ Cancel in-progress ci runs when pushing to pr
|
||||
- _(docs)_ Added README
|
||||
- _(actions)_ Setup workflows
|
||||
- Publish to gitea registry
|
||||
- _(pre-commit)_ Update pre commit config
|
||||
|
||||
Generated
+1
-1
@@ -214,7 +214,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "crete"
|
||||
version = "0.1.0"
|
||||
version = "0.1.3"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"clap_complete",
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "crete"
|
||||
version = "0.1.0"
|
||||
version = "0.1.3"
|
||||
edition = "2024"
|
||||
default-run = "crete"
|
||||
publish = ["infra"]
|
||||
|
||||
@@ -5,6 +5,32 @@ and render jinja templates.
|
||||
|
||||
## Installation
|
||||
|
||||
### Arch
|
||||
|
||||
First import the verification key:
|
||||
|
||||
```bash
|
||||
wget https://git.huizinga.dev/api/packages/infra/arch/repository.key -O /tmp/repository.key
|
||||
sudo pacman-key --add /tmp/repository.key
|
||||
sudo pacman-key --lsign-key $(gpg --show-keys /tmp/repository.key | sed -n 2p)
|
||||
```
|
||||
|
||||
And add the following to `/etc/pacman.conf`:
|
||||
|
||||
```ini
|
||||
[infra]
|
||||
SigLevel = Required
|
||||
Server = https://git.huizinga.dev/api/packages/infra/arch/core/$arch
|
||||
```
|
||||
|
||||
You can then install `crete` by running:
|
||||
|
||||
```bash
|
||||
sudo pacman -Sy crete
|
||||
```
|
||||
|
||||
### Cargo install
|
||||
|
||||
Add the following to `~/.cargo.config.toml`:
|
||||
|
||||
```toml
|
||||
|
||||
@@ -140,12 +140,11 @@
|
||||
"array",
|
||||
"null"
|
||||
],
|
||||
"default": null,
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "ipv4"
|
||||
},
|
||||
"maxItems": 2,
|
||||
"minItems": 2
|
||||
}
|
||||
},
|
||||
"gateway": {
|
||||
"type": [
|
||||
|
||||
+2
-3
@@ -136,12 +136,11 @@
|
||||
"array",
|
||||
"null"
|
||||
],
|
||||
"default": null,
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "ipv4"
|
||||
},
|
||||
"maxItems": 2,
|
||||
"minItems": 2
|
||||
}
|
||||
},
|
||||
"gateway": {
|
||||
"type": [
|
||||
|
||||
+11
-5
@@ -1,8 +1,8 @@
|
||||
use std::net::Ipv4Addr;
|
||||
use std::ops::Deref;
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::str::FromStr;
|
||||
|
||||
use minijinja::value::ViaDeserialize;
|
||||
use minijinja::{AutoEscape, Environment, path_loader};
|
||||
use walkdir::WalkDir;
|
||||
|
||||
@@ -16,6 +16,13 @@ pub struct PathEnvironment<'a> {
|
||||
path: PathBuf,
|
||||
}
|
||||
|
||||
fn apply_netmask(
|
||||
ip: ViaDeserialize<Ipv4Addr>,
|
||||
netmask: ViaDeserialize<Ipv4Addr>,
|
||||
) -> Result<String, minijinja::Error> {
|
||||
Ok((*ip & *netmask).to_string())
|
||||
}
|
||||
|
||||
impl<'a> PathEnvironment<'a> {
|
||||
pub fn new(path: &Path) -> Self {
|
||||
let mut env = Environment::new();
|
||||
@@ -27,10 +34,7 @@ impl<'a> PathEnvironment<'a> {
|
||||
env.set_auto_escape_callback(|_| AutoEscape::None);
|
||||
|
||||
// Add filters
|
||||
env.add_filter("to_prefix", |netmask: String| {
|
||||
let netmask = Ipv4Addr::from_str(&netmask).map_err(|err| {
|
||||
minijinja::Error::new(minijinja::ErrorKind::InvalidOperation, err.to_string())
|
||||
})?;
|
||||
env.add_filter("to_prefix", |netmask: ViaDeserialize<Ipv4Addr>| {
|
||||
let mask = netmask.to_bits();
|
||||
let prefix = mask.leading_ones();
|
||||
|
||||
@@ -44,6 +48,8 @@ impl<'a> PathEnvironment<'a> {
|
||||
}
|
||||
});
|
||||
|
||||
env.add_function("apply_netmask", apply_netmask);
|
||||
|
||||
// Helper function for getting the path to kubeconfig files
|
||||
env.add_filter("kubeconfig", move |names: Vec<String>| {
|
||||
names
|
||||
|
||||
+9
-1
@@ -53,7 +53,8 @@ struct Network {
|
||||
ip: Ipv4Addr,
|
||||
netmask: Ipv4Addr,
|
||||
gateway: Ipv4Addr,
|
||||
dns: [Ipv4Addr; 2],
|
||||
#[serde(default)]
|
||||
dns: Option<Vec<Ipv4Addr>>,
|
||||
#[optional_rename(OptionalTailscale)]
|
||||
#[optional_wrap]
|
||||
tailscale: Tailscale,
|
||||
@@ -128,6 +129,13 @@ impl Node {
|
||||
// Sadly we have to this manually
|
||||
// TODO: Find a better way of doing this
|
||||
let default = OptionalNodeDeserialize {
|
||||
network: Some(OptionalNetwork {
|
||||
tailscale: Some(OptionalTailscale {
|
||||
advertise_routes: Some(false),
|
||||
..Default::default()
|
||||
}),
|
||||
..Default::default()
|
||||
}),
|
||||
patches: Some(OptionalPatches {
|
||||
all: Some(vec![]),
|
||||
control_plane: Some(vec![]),
|
||||
|
||||
Reference in New Issue
Block a user