feat: add zip packaging target and woodpecker release pipeline

- Makefile gains `make package` target that builds and zips the provider
  binary in the format expected by artifactapi's local terraform registry:
  terraform-provider-artifactapi_{version}_{os}_{arch}.zip
- New .woodpecker/release.yml pipeline triggers on tag push, builds the
  zip, and uploads it to artifactapi via the local files API
- Secrets: artifactapi_url and artifactapi_repo
This commit is contained in:
2026-06-22 23:33:22 +10:00
parent 7c94f06be6
commit 7657b89201
2 changed files with 31 additions and 3 deletions
+21
View File
@@ -0,0 +1,21 @@
when:
- event: tag
steps:
- name: package
image: golang:1.25
commands:
- apt-get update && apt-get install -y zip
- make package VERSION=${CI_COMMIT_TAG}
- name: upload
image: curlimages/curl:latest
secrets: [artifactapi_url, artifactapi_repo]
commands:
- |
VERSION=$(echo ${CI_COMMIT_TAG} | sed 's/^v//')
FILE="terraform-provider-artifactapi_${VERSION}_linux_amd64.zip"
curl -f -X PUT \
"$${ARTIFACTAPI_URL}/api/v2/remotes/$${ARTIFACTAPI_REPO}/files/unkin/artifactapi/$${FILE}" \
-H "Content-Type: application/zip" \
--data-binary @"$${FILE}"
+10 -3
View File
@@ -1,9 +1,11 @@
.PHONY: build install test lint fmt clean tidy .PHONY: build install test lint fmt clean tidy package
BINARY := terraform-provider-artifactapi BINARY := terraform-provider-artifactapi
VERSION ?= 0.0.1 VERSION ?= 0.0.1
OS_ARCH := linux_amd64 OS_ARCH := linux_amd64
INSTALL_DIR := ~/.terraform.d/plugins/git.unkin.net/unkin/artifactapi/$(VERSION)/$(OS_ARCH) INSTALL_VERSION := $(shell echo $(VERSION) | sed 's/^v//')
INSTALL_DIR := ~/.terraform.d/plugins/git.unkin.net/unkin/artifactapi/$(INSTALL_VERSION)/$(OS_ARCH)
ZIP := $(BINARY)_$(INSTALL_VERSION)_$(OS_ARCH).zip
GO_VERSION_REQUIRED := 1.23 GO_VERSION_REQUIRED := 1.23
GO_VERSION_ACTUAL := $(shell go version | sed 's/go version go\([0-9]*\.[0-9]*\).*/\1/') GO_VERSION_ACTUAL := $(shell go version | sed 's/go version go\([0-9]*\.[0-9]*\).*/\1/')
@@ -29,8 +31,13 @@ lint: check-go
fmt: check-go fmt: check-go
gofmt -w . gofmt -w .
package: build
cp $(BINARY) $(BINARY)_v$(INSTALL_VERSION)
zip $(ZIP) $(BINARY)_v$(INSTALL_VERSION)
rm $(BINARY)_v$(INSTALL_VERSION)
clean: clean:
rm -f $(BINARY) rm -f $(BINARY) *.zip
tidy: tidy:
go mod tidy go mod tidy