Commit Graph
6 Commits
Author SHA1 Message Date
max-voitcov 3ddce62647 Reject volume mounts that silently never persist
A `dokploy_mount` with `type = "volume"` and no `volume_name` was accepted
by both this provider and Dokploy. Dokploy renders the mount as
`{Source: volumeName || "", Target: mountPath}`, and Docker reads an empty
source as an anonymous volume: every deploy created a fresh one and orphaned
the last, so the data never survived a redeploy while disk usage climbed.
Nothing errored at any point, which is what made it worth catching here.

The pairing is now checked at plan time, before anything is created, and the
error explains the consequence rather than only the rule. The same validator
covers `bind` without `host_path` and `file` without `file_path`, and rejects
a field set against the wrong type, which Dokploy would otherwise ignore.

Verified against a live v0.30.2 instance: the offending config plans cleanly
before the change and is refused after it.
2026-08-26 00:40:03 +03:00
max-voitcov 0890384552 Add ConfigValidators and CreateDefaults hooks to the generic resource
Two things ResourceSpec could not express: plan-time checks that span
several attributes, and create bodies that need a key Dokploy insists on
receiving but the model cannot produce. Both are used by the commits that
follow.
2026-08-26 00:39:51 +03:00
usr_unknown 209079cf68 Stop paying the unreachable cache server's timeout
build / build (push) Successful in 2m37s
release / release (push) Successful in 9m29s
setup-go caches by default. act_runner's built-in cache server binds to
an address job containers cannot route to, so every restore and save
blocks until it times out:

  Failed to restore: getCacheEntry failed: connect ETIMEDOUT 10.0.2.12:40789
  Failed to save:    reserveCache failed: connect ETIMEDOUT 10.0.2.12:40789

That was 634s of a 946s build. Disable caching until the runner's
cache.host points somewhere reachable, then turn it back on.
v0.1.1
2026-08-09 13:57:18 +03:00
usr_unknown c6f1942950 Clarify which Terraform registry Gitea actually has
build / build (push) Successful in 15m46s
release / release (push) Failing after 26m57s
Gitea lists "Terraform" among its package registries, which reads as if
the provider could be published there. It stores remote state for the
http backend -- not modules, not providers.
v0.1.0
2026-08-09 12:49:11 +03:00
usr_unknown abe4444d2b Publish from Gitea: releases, CI and install docs
Gitea implements no Terraform provider registry, so distribution goes
through release archives plus a filesystem mirror. GoReleaser targets
the Gitea release API; the archive names follow HashiCorp's convention
because that is the only shape a filesystem mirror recognises.

No GPG signing: signatures are a registry-protocol requirement and a
filesystem mirror never checks them.

Cross-repo links point at Gitea; Go module paths deliberately do not.
2026-08-09 12:37:07 +03:00
usr_unknown a6d8aa8b52 A Terraform provider for Dokploy
Plugin-framework provider covering projects, environments, applications,
Compose stacks, managed databases, domains, mounts, ports, redirects,
basic auth, registries, SSH keys, certificates and backup destinations,
over Dokploy's tRPC-over-REST API.

The shim package exposes the provider to other Go modules, which is how
pulumi-dokploy bridges it.
2026-08-09 12:17:26 +03:00