68 lines
4.3 KiB
YAML
68 lines
4.3 KiB
YAML
name: 'Release Alpine apk for ARM64v8'
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- release
|
|
|
|
jobs:
|
|
compilation-arm64v8:
|
|
runs-on: arm64v8-alpine-latest-pv
|
|
steps:
|
|
- name: Update environment
|
|
shell: sh
|
|
run: apk -U upgrade
|
|
- name: Install needed tools
|
|
shell: sh
|
|
run: apk add bash git wget curl nodejs sshfs alpine-sdk abuild sudo pup
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
- name: Set up environment and users
|
|
run: |
|
|
echo "user_allow_other" >> /etc/fuse.conf
|
|
adduser runner -u 1001 -D -s /bin/bash -G wheel
|
|
addgroup -g 1001 runner
|
|
addgroup runner abuild
|
|
addgroup runner runner
|
|
chmod 660 /etc/sudoers
|
|
echo "%wheel ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers
|
|
chmod 440 /etc/sudoers
|
|
mkdir -p /var/cache/distfiles
|
|
chmod a+w /var/cache/distfiles
|
|
su - runner -c 'mkdir ~/.abuild'
|
|
echo "setup done"
|
|
- name: Set up keys
|
|
run: |
|
|
wget -q https://static.itmodulo.eu/dl/repo/public_keys/alpine/itmodulo%40disroot.org-65b4f779.rsa.pub -P /etc/apk/keys
|
|
su - runner -c 'wget -q https://static.itmodulo.eu/dl/repo/public_keys/alpine/itmodulo%40disroot.org-65b4f779.rsa.pub -P ~/.abuild/'
|
|
echo "${{ secrets.REPO_PRIVKEY }}" > /home/runner/.abuild/${{ secrets.REPO_PRIVKEY_FILENAME }} && chown runner:runner /home/runner/.abuild/${{ secrets.REPO_PRIVKEY_FILENAME }}
|
|
su - runner -c "echo 'PACKAGER_PRIVKEY="/home/runner/.abuild/${{ secrets.REPO_PRIVKEY_FILENAME }}"' >> ~/.abuild/abuild.conf"
|
|
mv srcpkgs /home/runner && chown -R runner:runner /home/runner/srcpkgs
|
|
- name: Determine packages to build
|
|
run: |
|
|
su - runner -c "curl --silent https://static.itmodulo.eu/dl/repo/alpine/latest-stable/main/aarch64/ | pup 'a text{}' | grep \.apk > repo.txt"
|
|
su - runner -c "touch local.txt"
|
|
su - runner -c "cd srcpkgs && for i in ./* ; do printf "%s-%s-r%s.apk\n" "$(echo $i | cut -d '/' -f 2)" "$(cat $i/APKBUILD | grep pkgver | grep -v '\$' | cut -d '=' -f 2 )" "$(cat $i/APKBUILD | grep pkgrel | grep -v '\$' | cut -d '=' -f 2 )" >> ~/local.txt; done"
|
|
su - runner -c "grep -Fvxf repo.txt local.txt > missing.txt"
|
|
su - runner -c "sed -i -E 's/-[0-9a-z.]+-r[0-9]+\.apk//g' missing.txt"
|
|
su - runner -c "for i in $(cat missing.txt | tac ); do sed -i -E 's/'"${i}"-[0-9a-z.]+-r[0-9]+\.apk'//g' repo.txt; done;"
|
|
su - runner -c 'echo "WILL BUILD:"; cat missing.txt'
|
|
|
|
- name: Compile missing in sequence
|
|
run: |
|
|
su - runner -c 'export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"; cd "srcpkgs/$(head -n 1 missing.txt)"; abuild -r'
|
|
echo "/home/runner/packages/srcpkgs" >> /etc/apk/repositories
|
|
su - runner -c 'export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"; cd srcpkgs; for i in $(tail -n +2 missing.txt); do cd $i && abuild -r; cd .. ; done'
|
|
- name: Mount and upload
|
|
run: |
|
|
su - runner -c 'mkdir hole'
|
|
echo "${{ secrets.REPO_LOGIN }}" > /home/runner/id_ecdsa && chown runner:runner /home/runner/id_ecdsa && chmod 600 /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'
|
|
su - runner -c 'ls -lah /home/runner/hole/latest-stable/main/aarch64/'
|
|
su - runner -c 'mkdir toindex && mv ~/packages/srcpkgs/aarch64/*.apk ~/toindex/'
|
|
su - runner -c 'for i in $(cat repo.txt); do cp "hole/latest-stable/main/aarch64/$i" ~/toindex/'
|
|
su - runner -c 'apk index /home/runner/toindex/APKINDEX.tar.gz /home/runner/toindex/*.apk'
|
|
su - runner -c 'abuild-sign -k /home/runner/.abuild/${{ secrets.REPO_PRIVKEY_FILENAME }} /home/runner/toindex/APKINDEX.tar.gz'
|
|
su - runner -c 'rm -rf hole/latest-stable/main/aarch64/*'
|
|
su - runner -c 'cp toindex/* hole/latest-stable/main/aarch64/'
|
|
su - runner -c 'ls -lah /home/runner/hole/latest-stable/main/aarch64/' |