Repository navigation
chore(sync): integrate Dokploy canary through eaffeba - #46
Merged
Merged
Conversation
…date-server-no-service fix(server): fail fast when update is triggered without a dokploy docker resource
…oy#5666) Deleting a compose service from the project page called compose.delete without deleteVolumes, which the schema required, so the request failed validation. Defaulting it to false matches the service-page dialog's default and keeps API callers that omit it working. Closes Dokploy#5658
…ret-decrypt fix(encryption): keep env vars readable after leaving the legacy auth secret
…e-poll fix(environment): keep saved env in the editor after save
…s-form fix(cluster): load saved replicas and registry in cluster settings
…ploy#5682) * fix(deploy): skip untagged GHCR package events in docker webhook GHCR sends a registry_package event for every manifest of a push, including untagged per-platform manifests and attestations. Those had no tag to compare, so each one triggered a deployment of the configured image. Answer 200 and skip them instead. Refs Dokploy#5681 * test(deploy): cover docker webhook tag handling Refs Dokploy#5681
…okploy#5667) * fix(logs): return empty result when readLogs search has no matches getContainerLogs piped docker logs into grep, so a search with no matches exited with code 1 and the readLogs endpoints answered 500. tail was also applied before grep, so only the last N log lines were searched. When a search is given, grep the logs (still bounded by since) and apply tail to the matching lines instead. The pipe now ends with tail, so no matches returns an empty string. Closes Dokploy#5621 * fix(logs): surface unreadable logs when a search has no matches grep also filters out Docker's own error message, so a failed log read looked like a search with no matches. When a search returns nothing, run docker logs --tail 0 to confirm the logs are readable, which throws with Docker's error if they are not. Move the search pipeline into buildLogSearchCommand and test it against real shell output: no matches, matches older than the last tail lines, tail on matches, and search text with single quotes. * fix(logs): keep partial output when a log search exceeds the exec buffer The search read had moved outside the try/catch that returns partial stdout when exec exceeds its maxBuffer, so a search with a lot of matching output failed instead of returning what was read. Share that recovery between the search and plain reads; the readability check still throws. * fix(logs): stop grep reading a search starting with "-" as an option The search regex allows a leading "-", so a search like "-v" was parsed by grep as an option. Since the pipe ends with tail, grep's usage error came back as an empty result. Pass "--" before the pattern and test a search for "-v" against real shell output. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * [autofix.ci] apply automated fixes --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What is this PR about?
This PR integrates Dokploy upstream
canarythrougheaffeba4a(2026-10-26). The fork last synced at3efa90ea0in #45, so the range is3efa90ea0..eaffeba4a: 11 commits across 8 upstream changes. All of them are fixes; there are no new features.Upstream changes:
settings.updateServernow fails with a clear error when Dokploy isn't running as a Docker Swarm service, instead of silently doing nothing (fix(server): fail fast when update is triggered without a dokploy docker resource Dokploy/dokploy#5676). The UI toast now shows the server's error message.BETTER_AUTH_SECRET(decrypt-only fallback key). Deploys now fail with a clear error when env vars can't be decrypted, instead of deploying with them silently dropped (fix(encryption): keep env vars readable after leaving the legacy auth secret Dokploy/dokploy#5779).compose.deletedefaultsdeleteVolumestofalse, so deleting from the project page no longer fails validation (fix(compose): default deleteVolumes to false on compose.delete Dokploy/dokploy#5666).registry_packageevents (per-platform manifests, attestations) are skipped with a 200 instead of each one triggering a deployment (fix(deploy): skip untagged GHCR package events in docker webhook Dokploy/dokploy#5682).readLogssearch with no matches returns an empty result instead of a 500, and the search now runs over the whole log beforetailis applied (fix(logs): return empty result when readLogs search has no matches Dokploy/dokploy#5667).Integration review
The merge had no conflicts. Overlap with fork-only code:
routers/settings.tsupdateServer: upstream's newgetDockerResourceType("dokploy")guard lands above the fork's update path. The fork still callsreloadDockerResource("dokploy", undefined, data.latestVersion), which keeps the running image's repository (GHCR fork namespace) and thestart-firstSwarm update. The fork runs as thedokploySwarm service, so the guard passes.utils/docker/utils.ts: the new undecryptable-env check sits after the fork's vault-reference check inprepareEnvironmentVariables; both are kept.services/docker.ts: the log-search rewrite uses localexec, which the fork doesn't change.Fork behavior checked:
hasValidLicense,isEnterpriseCloudorlicenseKeyin non-test code.remoteStream.ts; thepipeBetweenServersunpipe/resume fix is still present.noUnusedTemplateLiteralerrors inherited from upstream'sservices/docker.ts, fixed in3840dfec1.CLAUDE.mdProduct Overview is unchanged: this range adds no features.Migrations, dependencies, environment
migration:generatereported "No schema changes" on both runs (thecompose.tschange is a Zod default only).pnpm install --frozen-lockfilepasses.compose.deletedeleteVolumesbecomes optional.Verification (local)
pnpm install --frozen-lockfile: passgenerate:openapi: pass (654 endpoints)pnpm run format-and-lint: pass (0 errors, after3840dfec1)pnpm run typecheck --checkers 2) forpackages/server,apps/dokploy,apps/apiandapps/schedules: passapplication.real.test.tsREAL deployment tests, which needdocker build/nixpacks build; this machine has neither binary. These are infra-only failures, the same as in chore(sync): integrate Dokploy canary through 5df820a #38–chore(sync): integrate Dokploy canary through 3efa90e #45.update-server.test.tsexpected upstream's inlinespawnAsync("docker", ["service", "update", …]). The fork updates throughreloadDockerResource("dokploy", undefined, latestVersion)(image-repo preservation), so the test failed with the shared mock. I changed the test to assert the fork's call instead (9699177e8); the fork's code is unchanged and all 4 tests in the file pass.BETTER_AUTH_SECRET(never printed or stored): passHosted checks
None ran. GitHub Actions created no runs for this PR, so it stays a draft and is not auto-merged: the rule requires every hosted check to pass. Mergeability against
mainis clean.This is the same outage as #45: no workflow in this repo has run since Release on 2026-10-18 21:21 UTC, and the push of #45's merge (
2b7355732) tomaindidn't start Release either.allowed_actions=all), and the "Pull Request", "Release" and GHCR workflows are allactive.opened, closing and reopening the PR, and pushing an empty commit (543529622), polling 5 minutes after each. Every attempt gave 0 runs.Next step: check the repo's Actions tab and the account's Actions/billing status. Once runs are created again, pushing to this branch (or the next scheduled sync) will run the checks.
Risk / rollout / rollback
Risk is low: small bug fixes, no migrations or dependency changes.
0185if it hasn't been deployed yet).Checklist
canarybranch. (This branch is based on the fork'smainand integrates upstreamcanary.)Issues related (if applicable)
Not applicable for this upstream integration PR.
🤖 Generated with Claude Code