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"
+}