Woodpecker CI plugin to publish Debian packages using on Aptly API
ce4d6a65e3
The repository name could now be computed from prefix, distribution and component names. Format: {prefix}-{distribution}-{component} Note: if the default prefix is specified ("."), it will not be used to compute the repository name. So, all works is now done by itering on detected changes files. Foreach of then: - the changes file is parsed to detect the source package name, the distribution and included files - the repository name is computed (if not specified in environment) - the current published distribution is retreived using APTLY publish API to: - check it was already manally published a first time - check it used a snapshot kind of sources - retreive other components source snapshot - Upload the changes file and all its included files using APTLY File Upload API in a directory named as the source package - Include the changes file using APTLY Local Repos API - Compute a snapshot name for the repository based on the current date and the repository name. Format: YYYYMMDD-HHMMSS-{repository name} - Create a snapshot of the repository using APTLY Local Repos API - Update the published distribution with this new snapshot as source of the specified component (default: main) and keeping other components source snapshot. |
||
---|---|---|
.gitignore | ||
.pylintrc | ||
.woodpecker.yml | ||
aptly-publish | ||
Dockerfile | ||
README.md |
Woodpecker CI plugin to publish Debian package on a Aptly repository
This docker image could be used as an Woodpecker CI plugin to publish one (or more) Debian package on a Aptly repository using its API.
This plugin will try to :
- locate all
changes
files in thedist
directory (that matchedsource_name
if provided) - extract files that are mentioned by the changes files and upload it using Aptly files API. Files are published on a subdirectory of the name of the source package
- include all processed changes files using Aplty repos API
- create a snapshot of the repository named using current datetime and repository name (format:
YYYYMMDD-HHMMSS-repo
) using Aptly snapshot API - update the published snapshot of the repository using Aptly publish API
Usage
The below pipeline configuration demonstrates simple usage:
pipeline:
publish:
image: brenard/aptly-publish
settings:
api_url: https://your.aptly.tld/api
api_username: myproject
api_password:
from_secret: aptly_api_password
repo_name: stable
path: dist
source_name: myproject
Parameters:
- api_url: Your Aptly API URL (required)
- api_username: Username to authenticate on your Aptly API (required)
- api_password: Password to authenticate on your Aptly API (required)
- repo_name: Repository name to publish on (optional, default:
stable
) - path: Path to the directory where files to publish are stored (optional, default:
dist
) - source_name: Name of the source package to publish (optional, default: all
changes
files are will be publish)