Releases: dmkenney/xamal
Releases · dmkenney/xamal
v0.4.1
Changed
- Interactive SSH sessions now use OTP 28's supported raw terminal mode
(:shell.start_interactive({:noshell, :raw})) when available, instead of
taking over fd 0 with a port. This removes the "stealing control of fd=0"
path on newer OTP releases. OTP 26/27 keep the previous fd/stty approach as
a fallback, which now also handles macOS/BSDstty -f.
v0.4.0
Changed
- Renamed the build tasks away from the registry-derived
push/pull
verbs, which were misleading for a tarball-over-SSH workflow (nothing is
pushed to a registry, and "pull" actually uploaded to the server):mix xamal.build.push→mix xamal.build(build the tarball locally)mix xamal.build.pull→mix xamal.build.upload(upload the tarball to servers)mix xamal.build.deliverandmix xamal.build.detailsare unchanged.- The
--skip-pushdeploy option is renamed to--skip-build(it skips the
build and uploads an existing tarball). These are hard renames with no
deprecation aliases.
Added
CONTRIBUTING.mddocumenting the development workflow, the## [Unreleased]
changelog convention, and the maintainer release process.
v0.3.2
Changed
- Release tarballs now upload via the system
scpbinary when an on-disk SSH
key (ssh.keys) is configured, instead of Erlang's SFTP channel. SFTP's small
window made large transfers slow (observed ~9 min for a ~120 MB tarball); scp
runs at full link speed. Flows without an on-disk key (key_datafrom a
secrets manager, or an SSH agent) continue to use the in-VM SFTP channel, as
does the fallback when noscpbinary is present.
Fixed
- The release workflow no longer fails when a changelog entry contains
backticks or$(). Release notes are now passed togh release createvia
--notes-fileinstead of being interpolated into the command, so shell
metacharacters in the notes are not executed.
v0.3.1
Fixed
- Per-task flags are no longer rejected when they lead the arguments. Commands
likemix xamal.app.logs -f(and-n,--since,--grep) failed with
Unknown option; the global option parser now forwards unrecognized flags to
the task instead of raising. - Remote commands keep their own flags.
mix xamal.server.exec df -h /no
longer has-h /consumed as the global--hostsoption; option scanning
stops at the first positional argument. mix xamal.app.execno longer drops command flags other than-i.- Interactive SSH sessions (
mix xamal.app.exec -i,mix xamal.iex) resolve
the real terminal device instead of assuming/dev/ttyis openable, so they
work when the BEAM runs without a controlling terminal. mix xamal.rollbackno longer prints its "no previous version" error twice.
Added
--skip-pushdeploy option to distribute an already-built release instead of
rebuilding.
Removed
mix xamal.shell. It mirrored Kamal'sshell(a bash session inside the
running container), but Xamal deploys native releases on the host, so it only
duplicatedmix xamal.iex. Usemix xamal.iexfor a remote console or
mix xamal.server.execfor host commands.
v0.3.0
See UPGRADING.md for step-by-step migration instructions.
Added
- New
mix xamal.prunetask to remove old releases beyond the retained count. - New
mix xamal.shellandmix xamal.iextasks to open a remote shell or IEx
session against the running release. - New
mix xamal.migratetask to run the release migrator (<App>.Release.migrate). - New
mix xamal.server.logstask to show Caddy/proxy logs from servers. - New
mix xamal.app.starttask to start the service on its active port without a swap. - New
mix xamal.app.versiontask to show the deployed version per host. - New
mix xamal.app.stale_releasestask to preview releases that pruning would remove. - New
mix xamal.versiontask to print the installed Xamal version. - Hex packaging metadata, badges, and HexDocs configuration.
Changed
- Breaking: Replaced the escript CLI with Mix tasks (
mix xamal.*) as the
public command surface. Invoke commands viamix xamal.<task>instead of the
previousxamalescript binary, and install Xamal as a Mix dependency rather
than a standalone binary. - Breaking: Configuration is now Elixir config in
config/xamal.exsinstead
ofconfig/deploy.yml, with destination overrides in
config/xamal/<destination>.exs. EEx templating is replaced by plain Elixir
expressions (e.g.System.get_env/1). - Mix tasks are grouped under a "Mix Tasks" section in the generated docs.
Removed
- The
xamalescript binary and theinstall.shinstaller that downloaded it.
v0.2.0
Bump version to 0.2.0 and add --version flag
v0.1.0
Add install script and GitHub Actions release workflow Lower Elixir requirement to ~> 1.15, pin yaml_elixir to ~> 2.11.0, add one-liner installer and CI workflow that builds and publishes the escript on tagged releases.