linux_alpine/.gitea/workflows/release_arm64v8.yml

75 lines
4.7 KiB
YAML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 shadow
- 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 -h /home/runner
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
chsh -s /bin/bash
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"
cp -r srcpkgs /home/runner/ && chown -R runner:runner /home/runner/srcpkgs
- name: Determine packages to build
run: |
su - runner -c "echo ~"
su - runner -c 'echo ~'
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 ./* ; 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 'echo "LOCAL:"; cat ~/local.txt'
su - runner -c "grep -Fvxf ~/repo.txt ~/local.txt > ~/missing.txt"
su - runner -c 'echo "MISSING:"; cat ~/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 /home/runner/missing.txt); do sed -i -E 's/'"${i}"-[0-9a-z.]+-r[0-9]+\.apk'//g' ~/repo.txt; done;"
su - runner -c 'echo "MISSING:"; cat ~/missing.txt'
su - runner -c 'echo "REPO:"; cat ~/repo.txt'
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/; done'
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/'