Skip to content

Snapcraft Action

Actions
GitHub Action for setting up Snapcraft
v2.1.1
Latest
Star (50)

Snapcraft Action

GitHub Action for setting up Snapcraft

Overview

This action…

  • Installs Snapcraft on Ubuntu/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.

Usage

Basic

To use this action, add the following step to your workflow:

- name: Install Snapcraft
  uses: samuelmeuli/action-snapcraft@v3

A full example:

name: My workflow

on: push

jobs:
  my-job:
    runs-on: ubuntu-latest
    env:
      SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_TOKEN }}
    steps:
      - name: Check out Git repository
        uses: actions/checkout@v3

      - name: Install Snapcraft
        uses: samuelmeuli/action-snapcraft@v3

      # You can now run Snapcraft shell commands
      - name: Use Snapcraft
        run: snapcraft --help

Log in

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. You can name it SNAPCRAFT_TOKEN for convenience.

Set SNAPCRAFT_STORE_CREDENTIALS environment variable either in:

  • root yml file: to be available for all jobs
  • inside a job: to be available inside a specific job (recommended), or
  • inside a step: to be available only in a specific step
env:
  SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_TOKEN }}

Finally, add the following option to your workflow step:

- name: Install Snapcraft
  uses: samuelmeuli/action-snapcraft@v3
  with:
    skip_install: true # optional, if already installed in an earlier step

Build using LXD

Using runs-on: ubuntu-20.04 or later, LXD is availabe by default.

- name: Install Snapcraft with LXD
  uses: samuelmeuli/action-snapcraft@v3
- name: Build snap
  run: sg lxd -c 'snapcraft --use-lxd'

Development

Suggestions and contributions are always welcome! Please discuss larger changes via issue before submitting a pull request.

Currently maintained by @casperdcl.

Related

Snapcraft Action is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.

About

GitHub Action for setting up Snapcraft
v2.1.1
Latest

Snapcraft Action is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.