diff --git a/.github/workflows/build_iso.yml b/.github/workflows/build_iso.yml index 9d87b75..b273cda 100644 --- a/.github/workflows/build_iso.yml +++ b/.github/workflows/build_iso.yml @@ -1,18 +1,16 @@ env: - version: v3.20 + version: 3.21 name: Alpine ISO Builder on: push: - tags: - - 'v*' jobs: build_ISOs: runs-on: ubuntu-24.04 container: - image: alpine:3.20 + image: alpine:3.21 steps: - name: Install software @@ -21,58 +19,72 @@ jobs: apk upgrade apk --no-cache add alpine-sdk build-base apk-tools alpine-conf \ busybox fakeroot syslinux xorriso squashfs-tools sudo mtools \ - dosfstools grub-efi + dosfstools grub-efi github-cli - uses: actions/checkout@v4 with: fetch-depth: 0 + - name: Fetch missing git tags + if: ${{ startsWith(github.ref, 'refs/tags/v') }} + run: | + git config --global --add safe.directory . + git fetch --tags --force + - name: Download aports run: git clone --depth=1 https://gitlab.alpinelinux.org/alpine/aports.git - name: Configure build keys run: echo | abuild-keygen -i -a - - name: Make ISO (${{ env.version }}) + - name: Make ISO run: | chmod +x *.sh - mv *.sh aports/scripts/ + cp *.sh aports/scripts/ cd aports/scripts/ ./mkimage.sh \ - --tag ${version} \ + --tag ${version}-$(date +%y%m%d) \ --arch x86_64 \ --profile docker \ --outdir ../../ \ - --repository https://dl-cdn.alpinelinux.org/alpine/${version}/main \ - --repository https://dl-cdn.alpinelinux.org/alpine/${version}/community + --repository https://dl-cdn.alpinelinux.org/alpine/v${version}/main \ + --repository https://dl-cdn.alpinelinux.org/alpine/v${version}/community - - name: Upload files + ./mkimage.sh \ + --tag ${version}-$(date +%y%m%d) \ + --arch x86_64 \ + --profile podman \ + --outdir ../../ \ + --repository https://dl-cdn.alpinelinux.org/alpine/v${version}/main \ + --repository https://dl-cdn.alpinelinux.org/alpine/v${version}/community + + - name: Upload ISO + if: ${{ ! startsWith(github.ref, 'refs/tags/v') }} uses: actions/upload-artifact@v4 with: - name: files - path: . - include-hidden-files: true - - release_ISOs: - runs-on: ubuntu-24.04 - needs: build_ISOs - steps: - - name: Download files - uses: actions/download-artifact@v4 - with: - name: files + name: alpine_${{ env.version }}_iso + path: ./*.iso - name: Release AlpDock ISO + if: ${{ startsWith(github.ref, 'refs/tags/v') }} env: GH_TOKEN: ${{ github.token }} run: | - echo -e "Changelog\n---------" > changelog.txt - git log --reverse --pretty=format:"%h %s" $(git describe --tags --abbrev=0 HEAD^)..HEAD >> changelog.txt + if git cat-file -t ${{ github.ref_name }} | grep -q '^tag$'; then + git tag -n ${{ github.ref_name }} --format="### %(subject)" > changelog.txt + else + echo "### Main changes:" > changelog.txt + git log --reverse --pretty=format:"- %h: %s" $(git describe --tags --abbrev=0 HEAD^)..HEAD | egrep -v 'fix:|minor:|typo:' >> changelog.txt + commits="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/compare/$(git tag --sort=-v:refname | sed -n 2p)...$(git tag --sort=-v:refname | sed -n 1p)" + echo -e "
\n\n**Full Changelog**: $commits" >> changelog.txt + fi + + sha256sum *.iso > sha256sums.txt gh release create ${{ github.ref_name }} \ + --title ${{ github.ref_name }} \ --verify-tag \ --latest \ - --draft \ --notes-file changelog.txt \ - *.iso + *.iso sha256sums.txt diff --git a/README.md b/README.md index 076be35..9b141ac 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -# AlpDock -Alpine Linux with docker preinstalled (Live Image) +# [AlpDock](https://github.com/Mexit/AlpDock) +Alpine Linux with `docker` and `podman` preinstalled (Live Images) -AlpDock includes only minimum amount of software needed to run Docker and SSH server. +AlpDock includes only minimum amount of software needed to run Docker, Podman and SSH server. ### Root account The root account does not have a password. To set it, type `passwd`. @@ -14,6 +14,6 @@ To configure other interfaces run `setup-interfaces` and then `service networkin By default, it is not possible to log into the root account via ssh: use `linux` account (pass: `linux`) ### Portainer -Type 'alpdock-run-portainer' to run Portainer. +Type `alpdock-run-portainer` to run Portainer. You can log into your Portainer Server by opening a web browser and going to: -https://localhost:9443 (Replace localhost with the relevant IP address) \ No newline at end of file +https://localhost:9443 (Replace localhost with the relevant IP address) diff --git a/genapkovl-docker.sh b/genapkovl-docker.sh index d11bf03..8fd765b 100644 --- a/genapkovl-docker.sh +++ b/genapkovl-docker.sh @@ -1,7 +1,6 @@ #!/bin/sh -e -alpinelinux="v3.20.3" -version="${alpinelinux%.*}" +version="3.21" HOSTNAME="$1" if [ -z "$HOSTNAME" ]; then @@ -35,6 +34,17 @@ makefile root:root 0644 "$tmp"/etc/hostname < "$FILENAME" + chown "$OWNER" "$FILENAME" + chmod "$PERMS" "$FILENAME" +} + +rc_add() { + mkdir -p "$tmp"/etc/runlevels/"$2" + ln -sf /etc/init.d/"$1" "$tmp"/etc/runlevels/"$2"/"$1" +} + +tmp="$(mktemp -d)" +trap cleanup EXIT + +mkdir -p "$tmp"/etc +makefile root:root 0644 "$tmp"/etc/hostname < /etc/sudoers.d/\$user && chmod 0440 /etc/sudoers.d/\$user +# Podman rootless support +modprobe tun +echo tun >> /etc/modules +echo \$user:100000:65536 >> /etc/subuid +echo \$user:100000:65536 >> /etc/subgid +EOF + +mkdir -p "$tmp"/usr/bin +makefile root:root 0755 "$tmp"/usr/bin/alpdock-run-portainer < $HOSTNAME.apkovl.tar.gz diff --git a/mkimg.docker.sh b/mkimg.docker.sh index 61fbbf2..d4abbec 100644 --- a/mkimg.docker.sh +++ b/mkimg.docker.sh @@ -11,4 +11,5 @@ profile_docker() { docker docker-bash-completion docker-cli-compose \ bash-completion procps util-linux readline findutils sed coreutils sudo e2fsprogs lvm2" apkovl="genapkovl-docker.sh" + hostname="alpdock" } diff --git a/mkimg.podman.sh b/mkimg.podman.sh new file mode 100644 index 0000000..a76d72f --- /dev/null +++ b/mkimg.podman.sh @@ -0,0 +1,15 @@ +profile_podman() { + title="Podman" + desc="Alpine with docker, SSH and other utils preinstalled." + profile_base + profile_abbrev="podman" + image_ext="iso" + arch="aarch64 x86 x86_64 ppc64le riscv64 s390x" + output_format="iso" + kernel_addons="xtables-addons" + apks="$apks \ + podman \ + bash-completion procps util-linux readline findutils sed coreutils sudo e2fsprogs lvm2" + apkovl="genapkovl-podman.sh" + hostname="alpdock" +}