A Community-supported capability to easily manage external dependencies for Liquibase Community 5.0+, enabling searching, listing, installing, and uninstalling Liquibase drivers, extensions, and utilities.
lpm is an experimental project. Issues can be reported here, but there is no guarantee of support.
lpm is integrated and available for use directly from within the Community CLI experience via the liquibase lpm command. Learn more with liquibase lpm --help
lpm is distributed as a single binary. Install lpm by downloading, unzipping, and moving it to a directory included in your system's PATH. Releases are available here.
lpm will make a best effort to locate the location of the liquibase_lib directory to store lpm-managed dependencies. It is recommended to set the LIQUIBASE_HOME environment variable.
Examples:
export LIQUIBASE_HOME=/usr/local/opt/liquibase/libexec
echo 'export LIQUIBASE_HOME=/usr/local/opt/liquibase/libexec' >> ~/.bashrc liquibase lpm <command>Getting Started for Liquibase Community 5.0+ only
liquibase lpmorliquibase lpm --download=true- [Optional]
liquibase lpm --lpmHome=/the/location/to/store/lpm/command <command>
Note: If run as an independent binary outside liquibase, or with pre-5.0 versions, drop the leading liquibase for the following commands
liquibase lpm addliquibase lpm completionliquibase lpm dedupeliquibase lpm helpliquibase lpm installliquibase lpm listliquibase lpm removeliquibase lpm searchliquibase lpm updateliquibase lpm upgrade
-
liquibase lpm add= add packages to theliquibase.jsonfile and to this Liquibase installation -
liquibase lpm update= updates all packages listed in theliquibase.jsonfile -
liquibase lpm update <package>= updates a specific packages listed in theliquibase.jsonfile -
liquibase lpm install= install to this Liquibase project all packages listed in theliquibase.jsonfile -
liquibase lpm install <package>= install to this Liquibase project a specific packages listed in theliquibase.jsonfile -
liquibase lpm upgrade= upgrade lpm binary -
liquibase lpm upgrade --all= upgrade lpm + all packages -
liquibase lpm upgrade <package>= upgrade specific package
lpm <command>- add
- completion
- dedupe
- help
- install
- list
- remove
- search
- update
- upgrade
lpm can generate shell completions for multiple shells. The following shells are available:
Generate the autocompletion script for lpm for the bash shell.
To load completions in your current shell session:
source <(lpm completion bash)
To load completions for every new session, execute once:
- Linux:
lpm completion bash > /etc/bash_completion.d/lpm- MacOS:
lpm completion bash > /usr/local/etc/bash_completion.d/lpmTo load completions in your current shell session:
source <(lpm completion zsh)
To load completions for every new session, execute once:
lpm completion zsh > "${fpath[1]}/_lpm"
To load completions in your current shell session:
lpm completion fish | source
To load completions for every new session, execute once:
lpm completion fish > ~/.config/fish/completions/lpm.fish
You will need to start a new shell for this setup to take effect.
This project is licensed under the Apache License 2.0. See the LICENSE file for details.
This project also includes software governed by the Mozilla Public License, v. 2.0.
github.com/hashicorp/go-version v1.6.0(http://mozilla.org/MPL/2.0/)
LPM uses an automated release process with minimal manual intervention.
3-Step Release Process:
-
Bump Version - Run the "Bump Version" GitHub Action
- Select
patch,minor, ormajor - Automatically updates VERSION file and creates tag
- Select
-
Build Artifacts - Run the "Attach Artifact to Release" GitHub Action
- Builds for all platforms (darwin, linux, windows, s390x)
- Generates checksums for all platforms
- Uploads artifacts to draft release
-
Publish - Review and publish the draft release on GitHub
- VERSION file automatically syncs after publishing
- Docker repository automatically updated with PR
That's it! β¨ The entire process is now mostly automated.
Bonus: After publishing, a PR is automatically created in the liquibase/docker repository to update the LPM version in all Dockerfiles.
To help with automated changelog generation, please label your PRs:
featureorenhancement- New features (π Features section)bugorfix- Bug fixes (π Bug Fixes section)documentation- Documentation changes (π Documentation section)dependencies- Dependency updates (π¦ Dependencies section)security- Security fixes (π Security section)
Most labels are automatically applied based on file paths and PR titles!
For complete release process documentation, troubleshooting, and best practices, see RELEASING.md.
https://github.com/liquibase/liquibase-package-manager/blob/master/CONTRIBUTING.md