← Back to issue list

[Feature Request] Publish rock to Github's Container Registry

View original Github issue

Metadata

Project
craft-actions
Number
#5
Type
issue
State
open
Author
gruyaume
Labels
Created
2023-02-04 15:04:20+00:00
Updated
2023-02-06 16:50:49+00:00
Closed

Current evaluation

No evaluation has been recorded for this issue yet.

Issue body

## OVERVIEW First, good job on the project and the `rockcraft-pack` action, it' will definitely be useful. As more people and teams are building rocks, we also have to publish them somewhere. One of the registries used to publish such container images is [Github's container registry](ghcr.io). Right now, this is a great place to publish container images as it is well integrated with Github where our code, CI and permissions are already managed. Here the ask is for a **new** action to publish the created rock to [Github's container registry](ghcr.io). This action would fetch the artifact created by the `rockcraft-pack` action, login to `ghcr.io`, use skopeo to copy the file to docker-daemon and push it to `ghcr.io`. ### Usage In terms of API, this could look something like: ```yaml steps: - name: Checkout repository uses: actions/checkout@v3 - uses: canonical/craft-actions/rockcraft-publish-ghcr@main with: artifact_name: rock image_name: banana image_version: 1.1.1 organization: canonical ``` For this example, the action would have published the container image to `ghcr.io/canonical/banana:1.1.1`. `image_name` and `image_version` could default to values read from `rockcraft.yaml` and `organization` could default to `canonical` so that a minimal API could be: ```yaml steps: - name: Checkout repository uses: actions/checkout@v3 - uses: canonical/craft-actions/rockcraft-publish-ghcr@main with: artifact_name: rock ``` ### Current state Here's what I have to do right now to take the provided rock and publish it to `ghcr.io`: ```yaml steps: - name: Checkout repository uses: actions/checkout@v3 - name: Log in to the Container registry uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Install skopeo run: | sudo snap install --devmode --channel edge skopeo - name: Install yq run: | sudo snap install yq - uses: actions/download-artifact@v3 with: name: rock - name: Import and push to github package run: | image_name="$(yq '.name' rockcraft.yaml)" version="$(yq '.version' rockcraft.yaml)" rock_file=$(ls *.rock | tail -n 1) sudo skopeo \ --insecure-policy \ copy \ oci-archive:"${rock_file}" \ docker-daemon:"ghcr.io/gruyaume/${image_name}:${version}" docker push ghcr.io/gruyaume/${image_name}:${version} ``` ### Reference - https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry

Evaluation history

No evaluation history available.