WIP: Introduce release assets with debian repository

The basic implementation of Debian repository Build on top of extended GitLab Releases.

What this MR does?

  1. Extend Releases with Assets: it works similar to GitHub Releases,
  2. Makes GitLab aware of Assets type,
  3. Makes GitLab parse Debian packages,
  4. Makes GitLab expose Runner-compatible API for uploading assets to Releases,
  5. Makes GitLab expose Debian-compatible, signed repository,
  6. Makes Release Assets support Object Storage, that is used by Artifacts Storage,
  7. Debian repository is signed by current-user gpg-key,

GitLab Releases

GitLab Releases are extended with files: Screen_Shot_2017-06-23_at_17.41.02

GitLab API

In order to upload file to release, execute:

curl -F file=@libmali-rk-dev_1.5-4_armhf.deb -F private_token=my-token/or-runner-token http://localhost:3000/api/v4/projects/1/repository/tags/v1.1.0/release/asset   

Debian repository

Adding to /etc/apt/sources.list.d/gitlab.list:

echo deb / > /etc/apt/sources.list.d/gitlab.list

Runner integration

  1. Build Debian package,
  2. Upload to GitLab using Release Asset API.

Makes Debian be aware of packages, and makes them installable, by version and architecture.

Why Debian?

I do know Debian package format, so it was easy to do for me. This can easily be transformed into Maven/Gem/Pypi/etc.

The status

It is proof of concept. I spend 3 hours on it :)

Edited by Kamil Trzcińśki