1 Commits

Author SHA1 Message Date
Chris Farhood d63ba86357 chore: rename helm chart from hightower to trebuchet
CI / Type-check & lint (pull_request) Has been cancelled
CI / Build & push worker image (pull_request) Has been cancelled
CI / Build & push API image (pull_request) Has been cancelled
- 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 15:58:56 +00:00
12 changed files with 119 additions and 155 deletions
@@ -16,7 +16,7 @@ concurrency:
jobs: jobs:
check: check:
name: Type-check & lint name: Type-check & lint
runs-on: ubuntu-latest runs-on: runners-farhoodlabs
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: ubuntu-latest runs-on: runners-farhoodlabs
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 Gitea registry - name: Log in to GHCR
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with: with:
registry: git.farh.net registry: ghcr.io
username: gitea-admin username: ${{ github.actor }}
password: ${{ secrets.REGISTRY_TOKEN }} password: ${{ secrets.GITHUB_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: |
git.farh.net/farhoodlabs/trebuchet:latest ghcr.io/farhoodlabs/trebuchet:latest
git.farh.net/farhoodlabs/trebuchet:sha-${{ github.sha }} ghcr.io/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: ubuntu-latest runs-on: runners-farhoodlabs
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 Gitea registry - name: Log in to GHCR
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with: with:
registry: git.farh.net registry: ghcr.io
username: gitea-admin username: ${{ github.actor }}
password: ${{ secrets.REGISTRY_TOKEN }} password: ${{ secrets.GITHUB_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: |
git.farh.net/farhoodlabs/trebuchet-api:latest ghcr.io/farhoodlabs/trebuchet-api:latest
git.farh.net/farhoodlabs/trebuchet-api:sha-${{ github.sha }} ghcr.io/farhoodlabs/trebuchet-api:sha-${{ github.sha }}
@@ -13,7 +13,7 @@ concurrency:
jobs: jobs:
preflight: preflight:
name: Preflight name: Preflight
runs-on: ubuntu-latest runs-on: runners-farhoodlabs
outputs: outputs:
version: ${{ steps.version.outputs.version }} version: ${{ steps.version.outputs.version }}
@@ -35,6 +35,7 @@ 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"
@@ -46,10 +47,9 @@ jobs:
build-docker: build-docker:
name: Build Docker (worker) name: Build Docker (worker)
needs: preflight needs: preflight
runs-on: ubuntu-latest runs-on: runners-farhoodlabs
permissions: permissions:
contents: read contents: read
packages: write
steps: steps:
- name: Checkout - name: Checkout
@@ -58,12 +58,11 @@ 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 Gitea registry - name: Log in to Docker Hub
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with: with:
registry: git.farh.net username: ${{ secrets.DOCKERHUB_USERNAME }}
username: gitea-admin password: ${{ secrets.DOCKERHUB_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
@@ -72,15 +71,14 @@ jobs:
push: true push: true
provenance: mode=max provenance: mode=max
sbom: true sbom: true
tags: git.farh.net/farhoodlabs/trebuchet:${{ needs.preflight.outputs.version }} tags: 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: ubuntu-latest runs-on: runners-farhoodlabs
permissions: permissions:
contents: read contents: read
packages: write
steps: steps:
- name: Checkout - name: Checkout
@@ -89,12 +87,11 @@ 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 Gitea registry - name: Log in to Docker Hub
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with: with:
registry: git.farh.net username: ${{ secrets.DOCKERHUB_USERNAME }}
username: gitea-admin password: ${{ secrets.DOCKERHUB_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
@@ -104,15 +101,15 @@ jobs:
push: true push: true
provenance: mode=max provenance: mode=max
sbom: true sbom: true
tags: git.farh.net/farhoodlabs/trebuchet-api:${{ needs.preflight.outputs.version }} tags: 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: ubuntu-latest runs-on: runners-farhoodlabs
permissions: permissions:
contents: read contents: read
packages: write id-token: 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 }}
@@ -121,63 +118,57 @@ 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 Gitea registry - name: Log in to Docker Hub
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with: with:
registry: git.farh.net username: ${{ secrets.DOCKERHUB_USERNAME }}
username: gitea-admin password: ${{ secrets.DOCKERHUB_TOKEN }}
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Inspect worker image - name: Inspect worker image
id: inspect-worker id: inspect-worker
run: | run: |
docker buildx imagetools inspect "git.farh.net/farhoodlabs/trebuchet:${{ needs.preflight.outputs.version }}" docker buildx imagetools inspect "farhoodlabs/trebuchet:${{ needs.preflight.outputs.version }}"
DIGEST="sha256:$(docker buildx imagetools inspect --raw "git.farh.net/farhoodlabs/trebuchet:${{ needs.preflight.outputs.version }}" | sha256sum | cut -d' ' -f1)" DIGEST="sha256:$(docker buildx imagetools inspect --raw "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 "git.farh.net/farhoodlabs/trebuchet-api:${{ needs.preflight.outputs.version }}" docker buildx imagetools inspect "farhoodlabs/trebuchet-api:${{ needs.preflight.outputs.version }}"
DIGEST="sha256:$(docker buildx imagetools inspect --raw "git.farh.net/farhoodlabs/trebuchet-api:${{ needs.preflight.outputs.version }}" | sha256sum | cut -d' ' -f1)" DIGEST="sha256:$(docker buildx imagetools inspect --raw "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
env: run: cosign sign --yes "farhoodlabs/trebuchet@${{ steps.inspect-worker.outputs.digest }}"
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
env: run: cosign sign --yes "farhoodlabs/trebuchet-api@${{ steps.inspect-api.outputs.digest }}"
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 --key env://COSIGN_PUBLIC_KEY \ cosign verify \
"git.farh.net/farhoodlabs/trebuchet@${{ steps.inspect-worker.outputs.digest }}" --certificate-oidc-issuer https://token.actions.githubusercontent.com \
--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 --key env://COSIGN_PUBLIC_KEY \ cosign verify \
"git.farh.net/farhoodlabs/trebuchet-api@${{ steps.inspect-api.outputs.digest }}" --certificate-oidc-issuer https://token.actions.githubusercontent.com \
--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: ubuntu-latest runs-on: runners-farhoodlabs
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: ubuntu-latest runs-on: runners-farhoodlabs
permissions: permissions:
contents: write contents: write
outputs: outputs:
@@ -42,12 +42,11 @@ jobs:
id: probe id: probe
shell: bash shell: bash
env: env:
GITEA_URL: https://git.farh.net GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
run: | run: |
set -euo pipefail set -euo pipefail
npx -p semantic-release@25 -p semantic-release-gitea semantic-release --dry-run --no-ci 2>&1 | tee semantic-release.log npx semantic-release@25 --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"
@@ -61,10 +60,9 @@ 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: ubuntu-latest runs-on: runners-farhoodlabs
permissions: permissions:
contents: read contents: read
packages: write
steps: steps:
- name: Checkout - name: Checkout
@@ -73,12 +71,11 @@ 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 Gitea registry - name: Log in to Docker Hub
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with: with:
registry: git.farh.net username: ${{ secrets.DOCKERHUB_USERNAME }}
username: gitea-admin password: ${{ secrets.DOCKERHUB_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
@@ -88,17 +85,16 @@ jobs:
provenance: mode=max provenance: mode=max
sbom: true sbom: true
tags: | tags: |
git.farh.net/farhoodlabs/trebuchet:${{ needs.preflight.outputs.version }} farhoodlabs/trebuchet:${{ needs.preflight.outputs.version }}
git.farh.net/farhoodlabs/trebuchet:latest 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: ubuntu-latest runs-on: runners-farhoodlabs
permissions: permissions:
contents: read contents: read
packages: write
steps: steps:
- name: Checkout - name: Checkout
@@ -107,12 +103,11 @@ 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 Gitea registry - name: Log in to Docker Hub
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with: with:
registry: git.farh.net username: ${{ secrets.DOCKERHUB_USERNAME }}
username: gitea-admin password: ${{ secrets.DOCKERHUB_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
@@ -123,16 +118,16 @@ jobs:
provenance: mode=max provenance: mode=max
sbom: true sbom: true
tags: | tags: |
git.farh.net/farhoodlabs/trebuchet-api:${{ needs.preflight.outputs.version }} farhoodlabs/trebuchet-api:${{ needs.preflight.outputs.version }}
git.farh.net/farhoodlabs/trebuchet-api:latest 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: ubuntu-latest runs-on: runners-farhoodlabs
permissions: permissions:
contents: read contents: read
packages: write id-token: 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 }}
@@ -141,63 +136,57 @@ 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 Gitea registry - name: Log in to Docker Hub
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with: with:
registry: git.farh.net username: ${{ secrets.DOCKERHUB_USERNAME }}
username: gitea-admin password: ${{ secrets.DOCKERHUB_TOKEN }}
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Inspect worker image - name: Inspect worker image
id: inspect-worker id: inspect-worker
run: | run: |
docker buildx imagetools inspect "git.farh.net/farhoodlabs/trebuchet:${{ needs.preflight.outputs.version }}" docker buildx imagetools inspect "farhoodlabs/trebuchet:${{ needs.preflight.outputs.version }}"
DIGEST="sha256:$(docker buildx imagetools inspect --raw "git.farh.net/farhoodlabs/trebuchet:${{ needs.preflight.outputs.version }}" | sha256sum | cut -d' ' -f1)" DIGEST="sha256:$(docker buildx imagetools inspect --raw "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 "git.farh.net/farhoodlabs/trebuchet-api:${{ needs.preflight.outputs.version }}" docker buildx imagetools inspect "farhoodlabs/trebuchet-api:${{ needs.preflight.outputs.version }}"
DIGEST="sha256:$(docker buildx imagetools inspect --raw "git.farh.net/farhoodlabs/trebuchet-api:${{ needs.preflight.outputs.version }}" | sha256sum | cut -d' ' -f1)" DIGEST="sha256:$(docker buildx imagetools inspect --raw "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
env: run: cosign sign --yes "farhoodlabs/trebuchet@${{ steps.inspect-worker.outputs.digest }}"
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
env: run: cosign sign --yes "farhoodlabs/trebuchet-api@${{ steps.inspect-api.outputs.digest }}"
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 --key env://COSIGN_PUBLIC_KEY \ cosign verify \
"git.farh.net/farhoodlabs/trebuchet@${{ steps.inspect-worker.outputs.digest }}" --certificate-oidc-issuer https://token.actions.githubusercontent.com \
--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 --key env://COSIGN_PUBLIC_KEY \ cosign verify \
"git.farh.net/farhoodlabs/trebuchet-api@${{ steps.inspect-api.outputs.digest }}" --certificate-oidc-issuer https://token.actions.githubusercontent.com \
--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: ubuntu-latest runs-on: runners-farhoodlabs
permissions: permissions:
contents: read contents: read
id-token: write
steps: steps:
- name: Checkout - name: Checkout
@@ -237,9 +226,9 @@ jobs:
fi fi
release: release:
name: Create Gitea release name: Create GitHub release
needs: [preflight, publish-npm] needs: [preflight, publish-npm]
runs-on: ubuntu-latest runs-on: runners-farhoodlabs
permissions: permissions:
contents: write contents: write
@@ -261,8 +250,7 @@ jobs:
- name: Install dependencies - name: Install dependencies
run: pnpm install --frozen-lockfile run: pnpm install --frozen-lockfile
- name: Create Gitea release - name: Create GitHub release
env: env:
GITEA_URL: https://git.farh.net GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} run: npx semantic-release@25
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: ubuntu-latest runs-on: runners-farhoodlabs
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 and Docker latest name: Roll back npm, Docker, and GitHub release latest
runs-on: ubuntu-latest runs-on: runners-farhoodlabs
steps: steps:
- name: Checkout tags - name: Checkout tags
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
@@ -74,44 +74,48 @@ 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 Gitea registry - name: Log in to Docker Hub
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0 uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with: with:
registry: git.farh.net username: ${{ secrets.DOCKERHUB_USERNAME }}
username: gitea-admin password: ${{ secrets.DOCKERHUB_TOKEN }}
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Verify Docker image tag exists - name: Verify Docker image tag exists
run: docker buildx imagetools inspect "git.farh.net/farhoodlabs/trebuchet:${{ steps.target.outputs.version }}" run: docker buildx imagetools inspect "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 --key env://COSIGN_PUBLIC_KEY \ cosign verify \
"git.farh.net/farhoodlabs/trebuchet:${{ steps.target.outputs.version }}" --certificate-oidc-issuer https://token.actions.githubusercontent.com \
--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 "git.farh.net/farhoodlabs/trebuchet:latest" \ --tag "farhoodlabs/trebuchet:latest" \
"git.farh.net/farhoodlabs/trebuchet:${{ steps.target.outputs.version }}" "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 "git.farh.net/farhoodlabs/trebuchet:latest" run: docker buildx imagetools inspect "farhoodlabs/trebuchet:latest"
- name: Write summary - name: Write summary
run: | run: |
@@ -120,9 +124,6 @@ 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: \`git.farh.net/farhoodlabs/trebuchet\`" echo "- Docker image: \`farhoodlabs/trebuchet\`"
echo "" echo "- GitHub release: \`v${{ steps.target.outputs.version }}\` marked as latest"
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"
-2
View File
@@ -5,5 +5,3 @@ credentials/
dist/ dist/
repos/ repos/
.turbo/ .turbo/
cosign.key
cosign.pub
+8 -1
View File
@@ -9,6 +9,13 @@
"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:** `.gitea/workflows/ci.yml` (type-check, lint, build & push images to GHCR), `.gitea/workflows/release.yml` (Docker Hub push + GitHub release, manual dispatch) **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)
## Package Installation ## Package Installation
-21
View File
@@ -4,24 +4,3 @@ description: API-driven AI pentester built on Shannon, deployed as a service on
type: application type: application
version: 0.1.1 version: 0.1.1
appVersion: "1.0.0" 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