ghaction-packagecloud is a simple github docker action that deploys debian or RPM packages to packagecloud.io.
The action runs the following:
package_cloud push <user>/<repository> <files>useris the packagecloud.io user; it doesn't have to be specified is the user is equal to the github user.repositoryis the only required parameter; it will usually include the OS and version, example:reponame/ubuntu/precise. That's better documented in https://packagecloud.io/docs#push_pkgfileshas the files to upload. Also optional - if not defined, the action uses all.deband.rpmfiles under the current directory.
Besides these parameters, the package_cloud script also needs the
API Token to update the repository. You can get that from
https://packagecloud.io/api_token after logging in. To pass it to the
github action, configure it as a secret in github - you can do that
by going to the repository's page, then going
to Settings, Secrets - and then pass it using the
PACKAGECLOUD_TOKEN environment variable.
Example workflow file:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- <build debian/rpm package>
- uses: docker://lpenz/ghaction-packagecloud:0.5
with:
repository: lpenz/debian/stretch
env:
PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}For a more complete example, here are some github repositories that use this action: execpermfix, ogle, ftpsmartsync.
packagecloud.io username. Optional, the default is the github user.
packagecloud.io repository. Required.
Enter this directory before pushing. Optional.
Mostly useful when the debian/RPM package is created in a subdirectory of the git repository.
.deb and .rpm files to push.
If not specified, use all .deb and .rpm files under the current directory. If none are found, search in all subdirectories.
This github action is actually a docker image that can be used locally or even in travis-ci. To do that, first download the image from docker hub:
docker pull lpenz/ghaction-packagecloud:0.5Then, run a container in the project's directory, for instance:
docker run --rm -t -u "$UID" -w "$PWD" -v "${PWD}:${PWD}" \
-e INPUT_REPOSITORY=lpenz/debian/stretch \
-e PACKAGECLOUD_TOKEN \
lpenz/ghaction-packagecloud:0.5It's worth pointing out that action parameters are passed as
upper case environment variables, prefixed with INPUT_.
The following .travis.yml runs the same thing in travis-ci:
---
language: generic
jobs:
include:
- install: docker pull lpenz/ghaction-packagecloud:0.5
- script: -<
docker run --rm -t -u "$UID" -w "$PWD" -v "${PWD}:${PWD}"
-e INPUT_REPOSITORY=raspbian/debian/stretch
-e PACKAGECLOUD_TOKEN
lpenz/ghaction-packagecloud:0.5