Author SHA1 Message Date
renovate bbb3fd6f35 chore(deps): update go toolchain directive to v1.27.3 [security] (#206)
dancefetcher / build (push) Successful in 1m58s
dancefetcher / deploy-prod-frostmoln (push) Successful in 14s
2026-10-21 05:07:45 +00:00
renovate 006d844052 chore(deps): update golang:1.27.3 docker digest to eeb3904 (#205)
dancefetcher / build (push) Successful in 2m4s
dancefetcher / deploy-prod-frostmoln (push) Successful in 16s
2026-10-21 04:20:31 +00:00
renovate cdf64093da chore(deps): update golang docker tag to v1.27.3 (#204)
dancefetcher / build (push) Successful in 3m44s
dancefetcher / deploy-prod-frostmoln (push) Successful in 18s
2026-10-20 04:14:42 +00:00
argoyle 3630bfa380 feat: deploy to Frostmoln production (#203)
dancefetcher / deploy-prod-frostmoln (push) Successful in 34s
dancefetcher / build (push) Successful in 2m25s
Part of the dancefinder.unbound.se cutover to Frostmoln Production (infra: unboundsoftware/infra#1896, already applied).

- Replaces the AWS `deploy-prod` job (failing since CI left AWS) with `deploy-prod-frostmoln` (`deploy prod-frostmoln -n dancefinder`), as schemas did.
- Restricted securityContext (runAsNonRoot, drop ALL, seccomp RuntimeDefault) and `imagePullSecrets: oci-registry` (Platform registry).
- Runs as uid 65534. The Frostmoln CronJob is suspended by hand after its first deploy and resumed by `migrate-db.sh dancefinder --cutover` (not in the manifest, so later deploys don't re-suspend it).

Merging deploys to Frostmoln only; DNS still points at AWS until the cutover.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01H6eVuR4Yt3m7TbDTDwyZJi
Reviewed-on: https://gitea.unbound.se/dancefinder/dancefetcher/pulls/203
2026-10-16 08:32:47 +00:00
4 changed files with 31 additions and 6 deletions

No files matched your search

+18 -4
View File
@@ -18,16 +18,30 @@ jobs:
- name: Build and push
run: unset GITEA_TOKEN && build && push
deploy-prod:
deploy-prod-frostmoln:
needs: build
if: gitea.ref == 'refs/heads/master'
runs-on: ubuntu-latest
env:
BUILDTOOLS_CONTENT: ${{ secrets.BUILDTOOLS_CONTENT }}
BUILDTOOLS_CONTENT: ${{ secrets.BUILDTOOLS_FROSTMOLN_PRODUCTION }}
GITEA_REPOSITORY: ${{ gitea.repository }}
FM_TENANT: 9ae61342-0f76-476f-8176-e46f6b0b0c32
environment: prod
steps:
- uses: actions/checkout@v7
- uses: buildtool/setup-buildtools-action@v1
- name: Deploy
run: deploy prod
- name: Install fm
run: |
sudo install -d -m 0755 /etc/apt/keyrings
sudo curl -fsSL -o /etc/apt/keyrings/frostmoln.gpg https://get.frostmoln.cloud/deb/frostmoln.gpg
sudo curl -fsSL -o /etc/apt/sources.list.d/frostmoln.sources https://get.frostmoln.cloud/deb/frostmoln.sources
sudo apt-get update && sudo apt-get install -y fm
- name: Deploy to Frostmoln production
env:
FROSTMOLN_API_KEY: ${{ secrets.FROSTMOLN_PRODUCTION_DEPLOY_KEY }}
# The cluster API is private: the kubeconfig's exec plugin opens an fm
# tunnel on demand. fm reads the key from its config file, not the env.
run: |
fm auth api-key set "$FROSTMOLN_API_KEY" > /dev/null
fm kubernetes cluster kubeconfig ${{ vars.FROSTMOLN_PRODUCTION_CLUSTER_ID }} --exec --file "$RUNNER_TEMP/kubeconfig"
KUBECONFIG_CONTENT="$(cat "$RUNNER_TEMP/kubeconfig")" deploy prod-frostmoln -n dancefinder
+1 -1
View File
@@ -1,4 +1,4 @@
FROM amd64/golang:1.27.2@sha256:9e036bef9c3cd035cae4aeff523b3997c3c8aa993b13d112a71ea90143e87e48 as build
FROM amd64/golang:1.27.3@sha256:eeb390432bff87801f7f89d2dc92cf61f95ef90165cfa8565638ad7b1ab48ec5 as build
WORKDIR /build
ENV CGO_ENABLED=0
ADD . /build
+1 -1
View File
@@ -2,7 +2,7 @@ module gitlab.com/unboundsoftware/dancefinder/dancefetcher
go 1.26.0
toolchain go1.27.2
toolchain go1.27.3
require (
github.com/alecthomas/kingpin/v2 v2.4.0
+11
View File
@@ -11,8 +11,19 @@ spec:
spec:
template:
spec:
imagePullSecrets:
- name: oci-registry
securityContext:
runAsNonRoot: true
runAsUser: 65534
seccompProfile:
type: RuntimeDefault
containers:
- name: dancefetcher
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop: ["ALL"]
image: ${IMAGE}
imagePullPolicy: Always
resources: