Compare commits

...

12 commits

Author SHA1 Message Date
MexIT
cce54a0ee7 fix: Fix git tags 2025-01-05 18:16:05 +01:00
MexIT
24e56fd8fe minor: Update Releases 2025-01-05 16:44:28 +01:00
MexIT
e6aae4567c Update /etc/motd 2025-01-03 20:47:09 +01:00
MexIT
55175688f7 minor: Release: add sha256sums and release title 2025-01-03 19:09:13 +01:00
MexIT
8c99e3e3a0 minor: Add AlpDock URL to README.md 2024-12-21 19:33:37 +01:00
MexIT
9e5aa61e5a minor: Add full changelog to release 2024-12-20 22:27:52 +01:00
MexIT
3c7192f3fb Add iso with podman 2024-12-20 12:13:03 +01:00
MexIT
e055216863 Update docker profile 2024-12-20 11:36:36 +01:00
MexIT
044db5031b minor: improve release 2024-12-19 21:52:03 +01:00
MexIT
a6ce235cea minor: Improvements in changelog generation 2024-12-11 19:12:17 +01:00
MexIT
244ba9bd6e Alpine Linux updated to 3.21 2024-12-06 13:51:49 +01:00
docxml
240807b826
Typo README.md (#7)
Typo markdown code
2024-12-02 20:24:10 +01:00
6 changed files with 208 additions and 36 deletions

View file

@ -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 "<br>\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

View file

@ -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)

View file

@ -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 <<EOF
$HOSTNAME
EOF
makefile root:root 0644 "$tmp"/etc/motd <<EOF
Welcome to Alpine with docker preinstalled (Live ISO)!
DHCP is enabled on eth0.
To configure other interfaces run 'setup-interfaces' and then 'service networking restart' to apply settings.
Type 'alpdock-run-portainer' to run Portainer.
EOF
mkdir -p "$tmp"/etc/network
makefile root:root 0644 "$tmp"/etc/network/interfaces <<EOF
auto lo
@ -62,8 +72,8 @@ util-linux
EOF
makefile root:root 0644 "$tmp"/etc/apk/repositories <<EOF
https://dl-cdn.alpinelinux.org/alpine/${version}/main
https://dl-cdn.alpinelinux.org/alpine/${version}/community
https://dl-cdn.alpinelinux.org/alpine/v${version}/main
https://dl-cdn.alpinelinux.org/alpine/v${version}/community
EOF
mkdir -p "$tmp"/etc/local.d

134
genapkovl-podman.sh Normal file
View file

@ -0,0 +1,134 @@
#!/bin/sh -e
version="3.21"
HOSTNAME="$1"
if [ -z "$HOSTNAME" ]; then
echo "usage: $0 hostname"
exit 1
fi
cleanup() {
rm -rf "$tmp"
}
makefile() {
OWNER="$1"
PERMS="$2"
FILENAME="$3"
cat > "$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 <<EOF
$HOSTNAME
EOF
makefile root:root 0644 "$tmp"/etc/motd <<EOF
Welcome to Alpine with podman preinstalled (Live ISO)!
DHCP is enabled on eth0.
To configure other interfaces run 'setup-interfaces' and then 'service networking restart' to apply settings.
Type 'alpdock-run-portainer' to run Portainer.
EOF
mkdir -p "$tmp"/etc/network
makefile root:root 0644 "$tmp"/etc/network/interfaces <<EOF
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
EOF
mkdir -p "$tmp"/etc/apk
makefile root:root 0644 "$tmp"/etc/apk/world <<EOF
alpine-base
bash-completion
coreutils
podman
findutils
openssh
procps
readline
sed
sudo
util-linux
EOF
makefile root:root 0644 "$tmp"/etc/apk/repositories <<EOF
https://dl-cdn.alpinelinux.org/alpine/v${version}/main
https://dl-cdn.alpinelinux.org/alpine/v${version}/community
EOF
mkdir -p "$tmp"/etc/local.d
makefile root:root 0744 "$tmp"/etc/local.d/set_bash.start <<EOF
#!/bin/ash
sed -i 's|root:/bin/ash|root:/bin/bash|' /etc/passwd
EOF
makefile root:root 0744 "$tmp"/etc/local.d/add_user.start <<EOF
#!/bin/ash
user="linux"
echo -e "\$user\n\$user" | adduser \$user -s /bin/bash
mkdir /etc/sudoers.d
echo "\$user ALL=(ALL) ALL" > /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 <<EOF
#!/bin/sh
podman volume create portainer_data
podman run \
--detach \
--volume=/var/run/podman/podman.sock:/var/run/docker.sock \
--volume=portainer_data:/data \
--publish=8000:8000 \
--publish=9443:9443 \
--restart=always \
--name=portainer \
portainer/portainer-ce:latest
EOF
rc_add devfs sysinit
rc_add dmesg sysinit
rc_add mdev sysinit
rc_add hwdrivers sysinit
rc_add modloop sysinit
rc_add hwclock boot
rc_add modules boot
rc_add sysctl boot
rc_add hostname boot
rc_add bootmisc boot
rc_add syslog boot
rc_add networking boot
rc_add local boot
rc_add podman default
rc_add sshd default
rc_add mount-ro shutdown
rc_add killprocs shutdown
rc_add savecache shutdown
tar -c -C "$tmp" etc usr| gzip -9n > $HOSTNAME.apkovl.tar.gz

View file

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

15
mkimg.podman.sh Normal file
View file

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