support key-val hosts

This commit is contained in:
Daylin Morgan 2024-11-19 14:35:29 -06:00
parent 70eb5db75a
commit 5e29472b29
Signed by: daylin
GPG key ID: 950D13E9719334AD
6 changed files with 33 additions and 14 deletions

View file

@ -41,7 +41,7 @@ jobs:
- uses: ./.github/actions/nix - uses: ./.github/actions/nix
with: with:
attic_token: ${{ secrets.ATTIC_TOKEN }} attic_token: ${{ secrets.ATTIC_TOKEN }}
clean: true # clean: true
btrfs: true btrfs: true
- name: write lock file - name: write lock file

View file

@ -2,6 +2,13 @@ name: Flake Update / Build
on: on:
workflow_dispatch: workflow_dispatch:
inputs:
hosts:
description: 'list of hosts to build'
required: true
default: 'othalan,algiz'
type: string
schedule: schedule:
# At minute 00:00 on Monday, Wednesday, and Friday. # At minute 00:00 on Monday, Wednesday, and Friday.
- cron: 0 0 * * 1,3,5 - cron: 0 0 * * 1,3,5
@ -51,7 +58,7 @@ jobs:
nix run . nix run .
-- --
cache cache
--host,=",othalan,algiz" --host,="${{ inputs.hosts }}"
--flake . --flake .
--debug --debug
-- --
@ -94,7 +101,7 @@ jobs:
nix run . nix run .
-- --
ci update ci update
--host,=othalan,algiz,mannaz,naudiz --host,="${{ inputs.hosts }}"
--flake . --flake .
--debug --debug
-- --
@ -102,7 +109,8 @@ jobs:
- run: | - run: |
echo "# system diffs" >> $GITHUB_STEP_SUMMARY echo "# system diffs" >> $GITHUB_STEP_SUMMARY
for host in othalan algiz mannaz naudiz; do hosts="${{ inputs.hosts }}"
for host in ${hosts//,/ }; do
echo "## $host" >> $GITHUB_STEP_SUMMARY echo "## $host" >> $GITHUB_STEP_SUMMARY
nix run "nixpkgs#nvd" -- --color always diff ./$host-current ./$host-updated >> $host-summary.md nix run "nixpkgs#nvd" -- --color always diff ./$host-current ./$host-updated >> $host-summary.md
printf '```\n%s\n```\n' "$(nix run "nixpkgs#nvd" -- diff ./$host-current ./$host-updated)" >> $GITHUB_STEP_SUMMARY printf '```\n%s\n```\n' "$(nix run "nixpkgs#nvd" -- diff ./$host-current ./$host-updated)" >> $GITHUB_STEP_SUMMARY

View file

@ -8,7 +8,7 @@ buildNimblePackage {
verions = "unstable"; verions = "unstable";
src = lib.cleanSource ./.; src = lib.cleanSource ./.;
nativeBuildInputs = [ openssl ]; nativeBuildInputs = [ openssl ];
nimbleDepsHash = "sha256-1YoGvWvoJJSMauDbeH8ZHuK+QQot48Mkye9TeWteT8k="; nimbleDepsHash = "sha256-IWdlWC+j2h15WjVXXdDyxDZsb0/Ti1+jy6RfmqHFkjs=";
meta = { meta = {
description = "nix begat oizys"; description = "nix begat oizys";

View file

@ -3,12 +3,12 @@
"packages": { "packages": {
"hwylterm": { "hwylterm": {
"version": "0.1.0", "version": "0.1.0",
"vcsRevision": "c5f70cec4e40ba396f59162e98c359a1a1ea4fe1", "vcsRevision": "ef573dc0f8bf39f80704f92cfab39e1b9af82492",
"url": "https://github.com/daylinmorgan/hwylterm", "url": "https://github.com/daylinmorgan/hwylterm",
"downloadMethod": "git", "downloadMethod": "git",
"dependencies": [], "dependencies": [],
"checksums": { "checksums": {
"sha1": "5727969a8e82e29a7581c13cc7cc45996dbca5a1" "sha1": "ccb51201898b5e913ffee1e18bdf4d9fc4004386"
} }
}, },
"jsony": { "jsony": {

View file

@ -1,5 +1,5 @@
## nix begat oizys ## nix begat oizys
import std/[os, osproc, sequtils, strformat, strutils] import std/[os, osproc, sequtils, strformat, strutils, tables]
import hwylterm, hwylterm/[hwylcli] import hwylterm, hwylterm/[hwylcli]
import oizys/[context, github, nix, logging] import oizys/[context, github, nix, logging]
@ -77,17 +77,27 @@ hwylCli:
ciUpdate(args) ciUpdate(args)
[gha] [gha]
... "trigger GHA" ... """
trigger GHA
examples:
[b]oizys gha update[/] --input:hosts:othalan,algiz,mannaz
"""
flags: flags:
# make a key/value input that is passed to workflows and encoded in json input:
# i.e. --input:ref:main T seq[KVString]
? "inputs for dispatch"
`ref`: `ref`:
T string T string
? "git ref/branch/tag to trigger workflow on" ? "git ref/branch/tag to trigger workflow on"
* "main" * "main"
run: run:
# TODO: support file operations like gh
# i.e. @flake.lock means read a file a flake.lock and use it's contents
if args.len == 0: fatalQuit "expected workflow file name" if args.len == 0: fatalQuit "expected workflow file name"
createDispatch(args[0], `ref`) let inputs =
input.mapIt((it.key, it.val)).toTable()
createDispatch(args[0], `ref`, inputs)
[dry] [dry]
... "dry run build" ... "dry run build"

View file

@ -100,13 +100,14 @@ proc getInProgressRun(
warn "timeout reached waiting for workflow to start" warn "timeout reached waiting for workflow to start"
proc createDispatch*(workflowFileName: string, `ref`: string) = proc createDispatch*(workflowFileName: string, `ref`: string, inputs: Table[string, string]) =
## https://docs.github.com/en/rest/actions/workflows?apiVersion=2022-11-28#create-a-workflow-dispatch-event ## https://docs.github.com/en/rest/actions/workflows?apiVersion=2022-11-28#create-a-workflow-dispatch-event
let workflow = let workflow =
if workflowFileName.endsWith(".yml") or workflowFileName.endsWith(".yaml"): workflowFileName if workflowFileName.endsWith(".yml") or workflowFileName.endsWith(".yaml"): workflowFileName
else: workflowFileName & ".yml" else: workflowFileName & ".yml"
let body = %*{"ref": `ref`} let body = %*{"ref": `ref`, "inputs": inputs}
info fmt"creating dispatch event for {workflow}" info fmt"creating dispatch event for {workflow}"
debug "with body: " & $body
postGhApi( postGhApi(
fmt"https://api.github.com/repos/daylinmorgan/oizys/actions/workflows/{workflow}/dispatches", fmt"https://api.github.com/repos/daylinmorgan/oizys/actions/workflows/{workflow}/dispatches",
body body