DEV Community

Cover image for Publishing Alpine Linux packages using GitHub actions
Iván Valdés
Iván Valdés

Posted on • Updated on

Publishing Alpine Linux packages using GitHub actions

Not so long ago, I decided to install Alpine Linux on some compact laptops I use when I'm out and about. One of them is an 11" 2015 Macbook Air. I have often installed Linux on Macbooks, but the experience could be more optimal, as there are many issues with the firmware support, as most of the time is closed. Alpine would be an excellent fit for this old Macbook, as the RAM and CPU specs are fundamental, and any other modern OS (macOS or other Linux distribution) would make it slow and unusable.

However, there were two firmware drivers that I couldn't find for this Macbook:

  • The wireless network card (broadcom-wl)
  • The FaceTime HD webcam (facetimehd)

To make this portable laptop something I could use when I'm not at home and to be able to work and take video calls using Zoom. I needed these two to work. So, with the deprecation of the non-free aports repository, I needed to do it from scratch if I wanted to build them. Given that the laptop has limited resources, I didn't want to create the apks on it, so I made them on my main computer and installed the packages from the .apk files. This worked, but then I wanted to host the packages somewhere, so I could install them by adding a new repository.

After searching GitHub, I found an action that builds the packages, but it stops there. It doesn't publish them anywhere. So, I wrote a GitHub action to release Alpine Linux APKs to its repository page. I wanted to build an index page for the repository's packages, so I wrote tpl (interested on reading about it? check my previous post) to make this easy. And this is what it looks like:

GitHub pages screenshot

Given that Alpine Linux doesn't keep previous versions of the packages; at work, we needed to lock some packages (i.e., Docker) to an old version. I thought this would also be an easy way to build and publish these packages.

Find the documentation at the repository and GitHub's marketplace. Pull Requests and new features are welcome.

GitHub Repo

Top comments (1)

Collapse
 
dyfet profile image
David Sugar

I might want to do something similar with woodpecker. Building an alpine pkg when I update a tag and publishing it to gitea (which supports alpine repos) could be very useful. The problem only is "which" Alpine, as at any given time there are 4 active releases, as well as edge.