13 Commits

Author SHA1 Message Date
Chris Farhood c32546cbae Revert "chore: remove unused MCP server from API package"
CI / Type-check & lint (pull_request) Successful in 15s
CI / Build & push worker image (pull_request) Has been skipped
CI / Build & push API image (pull_request) Has been skipped
This reverts commit 36baf6cef6.
2026-05-19 10:26:31 +00:00
Chris Farhood 36baf6cef6 chore: remove unused MCP server from API package
CI / Type-check & lint (pull_request) Successful in 16s
CI / Build & push worker image (pull_request) Has been skipped
CI / Build & push API image (pull_request) Has been skipped
The MCP server was never wired into the API entry point — dead code.
The REST API + Paperclip skill provides sufficient surface area.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-19 10:25:25 +00:00
Chris Farhood c744738ee3 chore: rename helm chart from hightower to trebuchet
CI / Type-check & lint (pull_request) Successful in 16s
CI / Build & push worker image (pull_request) Has been skipped
CI / Build & push API image (pull_request) Has been skipped
- Rename charts/hightower → charts/trebuchet
- Update Chart.yaml name field to 'trebuchet'
- Rename all helm template helpers from 'hightower.*' to 'trebuchet.*'
- Update all template files to reference trebuchet helpers
- Update values.yaml credentials secret names to use trebuchet prefix
- Update helm-release.yml workflow to:
  - Monitor charts/trebuchet/** path instead of charts/hightower/**
  - Reference correct chart path in lint and package steps
  - Remove GitHub Pages publishing (incompatible with Gitea)

Ref: FAR-132

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-18 20:19:19 +00:00
Chris Farhood ccb3dc6f75 Merge pull request 'chore: move .github folder to .gitea for Gitea compatibility' (#1) from far-133/move-github-to-gitea into main
CI / Type-check & lint (push) Successful in 17s
CI / Build & push API image (push) Successful in 59s
CI / Build & push worker image (push) Successful in 3m16s
Reviewed-on: #1
Reviewed-by: Chris Farhood <3+cpfarhood@noreply.git.farh.net>
2026-05-18 20:10:48 +00:00
Chris Farhood ff32ec85c5 chore: move .github folder to .gitea for Gitea compatibility
CI / Type-check & lint (pull_request) Successful in 15s
CI / Build & push worker image (pull_request) Has been skipped
CI / Build & push API image (pull_request) Has been skipped
Gitea prefers .gitea/ISSUE_TEMPLATE/ and .gitea/workflows/ over the
GitHub-convention .github/ equivalents. Moves all issue templates and
workflow files to the Gitea-native paths and updates CLAUDE.md references.

Cosign certificate identity paths in release/rollback workflows are
intentionally left unchanged — they reference the signing identity from
prior workflow runs and will need a separate update when the CI signing
infrastructure migrates.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-18 15:56:05 +00:00
Chris Farhood 48c0351be3 ci: switch back to REGISTRY_TOKEN PAT for registry auth
CI / Type-check & lint (push) Successful in 15s
CI / Build & push API image (push) Successful in 1m2s
CI / Build & push worker image (push) Successful in 3m6s
Even on Gitea 1.26 the auto-token still hits the registry with 401
in this environment. Use the gitea-admin PAT stored as REGISTRY_TOKEN.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 21:09:46 -04:00
Chris Farhood 5c7e4d45d4 ci: revert to auto GITEA_TOKEN for registry auth
CI / Type-check & lint (push) Successful in 15s
CI / Build & push worker image (push) Failing after 8s
CI / Build & push API image (push) Failing after 8s
Gitea 1.26 (PR #36173) honors permissions.packages: write on the
auto-provided GITEA_TOKEN, so the PAT workaround is no longer needed.
You can delete the REGISTRY_TOKEN org secret.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 21:02:41 -04:00
Chris Farhood 8fe637e0e2 ci: pin registry login username to gitea-admin
CI / Type-check & lint (push) Successful in 15s
CI / Build & push worker image (push) Failing after 7s
CI / Build & push API image (push) Failing after 8s
REGISTRY_TOKEN was created under the gitea-admin user, so the
docker/helm registry username must match. Using github.actor
would fail for any other workflow-triggering user.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 20:40:28 -04:00
Chris Farhood f3d73c9160 ci: use REGISTRY_TOKEN PAT for container registry auth
CI / Type-check & lint (push) Successful in 52s
CI / Build & push worker image (push) Failing after 1m50s
CI / Build & push API image (push) Failing after 1m50s
The auto-provided GITEA_TOKEN doesn't grant write:package scope
in Gitea 1.25 even when permissions.packages: write is declared.
Switch registry logins to a dedicated PAT stored as REGISTRY_TOKEN.
Keep GITEA_TOKEN for semantic-release-gitea API calls.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 20:35:51 -04:00
Chris Farhood a6da45f6bf ci: trigger workflow re-run
CI / Type-check & lint (push) Successful in 1m8s
CI / Build & push worker image (push) Failing after 2m11s
CI / Build & push API image (push) Failing after 2m11s
2026-05-16 19:49:54 -04:00
Chris Farhood 547d8ae314 ci: trigger workflow re-run
CI / Build & push API image (push) Failing after 1m39s
CI / Type-check & lint (push) Successful in 1m10s
CI / Build & push worker image (push) Failing after 1m38s
2026-05-16 19:36:42 -04:00
Chris Farhood 1a874724c2 ci: trigger workflow re-run
CI / Type-check & lint (push) Successful in 1m12s
CI / Build & push API image (push) Failing after 2m15s
CI / Build & push worker image (push) Failing after 2m15s
2026-05-16 19:11:59 -04:00
Chris Farhood 262a8be326 ci: migrate from GitHub Actions to Gitea Actions
Helm Chart Release / Lint, package & push OCI (push) Failing after 12s
CI / Type-check & lint (push) Failing after 37s
CI / Build & push API image (push) Has been skipped
CI / Build & push worker image (push) Has been skipped
Move workflows to .gitea/workflows and adapt for git.farh.net:
- Push container images to git.farh.net instead of GHCR/Docker Hub
- Publish Helm chart as OCI artifact (no gh-pages, Gitea lacks Pages)
- Replace cosign keyless signing with key-based (COSIGN_PRIVATE_KEY/PASSWORD/PUBLIC_KEY)
- Swap @semantic-release/github for semantic-release-gitea
- Drop gh CLI from rollback workflow
- Use GITEA_TOKEN for registry auth and release creation
- Add Artifact Hub annotations to Chart.yaml
- Run on ubuntu-latest

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 18:55:32 -04:00
30 changed files with 278 additions and 254 deletions
@@ -16,7 +16,7 @@ concurrency:
jobs: jobs:
check: check:
name: Type-check & lint name: Type-check & lint
runs-on: runners-farhoodlabs runs-on: ubuntu-latest
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
@@ -43,7 +43,7 @@ jobs:
name: Build & push worker image name: Build & push worker image
needs: check needs: check
if: github.event_name == 'push' && github.ref == 'refs/heads/main' if: github.event_name == 'push' && github.ref == 'refs/heads/main'
runs-on: runners-farhoodlabs runs-on: ubuntu-latest
permissions: permissions:
contents: read contents: read
packages: write packages: write
@@ -55,12 +55,12 @@ jobs:
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0 uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
- name: Log in to GHCR - name: Log in to Gitea registry
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with: with:
registry: ghcr.io registry: git.farh.net
username: ${{ github.actor }} username: gitea-admin
password: ${{ secrets.GITHUB_TOKEN }} password: ${{ secrets.REGISTRY_TOKEN }}
- name: Build and push worker image - name: Build and push worker image
uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0 uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0
@@ -68,14 +68,14 @@ jobs:
context: . context: .
push: true push: true
tags: | tags: |
ghcr.io/farhoodlabs/trebuchet:latest git.farh.net/farhoodlabs/trebuchet:latest
ghcr.io/farhoodlabs/trebuchet:sha-${{ github.sha }} git.farh.net/farhoodlabs/trebuchet:sha-${{ github.sha }}
build-api: build-api:
name: Build & push API image name: Build & push API image
needs: check needs: check
if: github.event_name == 'push' && github.ref == 'refs/heads/main' if: github.event_name == 'push' && github.ref == 'refs/heads/main'
runs-on: runners-farhoodlabs runs-on: ubuntu-latest
permissions: permissions:
contents: read contents: read
packages: write packages: write
@@ -87,12 +87,12 @@ jobs:
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0 uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
- name: Log in to GHCR - name: Log in to Gitea registry
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with: with:
registry: ghcr.io registry: git.farh.net
username: ${{ github.actor }} username: gitea-admin
password: ${{ secrets.GITHUB_TOKEN }} password: ${{ secrets.REGISTRY_TOKEN }}
- name: Build and push API image - name: Build and push API image
uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0 uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0
@@ -102,5 +102,5 @@ jobs:
push: true push: true
no-cache: true no-cache: true
tags: | tags: |
ghcr.io/farhoodlabs/trebuchet-api:latest git.farh.net/farhoodlabs/trebuchet-api:latest
ghcr.io/farhoodlabs/trebuchet-api:sha-${{ github.sha }} git.farh.net/farhoodlabs/trebuchet-api:sha-${{ github.sha }}
+41
View File
@@ -0,0 +1,41 @@
name: Helm Chart Release
on:
push:
branches: [main]
paths:
- 'charts/trebuchet/**'
permissions:
contents: write
jobs:
release:
name: Lint, package & publish
runs-on: runners-farhoodlabs
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: Install Helm
uses: azure/setup-helm@b9e51907a09c216f16ebe8536097933489208112 # v4.3.0
- name: Lint chart
run: helm lint charts/trebuchet
- name: Package chart
run: |
mkdir -p .helm-packages
helm package charts/trebuchet -d .helm-packages
- name: Upload chart to Gitea releases
run: |
CHART_FILE=$(ls .helm-packages/*.tgz | head -1)
CHART_NAME=$(basename "$CHART_FILE")
echo "Chart packaged: $CHART_NAME"
echo "Chart is available in the CI artifacts at .helm-packages/$CHART_NAME"
echo "To use this chart, either:"
echo " - Download from CI artifacts"
echo " - Publish to a Helm registry (infrastructure repo or Gitea package registry)"
@@ -13,7 +13,7 @@ concurrency:
jobs: jobs:
preflight: preflight:
name: Preflight name: Preflight
runs-on: runners-farhoodlabs runs-on: ubuntu-latest
outputs: outputs:
version: ${{ steps.version.outputs.version }} version: ${{ steps.version.outputs.version }}
@@ -35,7 +35,6 @@ jobs:
if [[ -z "$LATEST" ]]; then if [[ -z "$LATEST" ]]; then
echo "version=1.0.0-beta.1" >> "$GITHUB_OUTPUT" echo "version=1.0.0-beta.1" >> "$GITHUB_OUTPUT"
else else
# Extract N from 1.0.0-beta.N and increment
N=$(echo "$LATEST" | grep -oE 'beta\.([0-9]+)' | grep -oE '[0-9]+') N=$(echo "$LATEST" | grep -oE 'beta\.([0-9]+)' | grep -oE '[0-9]+')
NEXT=$((N + 1)) NEXT=$((N + 1))
echo "version=1.0.0-beta.$NEXT" >> "$GITHUB_OUTPUT" echo "version=1.0.0-beta.$NEXT" >> "$GITHUB_OUTPUT"
@@ -47,9 +46,10 @@ jobs:
build-docker: build-docker:
name: Build Docker (worker) name: Build Docker (worker)
needs: preflight needs: preflight
runs-on: runners-farhoodlabs runs-on: ubuntu-latest
permissions: permissions:
contents: read contents: read
packages: write
steps: steps:
- name: Checkout - name: Checkout
@@ -58,11 +58,12 @@ jobs:
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0 uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
- name: Log in to Docker Hub - name: Log in to Gitea registry
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with: with:
username: ${{ secrets.DOCKERHUB_USERNAME }} registry: git.farh.net
password: ${{ secrets.DOCKERHUB_TOKEN }} username: gitea-admin
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Build and push worker image - name: Build and push worker image
uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0 uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0
@@ -71,14 +72,15 @@ jobs:
push: true push: true
provenance: mode=max provenance: mode=max
sbom: true sbom: true
tags: farhoodlabs/trebuchet:${{ needs.preflight.outputs.version }} tags: git.farh.net/farhoodlabs/trebuchet:${{ needs.preflight.outputs.version }}
build-docker-api: build-docker-api:
name: Build Docker (API) name: Build Docker (API)
needs: preflight needs: preflight
runs-on: runners-farhoodlabs runs-on: ubuntu-latest
permissions: permissions:
contents: read contents: read
packages: write
steps: steps:
- name: Checkout - name: Checkout
@@ -87,11 +89,12 @@ jobs:
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0 uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
- name: Log in to Docker Hub - name: Log in to Gitea registry
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with: with:
username: ${{ secrets.DOCKERHUB_USERNAME }} registry: git.farh.net
password: ${{ secrets.DOCKERHUB_TOKEN }} username: gitea-admin
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Build and push API image - name: Build and push API image
uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0 uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0
@@ -101,15 +104,15 @@ jobs:
push: true push: true
provenance: mode=max provenance: mode=max
sbom: true sbom: true
tags: farhoodlabs/trebuchet-api:${{ needs.preflight.outputs.version }} tags: git.farh.net/farhoodlabs/trebuchet-api:${{ needs.preflight.outputs.version }}
sign-docker: sign-docker:
name: Sign Docker images name: Sign Docker images
needs: [preflight, build-docker, build-docker-api] needs: [preflight, build-docker, build-docker-api]
runs-on: runners-farhoodlabs runs-on: ubuntu-latest
permissions: permissions:
contents: read contents: read
id-token: write packages: write
outputs: outputs:
worker_digest: ${{ steps.inspect-worker.outputs.digest }} worker_digest: ${{ steps.inspect-worker.outputs.digest }}
api_digest: ${{ steps.inspect-api.outputs.digest }} api_digest: ${{ steps.inspect-api.outputs.digest }}
@@ -118,57 +121,63 @@ jobs:
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0 uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
- name: Log in to Docker Hub - name: Log in to Gitea registry
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with: with:
username: ${{ secrets.DOCKERHUB_USERNAME }} registry: git.farh.net
password: ${{ secrets.DOCKERHUB_TOKEN }} username: gitea-admin
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Inspect worker image - name: Inspect worker image
id: inspect-worker id: inspect-worker
run: | run: |
docker buildx imagetools inspect "farhoodlabs/trebuchet:${{ needs.preflight.outputs.version }}" docker buildx imagetools inspect "git.farh.net/farhoodlabs/trebuchet:${{ needs.preflight.outputs.version }}"
DIGEST="sha256:$(docker buildx imagetools inspect --raw "farhoodlabs/trebuchet:${{ needs.preflight.outputs.version }}" | sha256sum | cut -d' ' -f1)" DIGEST="sha256:$(docker buildx imagetools inspect --raw "git.farh.net/farhoodlabs/trebuchet:${{ needs.preflight.outputs.version }}" | sha256sum | cut -d' ' -f1)"
echo "digest=$DIGEST" >> "$GITHUB_OUTPUT" echo "digest=$DIGEST" >> "$GITHUB_OUTPUT"
- name: Inspect API image - name: Inspect API image
id: inspect-api id: inspect-api
run: | run: |
docker buildx imagetools inspect "farhoodlabs/trebuchet-api:${{ needs.preflight.outputs.version }}" docker buildx imagetools inspect "git.farh.net/farhoodlabs/trebuchet-api:${{ needs.preflight.outputs.version }}"
DIGEST="sha256:$(docker buildx imagetools inspect --raw "farhoodlabs/trebuchet-api:${{ needs.preflight.outputs.version }}" | sha256sum | cut -d' ' -f1)" DIGEST="sha256:$(docker buildx imagetools inspect --raw "git.farh.net/farhoodlabs/trebuchet-api:${{ needs.preflight.outputs.version }}" | sha256sum | cut -d' ' -f1)"
echo "digest=$DIGEST" >> "$GITHUB_OUTPUT" echo "digest=$DIGEST" >> "$GITHUB_OUTPUT"
- name: Install cosign - name: Install cosign
uses: sigstore/cosign-installer@ba7bc0a3fef59531c69a25acd34668d6d3fe6f22 # v4.1.0 uses: sigstore/cosign-installer@ba7bc0a3fef59531c69a25acd34668d6d3fe6f22 # v4.1.0
- name: Sign worker image - name: Sign worker image
run: cosign sign --yes "farhoodlabs/trebuchet@${{ steps.inspect-worker.outputs.digest }}" env:
COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }}
COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }}
run: cosign sign --yes --key env://COSIGN_PRIVATE_KEY "git.farh.net/farhoodlabs/trebuchet@${{ steps.inspect-worker.outputs.digest }}"
- name: Sign API image - name: Sign API image
run: cosign sign --yes "farhoodlabs/trebuchet-api@${{ steps.inspect-api.outputs.digest }}" env:
COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }}
COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }}
run: cosign sign --yes --key env://COSIGN_PRIVATE_KEY "git.farh.net/farhoodlabs/trebuchet-api@${{ steps.inspect-api.outputs.digest }}"
- name: Verify worker image signature - name: Verify worker image signature
env:
COSIGN_PUBLIC_KEY: ${{ secrets.COSIGN_PUBLIC_KEY }}
run: | run: |
sleep 10 sleep 10
cosign verify \ cosign verify --key env://COSIGN_PUBLIC_KEY \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \ "git.farh.net/farhoodlabs/trebuchet@${{ steps.inspect-worker.outputs.digest }}"
--certificate-identity https://github.com/${{ github.repository }}/.github/workflows/release-beta.yml@${{ github.ref }} \
"farhoodlabs/trebuchet@${{ steps.inspect-worker.outputs.digest }}"
- name: Verify API image signature - name: Verify API image signature
env:
COSIGN_PUBLIC_KEY: ${{ secrets.COSIGN_PUBLIC_KEY }}
run: | run: |
cosign verify \ cosign verify --key env://COSIGN_PUBLIC_KEY \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \ "git.farh.net/farhoodlabs/trebuchet-api@${{ steps.inspect-api.outputs.digest }}"
--certificate-identity https://github.com/${{ github.repository }}/.github/workflows/release-beta.yml@${{ github.ref }} \
"farhoodlabs/trebuchet-api@${{ steps.inspect-api.outputs.digest }}"
publish-npm: publish-npm:
name: Publish npm (beta) name: Publish npm (beta)
needs: [preflight, sign-docker] needs: [preflight, sign-docker]
runs-on: runners-farhoodlabs runs-on: ubuntu-latest
permissions: permissions:
contents: read contents: read
id-token: write
steps: steps:
- name: Checkout - name: Checkout
@@ -13,7 +13,7 @@ concurrency:
jobs: jobs:
preflight: preflight:
name: Preflight name: Preflight
runs-on: runners-farhoodlabs runs-on: ubuntu-latest
permissions: permissions:
contents: write contents: write
outputs: outputs:
@@ -42,11 +42,12 @@ jobs:
id: probe id: probe
shell: bash shell: bash
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITEA_URL: https://git.farh.net
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
run: | run: |
set -euo pipefail set -euo pipefail
npx semantic-release@25 --dry-run --no-ci 2>&1 | tee semantic-release.log npx -p semantic-release@25 -p semantic-release-gitea semantic-release --dry-run --no-ci 2>&1 | tee semantic-release.log
if grep -qi "the next release version is" semantic-release.log; then if grep -qi "the next release version is" semantic-release.log; then
echo "should_release=true" >> "$GITHUB_OUTPUT" echo "should_release=true" >> "$GITHUB_OUTPUT"
@@ -60,9 +61,10 @@ jobs:
name: Build Docker (worker) name: Build Docker (worker)
needs: preflight needs: preflight
if: needs.preflight.outputs.should_release == 'true' if: needs.preflight.outputs.should_release == 'true'
runs-on: runners-farhoodlabs runs-on: ubuntu-latest
permissions: permissions:
contents: read contents: read
packages: write
steps: steps:
- name: Checkout - name: Checkout
@@ -71,11 +73,12 @@ jobs:
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0 uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
- name: Log in to Docker Hub - name: Log in to Gitea registry
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with: with:
username: ${{ secrets.DOCKERHUB_USERNAME }} registry: git.farh.net
password: ${{ secrets.DOCKERHUB_TOKEN }} username: gitea-admin
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Build and push worker image - name: Build and push worker image
uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0 uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0
@@ -85,16 +88,17 @@ jobs:
provenance: mode=max provenance: mode=max
sbom: true sbom: true
tags: | tags: |
farhoodlabs/trebuchet:${{ needs.preflight.outputs.version }} git.farh.net/farhoodlabs/trebuchet:${{ needs.preflight.outputs.version }}
farhoodlabs/trebuchet:latest git.farh.net/farhoodlabs/trebuchet:latest
build-docker-api: build-docker-api:
name: Build Docker (API) name: Build Docker (API)
needs: preflight needs: preflight
if: needs.preflight.outputs.should_release == 'true' if: needs.preflight.outputs.should_release == 'true'
runs-on: runners-farhoodlabs runs-on: ubuntu-latest
permissions: permissions:
contents: read contents: read
packages: write
steps: steps:
- name: Checkout - name: Checkout
@@ -103,11 +107,12 @@ jobs:
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0 uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
- name: Log in to Docker Hub - name: Log in to Gitea registry
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with: with:
username: ${{ secrets.DOCKERHUB_USERNAME }} registry: git.farh.net
password: ${{ secrets.DOCKERHUB_TOKEN }} username: gitea-admin
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Build and push API image - name: Build and push API image
uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0 uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0
@@ -118,16 +123,16 @@ jobs:
provenance: mode=max provenance: mode=max
sbom: true sbom: true
tags: | tags: |
farhoodlabs/trebuchet-api:${{ needs.preflight.outputs.version }} git.farh.net/farhoodlabs/trebuchet-api:${{ needs.preflight.outputs.version }}
farhoodlabs/trebuchet-api:latest git.farh.net/farhoodlabs/trebuchet-api:latest
sign-docker: sign-docker:
name: Sign Docker images name: Sign Docker images
needs: [preflight, build-docker, build-docker-api] needs: [preflight, build-docker, build-docker-api]
runs-on: runners-farhoodlabs runs-on: ubuntu-latest
permissions: permissions:
contents: read contents: read
id-token: write packages: write
outputs: outputs:
worker_digest: ${{ steps.inspect-worker.outputs.digest }} worker_digest: ${{ steps.inspect-worker.outputs.digest }}
api_digest: ${{ steps.inspect-api.outputs.digest }} api_digest: ${{ steps.inspect-api.outputs.digest }}
@@ -136,57 +141,63 @@ jobs:
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0 uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
- name: Log in to Docker Hub - name: Log in to Gitea registry
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with: with:
username: ${{ secrets.DOCKERHUB_USERNAME }} registry: git.farh.net
password: ${{ secrets.DOCKERHUB_TOKEN }} username: gitea-admin
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Inspect worker image - name: Inspect worker image
id: inspect-worker id: inspect-worker
run: | run: |
docker buildx imagetools inspect "farhoodlabs/trebuchet:${{ needs.preflight.outputs.version }}" docker buildx imagetools inspect "git.farh.net/farhoodlabs/trebuchet:${{ needs.preflight.outputs.version }}"
DIGEST="sha256:$(docker buildx imagetools inspect --raw "farhoodlabs/trebuchet:${{ needs.preflight.outputs.version }}" | sha256sum | cut -d' ' -f1)" DIGEST="sha256:$(docker buildx imagetools inspect --raw "git.farh.net/farhoodlabs/trebuchet:${{ needs.preflight.outputs.version }}" | sha256sum | cut -d' ' -f1)"
echo "digest=$DIGEST" >> "$GITHUB_OUTPUT" echo "digest=$DIGEST" >> "$GITHUB_OUTPUT"
- name: Inspect API image - name: Inspect API image
id: inspect-api id: inspect-api
run: | run: |
docker buildx imagetools inspect "farhoodlabs/trebuchet-api:${{ needs.preflight.outputs.version }}" docker buildx imagetools inspect "git.farh.net/farhoodlabs/trebuchet-api:${{ needs.preflight.outputs.version }}"
DIGEST="sha256:$(docker buildx imagetools inspect --raw "farhoodlabs/trebuchet-api:${{ needs.preflight.outputs.version }}" | sha256sum | cut -d' ' -f1)" DIGEST="sha256:$(docker buildx imagetools inspect --raw "git.farh.net/farhoodlabs/trebuchet-api:${{ needs.preflight.outputs.version }}" | sha256sum | cut -d' ' -f1)"
echo "digest=$DIGEST" >> "$GITHUB_OUTPUT" echo "digest=$DIGEST" >> "$GITHUB_OUTPUT"
- name: Install cosign - name: Install cosign
uses: sigstore/cosign-installer@ba7bc0a3fef59531c69a25acd34668d6d3fe6f22 # v4.1.0 uses: sigstore/cosign-installer@ba7bc0a3fef59531c69a25acd34668d6d3fe6f22 # v4.1.0
- name: Sign worker image - name: Sign worker image
run: cosign sign --yes "farhoodlabs/trebuchet@${{ steps.inspect-worker.outputs.digest }}" env:
COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }}
COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }}
run: cosign sign --yes --key env://COSIGN_PRIVATE_KEY "git.farh.net/farhoodlabs/trebuchet@${{ steps.inspect-worker.outputs.digest }}"
- name: Sign API image - name: Sign API image
run: cosign sign --yes "farhoodlabs/trebuchet-api@${{ steps.inspect-api.outputs.digest }}" env:
COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }}
COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }}
run: cosign sign --yes --key env://COSIGN_PRIVATE_KEY "git.farh.net/farhoodlabs/trebuchet-api@${{ steps.inspect-api.outputs.digest }}"
- name: Verify worker image signature - name: Verify worker image signature
env:
COSIGN_PUBLIC_KEY: ${{ secrets.COSIGN_PUBLIC_KEY }}
run: | run: |
sleep 10 sleep 10
cosign verify \ cosign verify --key env://COSIGN_PUBLIC_KEY \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \ "git.farh.net/farhoodlabs/trebuchet@${{ steps.inspect-worker.outputs.digest }}"
--certificate-identity https://github.com/${{ github.repository }}/.github/workflows/release.yml@${{ github.ref }} \
"farhoodlabs/trebuchet@${{ steps.inspect-worker.outputs.digest }}"
- name: Verify API image signature - name: Verify API image signature
env:
COSIGN_PUBLIC_KEY: ${{ secrets.COSIGN_PUBLIC_KEY }}
run: | run: |
cosign verify \ cosign verify --key env://COSIGN_PUBLIC_KEY \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \ "git.farh.net/farhoodlabs/trebuchet-api@${{ steps.inspect-api.outputs.digest }}"
--certificate-identity https://github.com/${{ github.repository }}/.github/workflows/release.yml@${{ github.ref }} \
"farhoodlabs/trebuchet-api@${{ steps.inspect-api.outputs.digest }}"
publish-npm: publish-npm:
name: Publish npm name: Publish npm
needs: [preflight, sign-docker] needs: [preflight, sign-docker]
runs-on: runners-farhoodlabs runs-on: ubuntu-latest
permissions: permissions:
contents: read contents: read
id-token: write
steps: steps:
- name: Checkout - name: Checkout
@@ -226,9 +237,9 @@ jobs:
fi fi
release: release:
name: Create GitHub release name: Create Gitea release
needs: [preflight, publish-npm] needs: [preflight, publish-npm]
runs-on: runners-farhoodlabs runs-on: ubuntu-latest
permissions: permissions:
contents: write contents: write
@@ -250,7 +261,8 @@ jobs:
- name: Install dependencies - name: Install dependencies
run: pnpm install --frozen-lockfile run: pnpm install --frozen-lockfile
- name: Create GitHub release - name: Create Gitea release
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITEA_URL: https://git.farh.net
run: npx semantic-release@25 GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
run: npx -p semantic-release@25 -p semantic-release-gitea semantic-release
@@ -18,7 +18,7 @@ concurrency:
jobs: jobs:
rollback: rollback:
name: Roll back npm beta dist-tag name: Roll back npm beta dist-tag
runs-on: runners-farhoodlabs runs-on: ubuntu-latest
steps: steps:
- name: Validate target version - name: Validate target version
id: target id: target
@@ -17,8 +17,8 @@ concurrency:
jobs: jobs:
rollback: rollback:
name: Roll back npm, Docker, and GitHub release latest name: Roll back npm and Docker latest
runs-on: runners-farhoodlabs runs-on: ubuntu-latest
steps: steps:
- name: Checkout tags - name: Checkout tags
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
@@ -74,48 +74,44 @@ jobs:
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0 uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
- name: Log in to Docker Hub - name: Log in to Gitea registry
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with: with:
username: ${{ secrets.DOCKERHUB_USERNAME }} registry: git.farh.net
password: ${{ secrets.DOCKERHUB_TOKEN }} username: gitea-admin
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Verify Docker image tag exists - name: Verify Docker image tag exists
run: docker buildx imagetools inspect "farhoodlabs/trebuchet:${{ steps.target.outputs.version }}" run: docker buildx imagetools inspect "git.farh.net/farhoodlabs/trebuchet:${{ steps.target.outputs.version }}"
- name: Install cosign - name: Install cosign
uses: sigstore/cosign-installer@ba7bc0a3fef59531c69a25acd34668d6d3fe6f22 # v4.1.0 uses: sigstore/cosign-installer@ba7bc0a3fef59531c69a25acd34668d6d3fe6f22 # v4.1.0
- name: Verify Docker image signature before rollback - name: Verify Docker image signature before rollback
env:
COSIGN_PUBLIC_KEY: ${{ secrets.COSIGN_PUBLIC_KEY }}
run: | run: |
cosign verify \ cosign verify --key env://COSIGN_PUBLIC_KEY \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \ "git.farh.net/farhoodlabs/trebuchet:${{ steps.target.outputs.version }}"
--certificate-identity "https://github.com/${{ github.repository }}/.github/workflows/release.yml@refs/heads/main" \
"farhoodlabs/trebuchet:${{ steps.target.outputs.version }}"
- name: Move Docker latest - name: Move Docker latest
run: | run: |
docker buildx imagetools create \ docker buildx imagetools create \
--tag "farhoodlabs/trebuchet:latest" \ --tag "git.farh.net/farhoodlabs/trebuchet:latest" \
"farhoodlabs/trebuchet:${{ steps.target.outputs.version }}" "git.farh.net/farhoodlabs/trebuchet:${{ steps.target.outputs.version }}"
- name: Move npm latest - name: Move npm latest
env: env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
run: npm dist-tag add "@trebuchet/cli@${{ steps.target.outputs.version }}" latest run: npm dist-tag add "@trebuchet/cli@${{ steps.target.outputs.version }}" latest
- name: Mark GitHub release as latest
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh release edit "v${{ steps.target.outputs.version }}" --latest
- name: Show final npm dist-tags - name: Show final npm dist-tags
env: env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
run: npm dist-tag ls @trebuchet/cli run: npm dist-tag ls @trebuchet/cli
- name: Verify Docker latest now points to target - name: Verify Docker latest now points to target
run: docker buildx imagetools inspect "farhoodlabs/trebuchet:latest" run: docker buildx imagetools inspect "git.farh.net/farhoodlabs/trebuchet:latest"
- name: Write summary - name: Write summary
run: | run: |
@@ -124,6 +120,9 @@ jobs:
echo "" echo ""
echo "- Target version: \`${{ steps.target.outputs.version }}\`" echo "- Target version: \`${{ steps.target.outputs.version }}\`"
echo "- npm package: \`@trebuchet/cli\`" echo "- npm package: \`@trebuchet/cli\`"
echo "- Docker image: \`farhoodlabs/trebuchet\`" echo "- Docker image: \`git.farh.net/farhoodlabs/trebuchet\`"
echo "- GitHub release: \`v${{ steps.target.outputs.version }}\` marked as latest" echo ""
echo "NOTE: Gitea determines the 'latest' release by date, not a flag."
echo "To re-mark \`v${{ steps.target.outputs.version }}\` as the latest"
echo "release on Gitea, edit the release in the UI to bump its date."
} >> "$GITHUB_STEP_SUMMARY" } >> "$GITHUB_STEP_SUMMARY"
-53
View File
@@ -1,53 +0,0 @@
name: Helm Chart Release
on:
push:
branches: [main]
paths:
- 'charts/hightower/**'
permissions:
contents: write
jobs:
release:
name: Lint, package & publish
runs-on: runners-farhoodlabs
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: Install Helm
uses: azure/setup-helm@b9e51907a09c216f16ebe8536097933489208112 # v4.3.0
- name: Lint chart
run: helm lint charts/hightower
- name: Package chart
run: |
mkdir -p .helm-packages
helm package charts/hightower -d .helm-packages
- name: Checkout gh-pages
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: gh-pages
path: gh-pages
fetch-depth: 0
- name: Update Helm repo index
run: |
cp .helm-packages/*.tgz gh-pages/
helm repo index gh-pages --url https://farhoodlabs.github.io/hightower
- name: Push to gh-pages
run: |
cd gh-pages
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add .
git diff --staged --quiet && echo "No changes to commit" && exit 0
git commit -m "Release Helm chart $(ls *.tgz | head -1)"
git push
+2
View File
@@ -5,3 +5,5 @@ credentials/
dist/ dist/
repos/ repos/
.turbo/ .turbo/
cosign.key
cosign.pub
+1 -8
View File
@@ -9,13 +9,6 @@
"npmPublish": false "npmPublish": false
} }
], ],
[ "semantic-release-gitea"
"@semantic-release/github",
{
"successCommentCondition": false,
"failCommentCondition": false,
"releasedLabels": false
}
]
] ]
} }
+1 -1
View File
@@ -158,7 +158,7 @@ Comments must be **timeless** — no references to this conversation, refactorin
**Config:** `Dockerfile`, `apps/worker/configs/`, `apps/worker/prompts/`, `tsconfig.base.json` (shared compiler options), `turbo.json`, `biome.json` **Config:** `Dockerfile`, `apps/worker/configs/`, `apps/worker/prompts/`, `tsconfig.base.json` (shared compiler options), `turbo.json`, `biome.json`
**CI/CD:** `.github/workflows/ci.yml` (type-check, lint, build & push images to GHCR), `.github/workflows/release.yml` (Docker Hub push + GitHub release, manual dispatch) **CI/CD:** `.gitea/workflows/ci.yml` (type-check, lint, build & push images to GHCR), `.gitea/workflows/release.yml` (Docker Hub push + GitHub release, manual dispatch)
## Package Installation ## Package Installation
-6
View File
@@ -1,6 +0,0 @@
apiVersion: v2
name: hightower
description: API-driven AI pentester built on Shannon, deployed as a service on Kubernetes
type: application
version: 0.1.1
appVersion: "1.0.0"
+27
View File
@@ -0,0 +1,27 @@
apiVersion: v2
name: trebuchet
description: API-driven AI pentester built on Shannon, deployed as a service on Kubernetes
type: application
version: 0.1.1
appVersion: "1.0.0"
home: https://git.farh.net/farhoodlabs/trebuchet
sources:
- https://git.farh.net/farhoodlabs/trebuchet
maintainers:
- name: farhoodlabs
url: https://git.farh.net/farhoodlabs
keywords:
- security
- pentesting
- ai
- kubernetes
annotations:
artifacthub.io/license: AGPL-3.0
artifacthub.io/links: |
- name: source
url: https://git.farh.net/farhoodlabs/trebuchet
artifacthub.io/images: |
- name: worker
image: git.farh.net/farhoodlabs/trebuchet:latest
- name: api
image: git.farh.net/farhoodlabs/trebuchet-api:latest
@@ -22,9 +22,9 @@ Ensure the following secrets exist in the {{ .Release.Namespace }} namespace:
== Services == == Services ==
API: {{ include "hightower.api.fullname" . }}:{{ .Values.api.port }} API: {{ include "trebuchet.api.fullname" . }}:{{ .Values.api.port }}
Temporal: {{ include "hightower.temporal.serviceName" . }}:{{ .Values.temporal.ports.grpc }} (gRPC) Temporal: {{ include "trebuchet.temporal.serviceName" . }}:{{ .Values.temporal.ports.grpc }} (gRPC)
{{ include "hightower.temporal.serviceName" . }}:{{ .Values.temporal.ports.webUi }} (Web UI) {{ include "trebuchet.temporal.serviceName" . }}:{{ .Values.temporal.ports.webUi }} (Web UI)
{{- if .Values.router.enabled }} {{- if .Values.router.enabled }}
Router: {{ include "hightower.router.fullname" . }}:{{ .Values.router.port }} Router: {{ include "trebuchet.router.fullname" . }}:{{ .Values.router.port }}
{{- end }} {{- end }}
@@ -1,14 +1,14 @@
{{/* {{/*
Chart name, truncated to 63 chars. Chart name, truncated to 63 chars.
*/}} */}}
{{- define "hightower.name" -}} {{- define "trebuchet.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }} {{- end }}
{{/* {{/*
Fully qualified app name, truncated to 63 chars. Fully qualified app name, truncated to 63 chars.
*/}} */}}
{{- define "hightower.fullname" -}} {{- define "trebuchet.fullname" -}}
{{- if .Values.fullnameOverride }} {{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }} {{- else }}
@@ -24,99 +24,99 @@ Fully qualified app name, truncated to 63 chars.
{{/* {{/*
Chart label value. Chart label value.
*/}} */}}
{{- define "hightower.chart" -}} {{- define "trebuchet.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }} {{- end }}
{{/* {{/*
Common labels. Common labels.
*/}} */}}
{{- define "hightower.labels" -}} {{- define "trebuchet.labels" -}}
helm.sh/chart: {{ include "hightower.chart" . }} helm.sh/chart: {{ include "trebuchet.chart" . }}
app.kubernetes.io/managed-by: {{ .Release.Service }} app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }} {{- end }}
{{/* {{/*
API component name. API component name.
*/}} */}}
{{- define "hightower.api.fullname" -}} {{- define "trebuchet.api.fullname" -}}
{{- printf "%s-api" (include "hightower.fullname" .) | trunc 63 | trimSuffix "-" }} {{- printf "%s-api" (include "trebuchet.fullname" .) | trunc 63 | trimSuffix "-" }}
{{- end }} {{- end }}
{{/* {{/*
API selector labels. API selector labels.
*/}} */}}
{{- define "hightower.api.selectorLabels" -}} {{- define "trebuchet.api.selectorLabels" -}}
app: {{ include "hightower.api.fullname" . }} app: {{ include "trebuchet.api.fullname" . }}
{{- end }} {{- end }}
{{/* {{/*
Temporal component name. Temporal component name.
*/}} */}}
{{- define "hightower.temporal.fullname" -}} {{- define "trebuchet.temporal.fullname" -}}
{{- printf "%s-temporal" (include "hightower.fullname" .) | trunc 63 | trimSuffix "-" }} {{- printf "%s-temporal" (include "trebuchet.fullname" .) | trunc 63 | trimSuffix "-" }}
{{- end }} {{- end }}
{{/* {{/*
Temporal service name (same as fullname). Temporal service name (same as fullname).
*/}} */}}
{{- define "hightower.temporal.serviceName" -}} {{- define "trebuchet.temporal.serviceName" -}}
{{- include "hightower.temporal.fullname" . }} {{- include "trebuchet.temporal.fullname" . }}
{{- end }} {{- end }}
{{/* {{/*
Temporal selector labels. Temporal selector labels.
*/}} */}}
{{- define "hightower.temporal.selectorLabels" -}} {{- define "trebuchet.temporal.selectorLabels" -}}
app: {{ include "hightower.temporal.fullname" . }} app: {{ include "trebuchet.temporal.fullname" . }}
{{- end }} {{- end }}
{{/* {{/*
Router component name. Router component name.
*/}} */}}
{{- define "hightower.router.fullname" -}} {{- define "trebuchet.router.fullname" -}}
{{- printf "%s-router" (include "hightower.fullname" .) | trunc 63 | trimSuffix "-" }} {{- printf "%s-router" (include "trebuchet.fullname" .) | trunc 63 | trimSuffix "-" }}
{{- end }} {{- end }}
{{/* {{/*
Router selector labels. Router selector labels.
*/}} */}}
{{- define "hightower.router.selectorLabels" -}} {{- define "trebuchet.router.selectorLabels" -}}
app: {{ include "hightower.router.fullname" . }} app: {{ include "trebuchet.router.fullname" . }}
{{- end }} {{- end }}
{{/* {{/*
CNPG cluster name. CNPG cluster name.
*/}} */}}
{{- define "hightower.cnpg.fullname" -}} {{- define "trebuchet.cnpg.fullname" -}}
{{- printf "%s-temporal-db" (include "hightower.fullname" .) | trunc 63 | trimSuffix "-" }} {{- printf "%s-temporal-db" (include "trebuchet.fullname" .) | trunc 63 | trimSuffix "-" }}
{{- end }} {{- end }}
{{/* {{/*
CNPG read-write service name (CNPG auto-creates <cluster>-rw). CNPG read-write service name (CNPG auto-creates <cluster>-rw).
*/}} */}}
{{- define "hightower.cnpg.serviceName" -}} {{- define "trebuchet.cnpg.serviceName" -}}
{{- printf "%s-rw" (include "hightower.cnpg.fullname" .) }} {{- printf "%s-rw" (include "trebuchet.cnpg.fullname" .) }}
{{- end }} {{- end }}
{{/* {{/*
Service account name for the API. Service account name for the API.
*/}} */}}
{{- define "hightower.serviceAccountName" -}} {{- define "trebuchet.serviceAccountName" -}}
{{- if .Values.api.serviceAccount.name }} {{- if .Values.api.serviceAccount.name }}
{{- .Values.api.serviceAccount.name }} {{- .Values.api.serviceAccount.name }}
{{- else }} {{- else }}
{{- include "hightower.api.fullname" . }} {{- include "trebuchet.api.fullname" . }}
{{- end }} {{- end }}
{{- end }} {{- end }}
{{/* {{/*
Postgres seeds host — use override or default to CNPG service. Postgres seeds host — use override or default to CNPG service.
*/}} */}}
{{- define "hightower.temporal.postgresSeeds" -}} {{- define "trebuchet.temporal.postgresSeeds" -}}
{{- if .Values.temporal.db.host }} {{- if .Values.temporal.db.host }}
{{- .Values.temporal.db.host }} {{- .Values.temporal.db.host }}
{{- else }} {{- else }}
{{- include "hightower.cnpg.serviceName" . }} {{- include "trebuchet.cnpg.serviceName" . }}
{{- end }} {{- end }}
{{- end }} {{- end }}
@@ -1,21 +1,21 @@
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
name: {{ include "hightower.api.fullname" . }} name: {{ include "trebuchet.api.fullname" . }}
labels: labels:
{{- include "hightower.labels" . | nindent 4 }} {{- include "trebuchet.labels" . | nindent 4 }}
{{- include "hightower.api.selectorLabels" . | nindent 4 }} {{- include "trebuchet.api.selectorLabels" . | nindent 4 }}
spec: spec:
replicas: {{ .Values.api.replicaCount }} replicas: {{ .Values.api.replicaCount }}
selector: selector:
matchLabels: matchLabels:
{{- include "hightower.api.selectorLabels" . | nindent 6 }} {{- include "trebuchet.api.selectorLabels" . | nindent 6 }}
template: template:
metadata: metadata:
labels: labels:
{{- include "hightower.api.selectorLabels" . | nindent 8 }} {{- include "trebuchet.api.selectorLabels" . | nindent 8 }}
spec: spec:
serviceAccountName: {{ include "hightower.serviceAccountName" . }} serviceAccountName: {{ include "trebuchet.serviceAccountName" . }}
{{- with .Values.imagePullSecrets }} {{- with .Values.imagePullSecrets }}
imagePullSecrets: imagePullSecrets:
{{- toYaml . | nindent 8 }} {{- toYaml . | nindent 8 }}
@@ -29,7 +29,7 @@ spec:
name: http name: http
env: env:
- name: TEMPORAL_ADDRESS - name: TEMPORAL_ADDRESS
value: "{{ include "hightower.temporal.serviceName" . }}:{{ .Values.temporal.ports.grpc }}" value: "{{ include "trebuchet.temporal.serviceName" . }}:{{ .Values.temporal.ports.grpc }}"
- name: WORKER_IMAGE - name: WORKER_IMAGE
value: {{ .Values.api.workerImage }} value: {{ .Values.api.workerImage }}
- name: K8S_NAMESPACE - name: K8S_NAMESPACE
@@ -59,4 +59,4 @@ spec:
volumes: volumes:
- name: workspaces - name: workspaces
persistentVolumeClaim: persistentVolumeClaim:
claimName: {{ include "hightower.fullname" . }}-workspaces claimName: {{ include "trebuchet.fullname" . }}-workspaces
@@ -1,9 +1,9 @@
apiVersion: rbac.authorization.k8s.io/v1 apiVersion: rbac.authorization.k8s.io/v1
kind: Role kind: Role
metadata: metadata:
name: {{ include "hightower.api.fullname" . }} name: {{ include "trebuchet.api.fullname" . }}
labels: labels:
{{- include "hightower.labels" . | nindent 4 }} {{- include "trebuchet.labels" . | nindent 4 }}
rules: rules:
- apiGroups: ["batch"] - apiGroups: ["batch"]
resources: ["jobs"] resources: ["jobs"]
@@ -1,14 +1,14 @@
apiVersion: rbac.authorization.k8s.io/v1 apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding kind: RoleBinding
metadata: metadata:
name: {{ include "hightower.api.fullname" . }} name: {{ include "trebuchet.api.fullname" . }}
labels: labels:
{{- include "hightower.labels" . | nindent 4 }} {{- include "trebuchet.labels" . | nindent 4 }}
subjects: subjects:
- kind: ServiceAccount - kind: ServiceAccount
name: {{ include "hightower.serviceAccountName" . }} name: {{ include "trebuchet.serviceAccountName" . }}
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
roleRef: roleRef:
kind: Role kind: Role
name: {{ include "hightower.api.fullname" . }} name: {{ include "trebuchet.api.fullname" . }}
apiGroup: rbac.authorization.k8s.io apiGroup: rbac.authorization.k8s.io
@@ -1,12 +1,12 @@
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
metadata: metadata:
name: {{ include "hightower.api.fullname" . }} name: {{ include "trebuchet.api.fullname" . }}
labels: labels:
{{- include "hightower.labels" . | nindent 4 }} {{- include "trebuchet.labels" . | nindent 4 }}
spec: spec:
selector: selector:
{{- include "hightower.api.selectorLabels" . | nindent 4 }} {{- include "trebuchet.api.selectorLabels" . | nindent 4 }}
ports: ports:
- name: http - name: http
port: {{ .Values.api.port }} port: {{ .Values.api.port }}
@@ -2,7 +2,7 @@
apiVersion: v1 apiVersion: v1
kind: ServiceAccount kind: ServiceAccount
metadata: metadata:
name: {{ include "hightower.serviceAccountName" . }} name: {{ include "trebuchet.serviceAccountName" . }}
labels: labels:
{{- include "hightower.labels" . | nindent 4 }} {{- include "trebuchet.labels" . | nindent 4 }}
{{- end }} {{- end }}
@@ -2,9 +2,9 @@
apiVersion: v1 apiVersion: v1
kind: ConfigMap kind: ConfigMap
metadata: metadata:
name: {{ include "hightower.router.fullname" . }}-config name: {{ include "trebuchet.router.fullname" . }}-config
labels: labels:
{{- include "hightower.labels" . | nindent 4 }} {{- include "trebuchet.labels" . | nindent 4 }}
data: data:
router-config.json: {{ .Values.router.config | toJson | quote }} router-config.json: {{ .Values.router.config | toJson | quote }}
{{- end }} {{- end }}
@@ -2,19 +2,19 @@
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
name: {{ include "hightower.router.fullname" . }} name: {{ include "trebuchet.router.fullname" . }}
labels: labels:
{{- include "hightower.labels" . | nindent 4 }} {{- include "trebuchet.labels" . | nindent 4 }}
{{- include "hightower.router.selectorLabels" . | nindent 4 }} {{- include "trebuchet.router.selectorLabels" . | nindent 4 }}
spec: spec:
replicas: {{ .Values.router.replicaCount }} replicas: {{ .Values.router.replicaCount }}
selector: selector:
matchLabels: matchLabels:
{{- include "hightower.router.selectorLabels" . | nindent 6 }} {{- include "trebuchet.router.selectorLabels" . | nindent 6 }}
template: template:
metadata: metadata:
labels: labels:
{{- include "hightower.router.selectorLabels" . | nindent 8 }} {{- include "trebuchet.router.selectorLabels" . | nindent 8 }}
spec: spec:
{{- with .Values.imagePullSecrets }} {{- with .Values.imagePullSecrets }}
imagePullSecrets: imagePullSecrets:
@@ -62,5 +62,5 @@ spec:
volumes: volumes:
- name: config - name: config
configMap: configMap:
name: {{ include "hightower.router.fullname" . }}-config name: {{ include "trebuchet.router.fullname" . }}-config
{{- end }} {{- end }}
@@ -2,12 +2,12 @@
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
metadata: metadata:
name: {{ include "hightower.router.fullname" . }} name: {{ include "trebuchet.router.fullname" . }}
labels: labels:
{{- include "hightower.labels" . | nindent 4 }} {{- include "trebuchet.labels" . | nindent 4 }}
spec: spec:
selector: selector:
{{- include "hightower.router.selectorLabels" . | nindent 4 }} {{- include "trebuchet.router.selectorLabels" . | nindent 4 }}
ports: ports:
- port: {{ .Values.router.port }} - port: {{ .Values.router.port }}
targetPort: {{ .Values.router.port }} targetPort: {{ .Values.router.port }}
@@ -2,9 +2,9 @@
apiVersion: postgresql.cnpg.io/v1 apiVersion: postgresql.cnpg.io/v1
kind: Cluster kind: Cluster
metadata: metadata:
name: {{ include "hightower.cnpg.fullname" . }} name: {{ include "trebuchet.cnpg.fullname" . }}
labels: labels:
{{- include "hightower.labels" . | nindent 4 }} {{- include "trebuchet.labels" . | nindent 4 }}
spec: spec:
instances: {{ .Values.cnpg.instances }} instances: {{ .Values.cnpg.instances }}
storage: storage:
@@ -1,19 +1,19 @@
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
name: {{ include "hightower.temporal.fullname" . }} name: {{ include "trebuchet.temporal.fullname" . }}
labels: labels:
{{- include "hightower.labels" . | nindent 4 }} {{- include "trebuchet.labels" . | nindent 4 }}
{{- include "hightower.temporal.selectorLabels" . | nindent 4 }} {{- include "trebuchet.temporal.selectorLabels" . | nindent 4 }}
spec: spec:
replicas: {{ .Values.temporal.replicaCount }} replicas: {{ .Values.temporal.replicaCount }}
selector: selector:
matchLabels: matchLabels:
{{- include "hightower.temporal.selectorLabels" . | nindent 6 }} {{- include "trebuchet.temporal.selectorLabels" . | nindent 6 }}
template: template:
metadata: metadata:
labels: labels:
{{- include "hightower.temporal.selectorLabels" . | nindent 8 }} {{- include "trebuchet.temporal.selectorLabels" . | nindent 8 }}
spec: spec:
{{- with .Values.imagePullSecrets }} {{- with .Values.imagePullSecrets }}
imagePullSecrets: imagePullSecrets:
@@ -34,7 +34,7 @@ spec:
- name: DB_PORT - name: DB_PORT
value: {{ .Values.temporal.db.port | quote }} value: {{ .Values.temporal.db.port | quote }}
- name: POSTGRES_SEEDS - name: POSTGRES_SEEDS
value: {{ include "hightower.temporal.postgresSeeds" . }} value: {{ include "trebuchet.temporal.postgresSeeds" . }}
- name: DBNAME - name: DBNAME
value: {{ .Values.temporal.db.name }} value: {{ .Values.temporal.db.name }}
- name: VISIBILITY_DBNAME - name: VISIBILITY_DBNAME
@@ -1,12 +1,12 @@
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
metadata: metadata:
name: {{ include "hightower.temporal.serviceName" . }} name: {{ include "trebuchet.temporal.serviceName" . }}
labels: labels:
{{- include "hightower.labels" . | nindent 4 }} {{- include "trebuchet.labels" . | nindent 4 }}
spec: spec:
selector: selector:
{{- include "hightower.temporal.selectorLabels" . | nindent 4 }} {{- include "trebuchet.temporal.selectorLabels" . | nindent 4 }}
ports: ports:
- name: grpc - name: grpc
port: {{ .Values.temporal.ports.grpc }} port: {{ .Values.temporal.ports.grpc }}
@@ -1,9 +1,9 @@
apiVersion: v1 apiVersion: v1
kind: PersistentVolumeClaim kind: PersistentVolumeClaim
metadata: metadata:
name: {{ include "hightower.fullname" . }}-workspaces name: {{ include "trebuchet.fullname" . }}-workspaces
labels: labels:
{{- include "hightower.labels" . | nindent 4 }} {{- include "trebuchet.labels" . | nindent 4 }}
{{- if .Values.workspaces.retain }} {{- if .Values.workspaces.retain }}
annotations: annotations:
helm.sh/resource-policy: keep helm.sh/resource-policy: keep
@@ -4,8 +4,8 @@ imagePullSecrets: []
# Externally-managed secrets (chart never creates these) # Externally-managed secrets (chart never creates these)
secrets: secrets:
credentials: hightower-credentials credentials: trebuchet-credentials
temporalDbApp: hightower-temporal-db-app temporalDbApp: trebuchet-temporal-db-app
# Shared workspaces PVC # Shared workspaces PVC
workspaces: workspaces: