From 8ca4e0784f2a1a411630919adb79ad71a960bbb0 Mon Sep 17 00:00:00 2001 From: unkin-agent Date: Sat, 3 Oct 2026 00:16:10 +1000 Subject: [PATCH] ci: move Go steps to gobuilder, enable S3 build cache (#2) Why: standardize Go CI on the estate gobuilder image and cut cold build/test time with the shared S3 build cache. - build/test/pre-commit/release(build) now use gobuilder:0.1.2-alma9 - add GOCACHE_* env + AWS creds (org secrets) to those steps - cache dir is absolute (/tmp/gocache), metrics enabled - bump k8s resource requests/limits for compile+cache overhead - packaging/upload steps (nfpm, no Go) left untouched Reviewed-on: https://git.unkin.net/unkin/vault-plugin-secrets-netbox/pulls/2 Co-authored-by: unkin-agent Co-committed-by: unkin-agent --- .woodpecker/build.yml | 18 +++++++++++++++--- .woodpecker/pre-commit.yaml | 18 +++++++++++++++--- .woodpecker/release.yml | 18 +++++++++++++++--- .woodpecker/test.yml | 36 ++++++++++++++++++++++++++++++------ 4 files changed, 75 insertions(+), 15 deletions(-) diff --git a/.woodpecker/build.yml b/.woodpecker/build.yml index 74123b5..0e397b9 100644 --- a/.woodpecker/build.yml +++ b/.woodpecker/build.yml @@ -3,16 +3,28 @@ when: steps: - name: build - image: golang:1.25 + image: artifactapi.k8s.syd1.au.unkin.net/docker-internal/gobuilder:0.1.2-alma9 commands: - make build + environment: + GOCACHE_S3_BUCKET: gocache + GOCACHE_S3_REGION: us-east-1 + GOCACHE_S3_ENDPOINT_URL: https://s3.ceph.unkin.net + GOCACHE_S3_PATH_STYLE: "true" + GOCACHE_KEY_PREFIX: ci-vault-plugin-secrets-netbox + GOCACHE_METRICS: "true" + GOCACHEPROG: go-cache-plugin --cache-dir=/tmp/gocache + AWS_ACCESS_KEY_ID: + from_secret: GOCACHE_AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY: + from_secret: GOCACHE_AWS_SECRET_ACCESS_KEY backend_options: kubernetes: serviceAccountName: default resources: requests: - memory: 512Mi + memory: 1Gi cpu: 1 limits: - memory: 2Gi + memory: 3Gi cpu: 2 diff --git a/.woodpecker/pre-commit.yaml b/.woodpecker/pre-commit.yaml index d57b508..22ecb8e 100644 --- a/.woodpecker/pre-commit.yaml +++ b/.woodpecker/pre-commit.yaml @@ -3,16 +3,28 @@ when: steps: - name: pre-commit - image: git.unkin.net/unkin/almalinux9-gobuilder:20260606 + image: artifactapi.k8s.syd1.au.unkin.net/docker-internal/gobuilder:0.1.2-alma9 commands: - uvx pre-commit run --all-files + environment: + GOCACHE_S3_BUCKET: gocache + GOCACHE_S3_REGION: us-east-1 + GOCACHE_S3_ENDPOINT_URL: https://s3.ceph.unkin.net + GOCACHE_S3_PATH_STYLE: "true" + GOCACHE_KEY_PREFIX: ci-vault-plugin-secrets-netbox + GOCACHE_METRICS: "true" + GOCACHEPROG: go-cache-plugin --cache-dir=/tmp/gocache + AWS_ACCESS_KEY_ID: + from_secret: GOCACHE_AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY: + from_secret: GOCACHE_AWS_SECRET_ACCESS_KEY backend_options: kubernetes: serviceAccountName: default resources: requests: - memory: 512Mi + memory: 1Gi cpu: 1 limits: - memory: 2Gi + memory: 3Gi cpu: 2 diff --git a/.woodpecker/release.yml b/.woodpecker/release.yml index f1a4b5c..d4bc31f 100644 --- a/.woodpecker/release.yml +++ b/.woodpecker/release.yml @@ -3,15 +3,27 @@ when: steps: - name: build - image: git.unkin.net/unkin/almalinux9-gobuilder:20260606 + image: artifactapi.k8s.syd1.au.unkin.net/docker-internal/gobuilder:0.1.2-alma9 commands: - make build VERSION=${CI_COMMIT_TAG} + environment: + GOCACHE_S3_BUCKET: gocache + GOCACHE_S3_REGION: us-east-1 + GOCACHE_S3_ENDPOINT_URL: https://s3.ceph.unkin.net + GOCACHE_S3_PATH_STYLE: "true" + GOCACHE_KEY_PREFIX: ci-vault-plugin-secrets-netbox + GOCACHE_METRICS: "true" + GOCACHEPROG: go-cache-plugin --cache-dir=/tmp/gocache + AWS_ACCESS_KEY_ID: + from_secret: GOCACHE_AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY: + from_secret: GOCACHE_AWS_SECRET_ACCESS_KEY backend_options: kubernetes: serviceAccountName: default resources: - requests: {memory: 512Mi, cpu: 1} - limits: {memory: 2Gi, cpu: 2} + requests: {memory: 1Gi, cpu: 1} + limits: {memory: 3Gi, cpu: 2} - name: package image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest diff --git a/.woodpecker/test.yml b/.woodpecker/test.yml index 8e81e45..eef4993 100644 --- a/.woodpecker/test.yml +++ b/.woodpecker/test.yml @@ -3,31 +3,55 @@ when: steps: - name: lint - image: golang:1.25 + image: artifactapi.k8s.syd1.au.unkin.net/docker-internal/gobuilder:0.1.2-alma9 commands: - make lint + environment: + GOCACHE_S3_BUCKET: gocache + GOCACHE_S3_REGION: us-east-1 + GOCACHE_S3_ENDPOINT_URL: https://s3.ceph.unkin.net + GOCACHE_S3_PATH_STYLE: "true" + GOCACHE_KEY_PREFIX: ci-vault-plugin-secrets-netbox + GOCACHE_METRICS: "true" + GOCACHEPROG: go-cache-plugin --cache-dir=/tmp/gocache + AWS_ACCESS_KEY_ID: + from_secret: GOCACHE_AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY: + from_secret: GOCACHE_AWS_SECRET_ACCESS_KEY backend_options: kubernetes: serviceAccountName: default resources: requests: - memory: 512Mi + memory: 1Gi cpu: 1 limits: - memory: 2Gi + memory: 3Gi cpu: 2 - name: test - image: golang:1.25 + image: artifactapi.k8s.syd1.au.unkin.net/docker-internal/gobuilder:0.1.2-alma9 commands: - make test + environment: + GOCACHE_S3_BUCKET: gocache + GOCACHE_S3_REGION: us-east-1 + GOCACHE_S3_ENDPOINT_URL: https://s3.ceph.unkin.net + GOCACHE_S3_PATH_STYLE: "true" + GOCACHE_KEY_PREFIX: ci-vault-plugin-secrets-netbox + GOCACHE_METRICS: "true" + GOCACHEPROG: go-cache-plugin --cache-dir=/tmp/gocache + AWS_ACCESS_KEY_ID: + from_secret: GOCACHE_AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY: + from_secret: GOCACHE_AWS_SECRET_ACCESS_KEY backend_options: kubernetes: serviceAccountName: default resources: requests: - memory: 512Mi + memory: 1Gi cpu: 1 limits: - memory: 2Gi + memory: 3Gi cpu: 2