PAKman 7.2 Release Notes
PAKman is the build system that builds your application into an easily distributable package. We started out with a simple goal, to build a build system that is fast, reliable, minimizes dependencies on external tooling and finally produces packages that are small and easy to distribute. Today we’re happy to announce PAKman version 7.2. Check out the action on github marketplace
Let’s take a look at what’s in this release.
Faster Upgrades / Configuration Changes
Since version 7 is a major upgrade, there are a few breaking changes to be aware of. The format for the instellar.yml
has been changed quite abit. Below are some of the changes to be aware of.
Dependencies
The dependency section now has an optional field called trace: true
we introduced this flag because some programming languages had issues with dependency tracing. We recommend on setting this to trace: true
for all frameworks except Ruby on Rails.
Build
Previously you could only specify a single build destination
. We’ve changed this and now it supports specifying multiple build destinations.
Change
build:
destination: '_build/prod/rel/someapp/*'
To
build:
destinations:
- '_build/prod/rel/someapp/*'
Run
The run section also received a few clean ups. You can now specify a separate commands
section. Here is an elixir example:
run:
commands:
- name: migrate
binary: someapp
call: 'eval Someapp.Release.Tasks.migrate'
services:
- name: web
binary: someapp
start:
call: start
You’ll notice from above that the stop
section is now gone. This is because our bug fix ensures that s6
is directly supervising the application which means s6
can handle the stop
of our applications properly. This change gave us > 30% boost in upgrade speed across our applications, since now s6 can terminate applications much more effectively during the upgrade process.
Example Applications
We’ve also updated our documentation section to include more programming languages and example, if you wish to see how the new configuration should be written please see our Documentation.
If you’re unsure about how to upgrade please feel free to reach out to our support.
Reduced Dependency
In version < 7 all the apps built using PAKman still relied on an external github action for the Archiving
step. With the release of 7.2
this dependency is now gone. Everything required to build a package is now contained within the PAKman action. This means in .github/workflows/deployment.yml
you can remove the following:
- name: 'Archive'
uses: juankaram/[email protected]
with:
args: zip -r packages.zip /github/home/packages
Replace it with:
- name: 'Archive'
uses: upmaru/[email protected]
with:
entrypoint: /var/lib/pakman/bin/archive.sh
This will also help reduce build time since now github action will build not need to build a second action. It will simply use PAKman for all the steps.
Please make sure to select the correct action version based on your requirement of alpine version.
Availability
We’re incredibly proud of this release since it resolves many long standing issues, adds support for many languages and frameworks and really optimizes the build performance. We highly recommend this upgrade for all existing applications and all new applications moving forward.
PAKman 7.2 is available for upgrade now, you can safely upgrade your application to get the performance gains right away. Please see the main page on github marketplace for all available versions.