canonical / action-build

A Github action for building Snapcraft projects
MIT License
42 stars 22 forks source link

action-build doesn't build arm64 snaps #38

Closed Guillaumebeuzeboc closed 2 years ago

Guillaumebeuzeboc commented 2 years ago

Specifying the arm64 (and I guess any architecture other than amd64) is still building snaps for amd64

action-build doesn't seem to use the architecture.

Here is the example GitHub action file using snapcore/action-build. It's meant to build an amd64 and an arm64 snap. But in the arm64 build we can see that the architecture is ignored and that everyhting is happening on amd64 Complete github action log file We can see that APT is pulling amd64 package And that the final snap is an amd64 one.

Is there a way to enable arm64 snap build on GitHub Action?

sergiusens commented 2 years ago

How are you setting up the ubuntu-latest instance to be an arm64 one?

FWIW, github actions run locally to the machine that was setup, it does not use the architecture entry to dispatch jobs.

To set something up that would use this, you would need to setup self hosted runners

Guillaumebeuzeboc commented 2 years ago

I thought

    strategy:
      matrix:
        architecture:
        - linux/amd64
        - linux/arm64

was setting up an instance for arm64. But apparently this is just setting the variable architecture. I didn't set up a self hosted runner, I thought GitHub was supporting arm64 by default. Since GitHub is not offering arm64 by default, this issue is irrelevant. Closing it.

jhenstridge commented 2 years ago

Yep. To build an arm64 snap with this action, you'd need to host your own runner.

I know @diddledani wrote an alternative action that tries to work with the runners Github provides via qemu-user and docker, but it sounds like it might not work so well with current snapd versions.

lucyllewy commented 2 years ago

yes, my docker-based action is completely broken with recent snapd... I still need to dig into it but I keep procrastinating and doing something else instead.