- Notifications
You must be signed in to change notification settings - Fork12
A Github action for publishing snaps
License
canonical/action-publish
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This is a Github Action that can be used to publishsnappackages to the Snap Store. In most cases, itwill be used with thesnapcraft-build-action
action to build thepackage. The following workflow should be sufficient for Snapcraft 7 or later:
jobs:build:runs-on:ubuntu-lateststeps: -uses:actions/checkout@v4 -uses:snapcore/action-build@v1id:build -uses:snapcore/action-publish@v1env:SNAPCRAFT_STORE_CREDENTIALS:${{ secrets.STORE_LOGIN }}with:snap:${{ steps.build.outputs.snap }}release:edge
Alternatively, on Snapcraft 6 and older:
jobs:build:runs-on:ubuntu-lateststeps: -uses:actions/checkout@v4 -uses:snapcore/action-build@v1id:build -uses:snapcore/action-publish@v1with:store_login:${{ secrets.STORE_LOGIN }}snap:${{ steps.build.outputs.snap }}release:edge
This will build the project, upload the result to the store, andrelease it to theedge
channel. If therelease
input parameter isomitted, then the build will not be uploaded but not released.
In order to upload to the store, the action requires logincredentials. Rather than a user name and password, the action expectsthe data produced by thesnapcraft export-login
command.
As well as preventing the exposure of the password, it also allows thecredentials to be locked down to only the access the action requires:
$ snapcraft export-login --snaps=PACKAGE_NAME \ --acls package_access,package_push,package_update,package_release \ exported.txt
This will produce a fileexported.txt
containing the login data.The credentials can be restricted further with the--channels
and--expires
arguments if desired.
In order to make the credentials available to the workflow, theyshould be stored as a repository secret:
- choose the "Settings" tab.
- choose "Secrets" from the menu on the left.
- click "Add a new secret".
- set the name to
STORE_LOGIN
(or whatever is referenced in the workflow), and paste the contents ofexported.txt
as the value.
About
A Github action for publishing snaps