main commit 4a1f69a ("deploy: make Phoenix redeploys archive-safe") adopted the Phoenix deployment scaffolding that was being iterated on in the now-closed PR #31, but three files that main's own install.sh, systemd units, deploy-currencicombo-8604.sh, and README.md all reference did not make it in. This PR adds exactly those three files, unchanged from the PR #31 branch, so main is internally consistent and actually bootable on CT 8604.
What main references but does not have
file
referenced by
failure mode without it
scripts/deployment/webapp-nginx.conf
systemd/currencicombo-webapp.service line 13 (ExecStart=/usr/sbin/nginx -c /etc/currencicombo/webapp-nginx.conf ...); install.sh line 36 (NGINX_FILE="${ETC_DIR}/webapp-nginx.conf") + line 232 (install -m 0644 "${SCRIPT_DIR}/webapp-nginx.conf" "${NGINX_FILE}")
webapp unit fails on start: nginx: [emerg] open() "/etc/currencicombo/webapp-nginx.conf" failed
deploy-currencicombo-8604.sh line 40 (: "${ORCHESTRATOR_UNIT:=currencicombo-orchestrator.service}") + lines 101/104 (systemctl stop/start); install.sh line 238 (install -m 0644 of that path) + line 248 (systemctl enable)
install.sh fails at the install step; deploy script fails at systemctl stop currencicombo-orchestrator.service with Unit ... not loaded
ops follows the README, hits No such file or directory
Provenance
All three files are byte-identical copies of the same three files from the closed PR #31 branch devin/1776898782-pr-aa-phoenix-migration (commit ded7d24). main already absorbed everything else from PR #31 as 4a1f69a; this PR closes the remaining gap.
Type of Change
Bug fix (non-breaking change which fixes an issue) — fixes missing files referenced by the committed deploy scaffolding
nginx -T on webapp-nginx.conf not run here (nginx not installed on this builder); exercised during PR #31 pre-close verification
CT 8604 cutover is artifacts-only: after merge, operator runs install.sh → deploy-currencicombo-8604.sh → applies the NPMplus /api/* location rule → runs the 5 public smokes documented in scripts/deployment/README.md.
Checklist
Code follows project style guidelines
Self-review completed
Comments added for complex code
Documentation updated (main's README already documents these three files; the gap was the files themselves)
No new warnings generated
Tests pass locally
Changes tested on multiple browsers (if applicable) — n/a
Additional Notes
install-prune-cron.sh is opt-in and not called from install.sh. The other two files are required for install.sh / deploy-currencicombo-8604.sh / currencicombo-webapp.service to work at all.
## Description
`main` commit `4a1f69a` ("deploy: make Phoenix redeploys archive-safe") adopted the Phoenix deployment scaffolding that was being iterated on in the now-closed PR #31, but three files that `main`'s own `install.sh`, systemd units, `deploy-currencicombo-8604.sh`, and `README.md` all reference did not make it in. This PR adds exactly those three files, **unchanged** from the PR #31 branch, so `main` is internally consistent and actually bootable on CT 8604.
### What main references but does not have
| file | referenced by | failure mode without it |
|---|---|---|
| `scripts/deployment/webapp-nginx.conf` | `systemd/currencicombo-webapp.service` line 13 (`ExecStart=/usr/sbin/nginx -c /etc/currencicombo/webapp-nginx.conf ...`); `install.sh` line 36 (`NGINX_FILE="${ETC_DIR}/webapp-nginx.conf"`) + line 232 (`install -m 0644 "${SCRIPT_DIR}/webapp-nginx.conf" "${NGINX_FILE}"`) | webapp unit fails on start: `nginx: [emerg] open() "/etc/currencicombo/webapp-nginx.conf" failed` |
| `scripts/deployment/systemd/currencicombo-orchestrator.service` | `deploy-currencicombo-8604.sh` line 40 (`: "${ORCHESTRATOR_UNIT:=currencicombo-orchestrator.service}"`) + lines 101/104 (`systemctl stop`/`start`); `install.sh` line 238 (`install -m 0644` of that path) + line 248 (`systemctl enable`) | `install.sh` fails at the install step; deploy script fails at `systemctl stop currencicombo-orchestrator.service` with `Unit ... not loaded` |
| `scripts/deployment/install-prune-cron.sh` | `README.md` step 4 (`bash /var/lib/currencicombo/repo/scripts/deployment/install-prune-cron.sh`); README backup-retention section | ops follows the README, hits `No such file or directory` |
### Provenance
All three files are byte-identical copies of the same three files from the closed PR #31 branch `devin/1776898782-pr-aa-phoenix-migration` (commit `ded7d24`). `main` already absorbed everything else from PR #31 as `4a1f69a`; this PR closes the remaining gap.
## Type of Change
- [x] Bug fix (non-breaking change which fixes an issue) — fixes missing files referenced by the committed deploy scaffolding
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update
- [ ] Refactoring (no functional changes)
## Related Issues
Supersedes closed PR #31.
## Testing
- [ ] Unit tests added/updated — n/a (deployment scaffolding only)
- [ ] E2E tests added/updated — n/a
- [x] Manual testing completed (on builder box, not yet on CT 8604)
Verification on the builder box:
- `shellcheck --severity=warning scripts/deployment/install-prune-cron.sh` → clean
- `bash -n scripts/deployment/install-prune-cron.sh` → clean
- `systemd-analyze verify scripts/deployment/systemd/currencicombo-orchestrator.service` → no errors on this unit
- `sudo bash scripts/deployment/install-prune-cron.sh --dry-run` → prints exact cron body, `RETAIN_DAYS=30`, `KEEP_MIN=5`, targeting `/var/lib/currencicombo/backups`
- `nginx -T` on `webapp-nginx.conf` not run here (nginx not installed on this builder); exercised during PR #31 pre-close verification
CT 8604 cutover is artifacts-only: after merge, operator runs `install.sh` → `deploy-currencicombo-8604.sh` → applies the NPMplus `/api/*` location rule → runs the 5 public smokes documented in `scripts/deployment/README.md`.
## Checklist
- [x] Code follows project style guidelines
- [x] Self-review completed
- [x] Comments added for complex code
- [x] Documentation updated (`main`'s README already documents these three files; the gap was the files themselves)
- [x] No new warnings generated
- [x] Tests pass locally
- [ ] Changes tested on multiple browsers (if applicable) — n/a
## Additional Notes
`install-prune-cron.sh` is opt-in and not called from `install.sh`. The other two files are required for `install.sh` / `deploy-currencicombo-8604.sh` / `currencicombo-webapp.service` to work at all.
main 4a1f69a 'deploy: make Phoenix redeploys archive-safe' adopted the
Phoenix deployment scaffolding from the abandoned PR #31 branch but
landed with three referenced-but-missing files. This PR adds exactly
those three files, unchanged from the PR #31 branch, so main is
internally consistent and bootable on CT 8604.
What main references but does not have
--------------------------------------
1. scripts/deployment/webapp-nginx.conf
Referenced by: systemd/currencicombo-webapp.service (ExecStart calls
'nginx -c /etc/currencicombo/webapp-nginx.conf') and install.sh
(NGINX_FILE="${ETC_DIR}/webapp-nginx.conf"; install -m 0644 of
"${SCRIPT_DIR}/webapp-nginx.conf").
Without this file: webapp unit fails on start with 'nginx: [emerg]
open() "/etc/currencicombo/webapp-nginx.conf" failed'.
2. scripts/deployment/systemd/currencicombo-orchestrator.service
Referenced by: deploy-currencicombo-8604.sh (line 40:
${ORCHESTRATOR_UNIT:=currencicombo-orchestrator.service};
lines 101/104 systemctl stop/start) and install.sh (line 238
install -m 0644 of
"${SCRIPT_DIR}/systemd/currencicombo-orchestrator.service";
line 248 systemctl enable).
Without this file: install.sh fails at the install step, deploy
script fails at 'systemctl stop currencicombo-orchestrator.service
Unit not found'.
3. scripts/deployment/install-prune-cron.sh
Referenced by: README.md (step 4: 'bash /var/lib/currencicombo/repo/
scripts/deployment/install-prune-cron.sh' and the 'Backup retention
/ pruning' section).
Without this file: ops follows the README, hits a 'No such file'
and has to reconstruct the pruner from prose.
Provenance
----------
All three files are verbatim copies of the same three files from the
closed PR #31 branch devin/1776898782-pr-aa-phoenix-migration (commit
ded7d24), which was the source PR #31 reviewers discussed when the
three ops improvements (loud-failure rollback, keep-min-5 prune cron,
/root/currencicombo-first-keys.txt 0600) were locked. main already
absorbed everything else from PR #31 as commit 4a1f69a.
Verification
------------
- shellcheck --severity=warning scripts/deployment/install-prune-cron.sh: clean
- bash -n on install-prune-cron.sh: clean
- systemd-analyze verify on currencicombo-orchestrator.service: clean
(only unrelated-host-service errors surface on this build box)
- sudo bash scripts/deployment/install-prune-cron.sh --dry-run: prints
the exact cron body with retain=30, keep-min=5, targeting
/var/lib/currencicombo/backups, as expected.
- nginx -T on webapp-nginx.conf: not run (nginx not installed on
build box); tested on the CT in PR #31's pre-close verification run.
Co-Authored-By: Nakamoto, S <defi@defi-oracle.io>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Description
maincommit4a1f69a("deploy: make Phoenix redeploys archive-safe") adopted the Phoenix deployment scaffolding that was being iterated on in the now-closed PR #31, but three files thatmain's owninstall.sh, systemd units,deploy-currencicombo-8604.sh, andREADME.mdall reference did not make it in. This PR adds exactly those three files, unchanged from the PR #31 branch, somainis internally consistent and actually bootable on CT 8604.What main references but does not have
scripts/deployment/webapp-nginx.confsystemd/currencicombo-webapp.serviceline 13 (ExecStart=/usr/sbin/nginx -c /etc/currencicombo/webapp-nginx.conf ...);install.shline 36 (NGINX_FILE="${ETC_DIR}/webapp-nginx.conf") + line 232 (install -m 0644 "${SCRIPT_DIR}/webapp-nginx.conf" "${NGINX_FILE}")nginx: [emerg] open() "/etc/currencicombo/webapp-nginx.conf" failedscripts/deployment/systemd/currencicombo-orchestrator.servicedeploy-currencicombo-8604.shline 40 (: "${ORCHESTRATOR_UNIT:=currencicombo-orchestrator.service}") + lines 101/104 (systemctl stop/start);install.shline 238 (install -m 0644of that path) + line 248 (systemctl enable)install.shfails at the install step; deploy script fails atsystemctl stop currencicombo-orchestrator.servicewithUnit ... not loadedscripts/deployment/install-prune-cron.shREADME.mdstep 4 (bash /var/lib/currencicombo/repo/scripts/deployment/install-prune-cron.sh); README backup-retention sectionNo such file or directoryProvenance
All three files are byte-identical copies of the same three files from the closed PR #31 branch
devin/1776898782-pr-aa-phoenix-migration(commitded7d24).mainalready absorbed everything else from PR #31 as4a1f69a; this PR closes the remaining gap.Type of Change
Related Issues
Supersedes closed PR #31.
Testing
Verification on the builder box:
shellcheck --severity=warning scripts/deployment/install-prune-cron.sh→ cleanbash -n scripts/deployment/install-prune-cron.sh→ cleansystemd-analyze verify scripts/deployment/systemd/currencicombo-orchestrator.service→ no errors on this unitsudo bash scripts/deployment/install-prune-cron.sh --dry-run→ prints exact cron body,RETAIN_DAYS=30,KEEP_MIN=5, targeting/var/lib/currencicombo/backupsnginx -Tonwebapp-nginx.confnot run here (nginx not installed on this builder); exercised during PR #31 pre-close verificationCT 8604 cutover is artifacts-only: after merge, operator runs
install.sh→deploy-currencicombo-8604.sh→ applies the NPMplus/api/*location rule → runs the 5 public smokes documented inscripts/deployment/README.md.Checklist
main's README already documents these three files; the gap was the files themselves)Additional Notes
install-prune-cron.shis opt-in and not called frominstall.sh. The other two files are required forinstall.sh/deploy-currencicombo-8604.sh/currencicombo-webapp.serviceto work at all.4a1f69a) a6a9d38bce