Add pre-commit and Woodpecker pipelines

This commit is contained in:
2026-10-23 22:29:01 +11:00
parent 0144546973
commit 7a6cb93fdb
6 changed files with 234 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-merge-conflict
- id: check-executables-have-shebangs
- id: mixed-line-ending
args: [--fix=lf]
- repo: https://github.com/AleksaC/hadolint-py
rev: v2.15.1
hooks:
- id: hadolint
files: Containerfile$
- repo: https://github.com/shellcheck-py/shellcheck-py
rev: v0.11.0.1
hooks:
- id: shellcheck
- repo: local
hooks:
- id: unit-tests
name: unit tests
entry: tests/test.sh
language: system
pass_filenames: false
files: ^(agent-sandbox|allowed-hosts|tests/)
+42
View File
@@ -0,0 +1,42 @@
when:
- event: pull_request
steps:
- name: agent-sandbox
image: "artifactapi.k8s.syd1.au.unkin.net/docker-internal/plugin-docker-buildx:latest"
settings:
registry: artifactapi.k8s.syd1.au.unkin.net
repo: "artifactapi.k8s.syd1.au.unkin.net/docker-internal/agent-sandbox"
dockerfile: Containerfile
platforms: "linux/amd64"
dry_run: true
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 1Gi
cpu: 1
limits:
memory: 4Gi
cpu: 2
- name: agent-sandbox-router
image: "artifactapi.k8s.syd1.au.unkin.net/docker-internal/plugin-docker-buildx:latest"
settings:
registry: artifactapi.k8s.syd1.au.unkin.net
repo: "artifactapi.k8s.syd1.au.unkin.net/docker-internal/agent-sandbox-router"
context: router
dockerfile: router/Containerfile
platforms: "linux/amd64"
dry_run: true
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 1Gi
cpu: 1
limits:
memory: 4Gi
cpu: 2
+18
View File
@@ -0,0 +1,18 @@
when:
- event: pull_request
steps:
- name: lint
image: "git.unkin.net/unkin/almalinux9-gobuilder:20260606"
commands:
- make lint
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 512Mi
cpu: 1
limits:
memory: 2Gi
cpu: 2
+18
View File
@@ -0,0 +1,18 @@
when:
- event: pull_request
steps:
- name: pre-commit
image: "git.unkin.net/unkin/almalinux9-gobuilder:20260606"
commands:
- uvx pre-commit run --all-files
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 512Mi
cpu: 1
limits:
memory: 2Gi
cpu: 2
+107
View File
@@ -0,0 +1,107 @@
when:
- event: tag
ref: "refs/tags/v*"
steps:
- name: test
image: "git.unkin.net/unkin/almalinux9-base:20260606"
commands:
- tests/test.sh
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 512Mi
cpu: 1
limits:
memory: 2Gi
cpu: 2
- name: agent-sandbox
image: "artifactapi.k8s.syd1.au.unkin.net/docker-internal/plugin-docker-buildx:latest"
settings:
registry: artifactapi.k8s.syd1.au.unkin.net
repo: "artifactapi.k8s.syd1.au.unkin.net/docker-internal/agent-sandbox"
dockerfile: Containerfile
platforms: "linux/amd64"
tags:
- "${CI_COMMIT_TAG}"
depends_on: [test]
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 1Gi
cpu: 1
limits:
memory: 4Gi
cpu: 2
- name: agent-sandbox-router
image: "artifactapi.k8s.syd1.au.unkin.net/docker-internal/plugin-docker-buildx:latest"
settings:
registry: artifactapi.k8s.syd1.au.unkin.net
repo: "artifactapi.k8s.syd1.au.unkin.net/docker-internal/agent-sandbox-router"
context: router
dockerfile: router/Containerfile
platforms: "linux/amd64"
tags:
- "${CI_COMMIT_TAG}"
depends_on: [test]
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 1Gi
cpu: 1
limits:
memory: 4Gi
cpu: 2
# The packaged launcher pins the images pushed above.
- name: package
image: "git.unkin.net/unkin/almalinux9-rpmbuilder:latest"
commands:
- "./scripts/build-rpm.sh ${CI_COMMIT_TAG}"
depends_on: [agent-sandbox, agent-sandbox-router]
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 512Mi
cpu: 1
limits:
memory: 2Gi
cpu: 2
- name: upload-rpm
image: "git.unkin.net/unkin/almalinux9-base:20260606"
commands:
- |
HOST="https://artifactapi.k8s.syd1.au.unkin.net"
REPO="rpm-internal"
for rpm in dist/*.rpm; do
FILE=$$(basename "$$rpm")
code=$$(curl -s -o /dev/null -w '%{http_code}' "$$HOST/api/v2/remotes/$$REPO/files/Packages/$$FILE" || true)
if [ "$$code" = "200" ]; then
echo "$$FILE already exists in $$REPO; skipping upload"
continue
fi
curl -f -X PUT "$$HOST/api/v2/remotes/$$REPO/files/$$FILE" \
-H "Content-Type: application/x-rpm" --data-binary @"$$rpm"
done
depends_on: [package]
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 512Mi
cpu: 1
limits:
memory: 2Gi
cpu: 2
+18
View File
@@ -0,0 +1,18 @@
when:
- event: pull_request
steps:
- name: test
image: "git.unkin.net/unkin/almalinux9-base:20260606"
commands:
- tests/test.sh
backend_options:
kubernetes:
serviceAccountName: default
resources:
requests:
memory: 512Mi
cpu: 1
limits:
memory: 2Gi
cpu: 2