GithubHelp home page GithubHelp logo

jirutka / setup-alpine Goto Github PK

View Code? Open in Web Editor NEW
91.0 5.0 14.0 42 KB

Easily use Alpine Linux on GitHub Actions, with support for QEMU user emulator

License: MIT License

Shell 100.00%
actions alpine-linux chroot ci github-actions qemu musl-libc cross-compile

setup-alpine's Issues

Post Run exits with failure - unmount "target is busy"

Thanks for the action this is very useful for us to run some tests in Alpine rather than Ubuntu

The action works well for us, but we get this failure during the Post Run

image

Unfortunately this marks the job as failed, so pull requests can't be merged etc.

Is there something we can do here? We're using jirutka/setup-alpine@v1 and branch v3.16

./setup-alpine.sh: line 208: update-binfmts: command not found

name: Build U-Boot on Tag

on:
  push:
    tags:
      - 'v*' # Trigger only for tags starting with 'v'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2

      - name: Setup latest Alpine Linux
        uses: jirutka/setup-alpine@v1
        with:
          arch: aarch64
          packages: >
            build-base
    
      - name: Run script inside Alpine chroot with aarch64 emulation
        run: uname -m
        shell: alpine.sh {0}
❄️ raptor@pelagus  20:40:52 29.02.2024 +00:00  1m47s71ms
├─ u-boot on  CICD via ❄️  impure (shell) 
╰───❯ act
[Build U-Boot on Tag/build] 🚀  Start image=catthehacker/ubuntu:act-latest
INFO[0000] Parallel tasks (0) below minimum, setting to 1 
[Build U-Boot on Tag/build]   🐳  docker pull image=catthehacker/ubuntu:act-latest platform= username= forcePull=true
INFO[0003] Parallel tasks (0) below minimum, setting to 1 
[Build U-Boot on Tag/build]   🐳  docker create image=catthehacker/ubuntu:act-latest platform= entrypoint=["tail" "-f" "/dev/null"] cmd=[] network="host"
[Build U-Boot on Tag/build]   🐳  docker run image=catthehacker/ubuntu:act-latest platform= entrypoint=["tail" "-f" "/dev/null"] cmd=[] network="host"
[Build U-Boot on Tag/build]   ☁  git clone 'https://github.com/jirutka/setup-alpine' # ref=v1
[Build U-Boot on Tag/build] ⭐ Run Pre Setup latest Alpine Linux
[Build U-Boot on Tag/build]   ☁  git clone 'https://github.com/webiny/action-post-run' # ref=3.1.0
[Build U-Boot on Tag/build]   ✅  Success - Pre Setup latest Alpine Linux
[Build U-Boot on Tag/build] ⭐ Run Main actions/checkout@v2
[Build U-Boot on Tag/build]   🐳  docker cp src=/home/raptor/src/u-boot/. dst=/home/raptor/src/u-boot
[Build U-Boot on Tag/build]   ✅  Success - Main actions/checkout@v2
[Build U-Boot on Tag/build] ⭐ Run Main Setup latest Alpine Linux
[Build U-Boot on Tag/build]   🐳  docker cp src=/home/raptor/.cache/act/jirutka-setup-alpine@v1/ dst=/var/run/act/actions/jirutka-setup-alpine@v1/
[Build U-Boot on Tag/build] 'runs-on' key not defined in Build U-Boot on Tag/build
[Build U-Boot on Tag/build] ⭐ Run Main sudo -E ./setup-alpine.sh
[Build U-Boot on Tag/build]   🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/1-composite-setup.sh] user= workdir=/var/run/act/actions/jirutka-setup-alpine@v1
[Build U-Boot on Tag/build]   ❓  ::group::Prepare rootfs directory
| ▷ Alpine will be installed into: /home/root/rootfs/alpine-latest-aarch64
[Build U-Boot on Tag/build]   ❓  ::endgroup::
[Build U-Boot on Tag/build]   ❓  ::group::Download static apk-tools
| ▷ Downloading https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v2.14.0/x86_64/apk.static
| apk: OK
[Build U-Boot on Tag/build]   ❓  ::endgroup::
[Build U-Boot on Tag/build]   ❓  ::group::Install qemu-aarch64 emulator
| ▷ Fetching qemu-aarch64 from the latest-stable Alpine repository
| fetch http://dl-cdn.alpinelinux.org/alpine/latest-stable/community/x86_64/APKINDEX.tar.gz
| Downloading qemu-aarch64-8.1.5-r0
| ▷ Unpacking qemu-aarch64 and installing on the host system
| ▷ Registering binfmt for aarch64
| ./setup-alpine.sh: line 208: update-binfmts: command not found
| 
| Error occurred at line 208:
|   205 |               rm ./$qemu_cmd-*.apk
|   206 | 
|   207 |               info "Registering binfmt for $qemu_arch"
| > 208 |               update-binfmts --import "$SCRIPT_DIR"/binfmts/$qemu_cmd
|   209 |       fi
|   210 | fi
|   211 | 
[Build U-Boot on Tag/build]   ❗  ::error title=setup-alpine: Install qemu-aarch64 emulator::Error occurred at line 208:                update-binfmts --import "$SCRIPT_DIR"/binfmts/$qemu_cmd (see the job log for more information)
[Build U-Boot on Tag/build]   ❌  Failure - Main sudo -E ./setup-alpine.sh
[Build U-Boot on Tag/build] exitcode '1': failure
[Build U-Boot on Tag/build] 'runs-on' key not defined in Build U-Boot on Tag/build
[Build U-Boot on Tag/build]   ⚙  ::set-output:: root-path=
[Build U-Boot on Tag/build]   ❌  Failure - Main Setup latest Alpine Linux
[Build U-Boot on Tag/build] exitcode '1': failure
[Build U-Boot on Tag/build] ⭐ Run Post Setup latest Alpine Linux
[Build U-Boot on Tag/build]   🐳  docker cp src=/home/raptor/.cache/act/jirutka-setup-alpine@v1/ dst=/var/run/act/actions/jirutka-setup-alpine@v1/
[Build U-Boot on Tag/build]   ✅  Success - Post Setup latest Alpine Linux
[Build U-Boot on Tag/build] 🏁  Job failed
Error: Job 'build' failed

Readme error?

In the Set up and use multiple Alpine environments in a single job section, shell-name: alpine-aarch64.sh is specified for both of the first two steps. If I understand the purpose of shell-name and the rest of the example correctly, the first one should be shell-name: alpine-x86_64.sh.

Issue with aarch64 emulation

Thank you for making this action it's much more elegant than using docker.

It tried this out last night and ran into an issue with aarch64 simulation.

When I ran the native x86_64 version things worked as expected however when I switched the arch to aarch64 I got a failed build.

You can see the example here.

https://github.com/upmaru-stage/locomo/actions/runs/6598676983/job/17927100353

After it failed the job kept running so I had to manually cancel

Here is the native version that succeeded

https://github.com/upmaru-stage/locomo/actions/runs/6598606683/job/17926843672

Detect native arch dynamically

Currently from what I read from the setup script. It seems anything which is not x86 will setup qemu. However in the use case where we're using a self hosted runner that the host is natively aarch64 it should not setup qemu.

Thank you!

Man, just thank you for this awesome work! ❤️

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.