optimize ci, add Notify test1
Some checks failed
Release Alpine apk for ARM64v8 Edge / compilation-arm64v8 (push) Failing after -1m56s
Some checks failed
Release Alpine apk for ARM64v8 Edge / compilation-arm64v8 (push) Failing after -1m56s
This commit is contained in:
parent
d34006ffa3
commit
9cb7aad32c
2 changed files with 126 additions and 36 deletions
|
@ -8,50 +8,96 @@ on:
|
||||||
jobs:
|
jobs:
|
||||||
compilation-arm64v8:
|
compilation-arm64v8:
|
||||||
runs-on: aarch-64-alpine-edge
|
runs-on: aarch-64-alpine-edge
|
||||||
|
env:
|
||||||
|
REPO_URL: "https://alpine.sakamoto.pl/alpine/edge/testing/aarch64"
|
||||||
|
REMOTE_SSH: "${{ secrets.SERVER_LOGIN_AND_ADDRESS }}"
|
||||||
|
REMOTE_PORT: "${{ secrets.LOGIN_PORT }}"
|
||||||
|
REMOTE_PATH: "${{ secrets.SERVER_REPO_PATH }}/edge/main/aarch64"
|
||||||
steps:
|
steps:
|
||||||
- name: Select faster mirror and add tools
|
- name: Install base tools
|
||||||
shell: sh
|
shell: sh
|
||||||
run: |
|
run: |
|
||||||
echo "https://alpine.sakamoto.pl/alpine/$(cat /etc/os-release | grep PRETT | cut -d ' ' -f 3 | cut -d '"' -f 1)/main" > /etc/apk/repositories
|
# faster mirror + essential build tools
|
||||||
echo "https://alpine.sakamoto.pl/alpine/$(cat /etc/os-release | grep PRETT | cut -d ' ' -f 3 | cut -d '"' -f 1)/community" >> /etc/apk/repositories
|
echo "https://alpine.sakamoto.pl/alpine/$(. /etc/os-release; echo $PRETTY_NAME|cut -d '"' -f2)/main" > /etc/apk/repositories
|
||||||
echo "https://alpine.sakamoto.pl/alpine/$(cat /etc/os-release | grep PRETT | cut -d ' ' -f 3 | cut -d '"' -f 1)/testing" >> /etc/apk/repositories
|
echo "https://alpine.sakamoto.pl/alpine/$(. /etc/os-release; echo $PRETTY_NAME|cut -d '"' -f2)/community" >> /etc/apk/repositories
|
||||||
apk -U upgrade
|
echo "https://alpine.sakamoto.pl/alpine/$(. /etc/os-release; echo $PRETTY_NAME|cut -d '"' -f2)/testing" >> /etc/apk/repositories
|
||||||
apk add bash git wget curl nodejs sshfs alpine-sdk abuild sudo shadow
|
apk update && apk upgrade
|
||||||
- name: Checkout
|
apk add bash git curl alpine-sdk abuild sudo shadow fuse sshfs
|
||||||
|
|
||||||
|
- name: Checkout sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
- name: Set up environment and users
|
|
||||||
|
- name: Prepare runner user
|
||||||
run: |
|
run: |
|
||||||
echo "user_allow_other" >> /etc/fuse.conf
|
echo "user_allow_other" >> /etc/fuse.conf
|
||||||
adduser runner -u 1003 -D -s /bin/bash -G wheel
|
|
||||||
addgroup -g 1003 runner
|
addgroup -g 1003 runner
|
||||||
addgroup runner abuild
|
adduser -u 1003 -D -s /bin/bash -G wheel,abuild runner
|
||||||
addgroup runner runner
|
echo "%wheel ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
||||||
chmod 660 /etc/sudoers
|
|
||||||
echo "%wheel ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers
|
|
||||||
chmod 440 /etc/sudoers
|
chmod 440 /etc/sudoers
|
||||||
mkdir -p /var/cache/distfiles
|
mkdir -p /var/cache/distfiles && chmod a+w /var/cache/distfiles
|
||||||
chmod a+w /var/cache/distfiles
|
|
||||||
chsh -s /bin/bash
|
- name: Fetch remote index and parse existing pkgs
|
||||||
su - runner -c 'mkdir ~/.abuild'
|
id: get_remote
|
||||||
echo "setup done"
|
shell: bash
|
||||||
- name: Set up keys
|
|
||||||
run: |
|
run: |
|
||||||
wget -q https://static.itmodulo.eu/dl/repo/public_keys/alpine/itmodulo%40disroot.org-65b4f779.rsa.pub -P /etc/apk/keys
|
mkdir -p remote_index
|
||||||
su - runner -c 'wget -q https://static.itmodulo.eu/dl/repo/public_keys/alpine/itmodulo%40disroot.org-65b4f779.rsa.pub -P ~/.abuild/'
|
curl -sfL "${REPO_URL}/APKINDEX.tar.gz" -o remote_index/APKINDEX.tar.gz
|
||||||
echo "${{ secrets.REPO_PRIVKEY }}" > /home/runner/.abuild/${{ secrets.REPO_PRIVKEY_FILENAME }} && chown runner:runner /home/runner/.abuild/${{ secrets.REPO_PRIVKEY_FILENAME }}
|
tar -xzf remote_index/APKINDEX.tar.gz -C remote_index
|
||||||
su - runner -c "echo 'PACKAGER_PRIVKEY="/home/runner/.abuild/${{ secrets.REPO_PRIVKEY_FILENAME }}"' >> ~/.abuild/abuild.conf"
|
# Extract P: and V: fields into a list of "name-version-pkgrel"
|
||||||
- name: Compile in sequence
|
awk '
|
||||||
|
/^P:/ { pkg=$2 }
|
||||||
|
/^V:/ { ver=$2 }
|
||||||
|
/^PR:/ { pr=$2; print pkg "-" ver "-" pr }
|
||||||
|
' remote_index/APKINDEX > remote_index/list.txt
|
||||||
|
echo "::set-output name=existing::$(sort remote_index/list.txt | paste -sd, -)"
|
||||||
|
|
||||||
|
- name: Build only missing packages
|
||||||
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
ls srcpkgs | tr ' ' '\n'
|
EXISTING="$(echo "${{ steps.get_remote.outputs.existing }}" | tr ',' '\n')"
|
||||||
mv edge /home/runner/srcpkgs && chown -R runner:runner /home/runner/srcpkgs
|
mkdir -p built newpkgs
|
||||||
echo "/home/runner/packages/srcpkgs" >> /etc/apk/repositories
|
for d in srcpkgs/*; do
|
||||||
su - runner -c 'export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"; cd srcpkgs; for i in $(ls ./ ); do cd $i && abuild -r -c; cd .. ; done'
|
cd "$d"
|
||||||
- name: Mount and upload
|
# source the APKBUILD so we get PKGNAME, PKGVER, PKGREL
|
||||||
|
. APKBUILD
|
||||||
|
ident="${PKGNAME}-${PKGVER}-${PKGREL}"
|
||||||
|
if echo "$EXISTING" | grep -qx "$ident"; then
|
||||||
|
echo "Skipping $ident (already in repo)"
|
||||||
|
else
|
||||||
|
echo "Building $ident..."
|
||||||
|
abuild -r -c
|
||||||
|
# collect the resulting .apk
|
||||||
|
mv /home/runner/packages/srcpkgs/aarch64/${PKGNAME}-*.apk ../../newpkgs/ || true
|
||||||
|
fi
|
||||||
|
cd - >/dev/null
|
||||||
|
done
|
||||||
|
|
||||||
|
- name: Sync new pkgs, clean old versions, rebuild & sign index
|
||||||
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
su - runner -c 'mkdir hole'
|
# prepare SSH key for sshfs
|
||||||
echo "${{ secrets.REPO_LOGIN }}" > /home/runner/id_ecdsa && chown runner:runner /home/runner/id_ecdsa && chmod 600 /home/runner/id_ecdsa
|
echo "${{ secrets.REPO_LOGIN }}" > /home/runner/id_ecdsa
|
||||||
su - runner -c 'sshfs -p "${{ secrets.LOGIN_PORT }}" -o StrictHostKeyChecking=accept-new -o default_permissions,allow_other -o IdentityFile=/home/runner/id_ecdsa "${{ secrets.SERVER_LOGIN_AND_ADDRESS }}":"${{ secrets.SERVER_REPO_PATH }}" /home/runner/hole'
|
chmod 600 /home/runner/id_ecdsa
|
||||||
su - runner -c 'ls -lah /home/runner/hole/edge/main/aarch64/'
|
mkdir -p /home/runner/remote
|
||||||
su - runner -c 'rm -rf hole/edge/main/aarch64/*'
|
sshfs -p "${REMOTE_PORT}" -o StrictHostKeyChecking=accept-new \
|
||||||
su - runner -c 'cp packages/srcpkgs/aarch64/* hole/edge/main/aarch64/'
|
-o IdentityFile=/home/runner/id_ecdsa \
|
||||||
su - runner -c 'ls -lah /home/runner/hole/edge/main/aarch64/'
|
"${REMOTE_SSH}:${REMOTE_PATH}" /home/runner/remote
|
||||||
|
|
||||||
|
cd /home/runner/remote
|
||||||
|
|
||||||
|
# For each newly-built package, remove older versions
|
||||||
|
for pkg in /home/runner/newpkgs/*.apk; do
|
||||||
|
base=$(basename "$pkg" | sed -E 's/(-[0-9]+\.[0-9]+.*)//')
|
||||||
|
rm -f ${base}-*.apk || true
|
||||||
|
done
|
||||||
|
|
||||||
|
# Copy over the truly new files
|
||||||
|
cp /home/runner/newpkgs/*.apk .
|
||||||
|
|
||||||
|
# Rebuild the index
|
||||||
|
apk index -o APKINDEX.tar.gz *.apk
|
||||||
|
|
||||||
|
# Sign it
|
||||||
|
abuild-sign APKINDEX.tar.gz
|
||||||
|
|
||||||
|
fusermount -u /home/runner/remote
|
||||||
|
|
44
edge/Notify/APKBUILD
Executable file
44
edge/Notify/APKBUILD
Executable file
|
@ -0,0 +1,44 @@
|
||||||
|
pkgname=Notify
|
||||||
|
pkgver=0.1.6
|
||||||
|
pkgrel=0
|
||||||
|
pkgdesc="Linux client for https://ntfy.sh pub-sub unifiedpush compatible server"
|
||||||
|
url="https://github.com/ranfdev/Notify"
|
||||||
|
arch="all"
|
||||||
|
license="GPL-3.0-or-later"
|
||||||
|
depends="capnproto sqlite"
|
||||||
|
makedepends="
|
||||||
|
gnome-desktop-dev
|
||||||
|
libadwaita-dev
|
||||||
|
meson
|
||||||
|
gtk4.0-dev
|
||||||
|
gobject-introspection-dev
|
||||||
|
desktop-file-utils
|
||||||
|
appstream
|
||||||
|
rust
|
||||||
|
cargo
|
||||||
|
openssl-dev
|
||||||
|
pkgconf
|
||||||
|
gcc
|
||||||
|
musl-dev
|
||||||
|
sqlite-dev
|
||||||
|
gtksourceview5-dev
|
||||||
|
blueprint-compiler
|
||||||
|
capnproto-dev
|
||||||
|
"
|
||||||
|
source="$pkgname-$pkgver.tar.gz::https://github.com/ranfdev/Notify/archive/refs/tags/v$pkgver.tar.gz"
|
||||||
|
|
||||||
|
options="!check"
|
||||||
|
|
||||||
|
build() {
|
||||||
|
abuild-meson \
|
||||||
|
--buildtype=release \
|
||||||
|
. output
|
||||||
|
meson compile -C output
|
||||||
|
}
|
||||||
|
|
||||||
|
package() {
|
||||||
|
DESTDIR="$pkgdir" meson install --no-rebuild -C output
|
||||||
|
}
|
||||||
|
sha512sums="
|
||||||
|
595b1e584e04204b4295092092a3f2249d402b43fa3d51ef24f69d3a51657ad9e73bc3ef27b8f38792d507891a44d302c52aa4ab9ff2184116dffe6dcf87b7fa Notify-0.1.6.tar.gz
|
||||||
|
"
|
Loading…
Add table
Reference in a new issue