31 Commits

Author SHA1 Message Date
Jose Diaz-Gonzalez
76b033234f fix: split report global keys into raw and computed across plugins
The `<plugin>-global-<property>` keys in `:report` output returned the resolved value with the built-in default substituted in, so external tooling could not distinguish a property that had been set globally to the default from one that had never been set. The bare keys for caddy, haproxy, and traefik global-only properties had the same shape. The `global-<property>` keys now hold the raw stored value and are empty when nothing has been set, and a new `computed-<property>` key holds the effective value used at runtime, falling back through the per-app value (where one exists), the global value, and the built-in default. The bare global-only keys for the three proxy plugins are removed in favor of the raw/computed pair. Closes #8631.
2026-05-23 00:05:33 -04:00
Jose Diaz-Gonzalez
c45b95fc4d fix: expose raw deploy-branch and keep-git-dir in git:report
The bare `deploy-branch` and `keep-git-dir` keys in `git:report` returned the computed (effective) value rather than the raw per-app value, with no separate `computed-*` key to distinguish "set per-app" from "falling back to global or default". This left external tooling unable to detect a per-app unset without out-of-band state. The bare keys now hold the raw per-app value (empty when unset) and new `computed-deploy-branch` and `computed-keep-git-dir` keys hold the effective value, matching the convention used by `nginx-vhosts`, `network`, and `builder`. Closes #8610.
2026-05-11 22:18:17 -04:00
Jose Diaz-Gonzalez
6eb8b8632c fix: enforce 0600 permissions on .netrc credentials file
The previous use of `touch` before `netrc set` allowed the file to inherit the umask and be world-readable, exposing stored git credentials to local users. The set and unset paths now explicitly chmod 0600 and chown to the dokku user, and the plugin install hook repairs permissions on already-affected installations.
2026-05-09 12:22:17 -04:00
Jose Diaz-Gonzalez
e8d8b0683a fix: preserve info flag in plugin reports with --global
The argument-handling block in each plugin's report command overwrote APP with --global before checking whether $1 actually held an info flag, so `dokku <plugin>:report --global --<plugin>-foo` always emitted the full report instead of the requested value. Reorder the conditionals across the sixteen plugins that share the pattern so the info-flag check runs first, and add a regression bats case for each one.
2026-04-30 21:05:46 -04:00
Jose Diaz-Gonzalez
b28e4e552b test: align git:report --global assertion with rendered key 2026-04-29 10:31:01 -04:00
Jose Diaz-Gonzalez
8282981361 feat: accept --global on :report subcommands
Every `:report` subcommand now recognizes `--global` as a scope selector that limits the report to globally-configured properties, including in JSON form via `--global --format json`. Previously this combination was rejected because `--global` was treated as an info flag, conflicting with `--format`. The shared `common.ParseReportArgs` helper now returns a `ReportArgs` struct exposing the parsed scope; each Go and bash report selects a global-only flag map when scope is global, and skips per-app verification.
2026-04-29 10:30:59 -04:00
Jose Diaz-Gonzalez
af6267f3b5 fix: restore default domains and reset proxy ports on vhost enable
Re-enabling vhost (via `proxy:enable`, `domains:enable`, or `domains:add` with no global VHOST) was leaving the app pinned to the random high port and the empty VHOST file from the previous disabled state, so the new catch-all vhost intercepted requests for the app's domain. The `domains-enable` trigger now restores default vhosts via `domains_enable`, and `pre-enable-vhost` clears any stored proxy ports so they can be recomputed to 80/443. Also fixes the netrc lookup in the `git:auth` test to read dokku's netrc file directly.
2026-04-27 14:43:20 -04:00
Jose Diaz-Gonzalez
8847fcb6b0 Merge pull request #8505 from dokku/8504-git-auth-status
Add git:auth-status to check netrc match
2026-04-27 01:25:46 -04:00
Jose Diaz-Gonzalez
769d029b0d fix: verify piped git:auth password via netrc get 2026-04-27 00:08:05 -04:00
Jose Diaz-Gonzalez
66c4b3b30e feat: add --format json to git:report and nginx:report
Mirrors the JSON output convention already used by scheduler:report, builder:report, network:report, and traefik:report. Both plugins now accept `--format json` to emit a single-line JSON object whose keys are the property names with the plugin prefix stripped. Combining `--format` with an info flag is rejected with an error message that matches the Go-based report helper.

