GitHub Action for setting up Snapcraft
This action…
- Installs Snapcraft on Ubuntu 18.04+/macOS
- Optionally logs you in to the Snap Store
- Allows you to run Snapcraft commands in your GitHub Actions workflows
Note that the more recently created snapcore/action-build and snapcore/action-publish effectively copy the use_lxd
strategy (below). Building using this actions still takes ~3:30 min less time than snapcore/action-build.
To use this action, add the following step to your workflow:
- name: Install Snapcraft
uses: samuelmeuli/action-snapcraft@v1
A full example:
name: My workflow
on: push
jobs:
my-job:
runs-on: ubuntu-18.04
steps:
- name: Check out Git repository
uses: actions/checkout@v2
- name: Install Snapcraft
uses: samuelmeuli/action-snapcraft@v1
# You can now run Snapcraft shell commands
- name: Use Snapcraft
run: snapcraft --help
This action can also log you in to the Snap Store. For this to work, you need an Ubuntu One account.
You will also need a Snap Store login token. To obtain one, run the following command on your machine:
snapcraft export-login --snaps SNAP_NAME --channels edge -
NOTE: You will need to manually push a package to the Snap Store to get a valid SNAP_NAME first.
Copy that token and add it as a secret to GitHub Actions. You can do this in your GitHub repository under Settings → Secrets. The secret must be called snapcraft_token
.
Finally, add the following option to your workflow step:
- name: Install Snapcraft
uses: samuelmeuli/action-snapcraft@v1
with:
snapcraft_token: ${{ secrets.snapcraft_token }}
skip_install: true # optional, if already installed in an earlier step
LXD (runs-on: ubuntu-18.04
) is for now likely the easiest way to get snapcraft
to build snaps. This is an alternative to using multipass
(GitHub VMs give the error launch failed: CPU does not support KVM extensions.
when trying to use multipass
).
- name: Install Snapcraft with LXD
uses: samuelmeuli/action-snapcraft@v1
with:
use_lxd: true
- name: Build snap
run: sg lxd -c 'snapcraft --use-lxd'
Suggestions and contributions are always welcome! Please discuss larger changes via issue before submitting a pull request.
Currently maintained by @casperdcl.
- Lint Action – GitHub Action for detecting and fixing linting errors
- Electron Builder Action – GitHub Action for building and releasing Electron apps
- Maven Publish Action – GitHub Action for automatically publishing Maven packages
- snapcore/action-build – GitHub Action for installing LXD and Snapcraft, and building snaps
- snapcore/action-publish – GitHub Action for logging in and pushing to the Snap Store