Closes #8499
2026-04-26 23:30:22 -04:00
Jose Diaz-Gonzalez
65bdbefbea feat: add git:auth-status to check netrc match
Adds `git:auth-status HOST [USERNAME] [PASSWORD]` which exits 0 when the
configured `.netrc` entry matches the requested state and 1 otherwise,
allowing external tooling to detect whether `git:auth` would change
anything without reading `$DOKKU_ROOT/.netrc` directly. Both `git:auth`
and `git:auth-status` now also accept the password via `STDIN`.
2026-04-26 23:10:30 -04:00
Jose Diaz-Gonzalez
dd70fb823d feat: add the ability to skip setting the deploy-branch when running git:sync
Closes #8212
2026-01-08 02:19:22 -05:00
Jose Diaz-Gonzalez
6cb97e75c9 fix: update the master commit for the smoke-test-app repo 2024-11-13 04:06:58 -05:00
Jose Diaz-Gonzalez
4ec6fa3eb0 fix: always set the git rev env var when building an app via git:sync
Closes #6827
2024-09-28 23:47:48 -04:00
Andrew Kvalheim
f64cf3bdfa fix: dereference annotated tags
refs/heads/master cannot be updated to an annotated tag per se; the rev
given must first be resolved to a commit. ^{commit} recursively
dereferences the rev until a commit is found.

Resolves #6737 and test failure:

    # bats --filter annotated-tag tests/unit/git_3.bats
    git_3.bats
     ✗ (git) git:sync existing [--no-build annotated-tag]
       fatal: update_ref failed for ref 'refs/heads/master': cannot update ref 'refs/heads/master': trying to write non-commit object 6399bed673f513332f3d5d99e777e0262f42404c to branch 'refs/heads/master'
2024-03-18 17:30:19 -07:00
Jose Diaz-Gonzalez
efc35ab104 fix: correctly check if a repository has code or not in git plugin 2024-03-14 10:09:14 -04:00
Jose Diaz-Gonzalez
5d24b10144 chore: run shfmt 2024-03-14 06:10:52 -04:00
Jose Diaz-Gonzalez
58772984cd tests: check that the ref has been updated to the correct value 2024-03-14 05:28:37 -04:00
Jose Diaz-Gonzalez
4de97a1094 feat: add ability to only build synced repo if there are changes
Closes #6242
2024-03-14 04:42:28 -04:00
Jose Diaz-Gonzalez
9d332e9b2d chore: run shfmt against all test files 2022-07-21 14:57:42 -04:00
Jose Diaz-Gonzalez
2757f4157e debug: check the trace output to see what is leaving a lock 2021-06-08 23:02:58 -04:00
Jose Diaz-Gonzalez
7a710005a1 feat: implement git:auth command
Refs #4364
2021-02-28 04:47:37 -05:00
Jose Diaz-Gonzalez
3f25514e1a refactor: combine both clone and sync commands
Using a single command will allow users to not have to worry about the workflow they use to setup or update a given app.
2021-01-17 17:00:33 -05:00
Jose Diaz-Gonzalez
e3d0f693a7 tests: add tests for fetch 2021-01-17 17:00:33 -05:00
Jose Diaz-Gonzalez
97750f8b28 chore: minor updates to tests 2021-01-17 17:00:33 -05:00
Jose Diaz-Gonzalez
89e92749a6 tests: handle non-existent app 2021-01-17 17:00:33 -05:00
Jose Diaz-Gonzalez
e877a996be tests: split out tests and use a slimer smoke-test-app to speed up builds 2021-01-17 17:00:33 -05:00
Jose Diaz-Gonzalez
6bfbe0bb66 fix: create app for build test 2021-01-17 17:00:33 -05:00
Jose Diaz-Gonzalez
d728237697 chore: split tests 2021-01-17 17:00:33 -05:00
Jose Diaz-Gonzalez
279a706f78 feat: add tests for git:clone 2021-01-17 17:00:33 -05:00
Jose Diaz-Gonzalez
1a66102e30 feat: add tests for allow-host and public-key commands 2021-01-17 17:00:33 -05:00