name: "Release Alpine apk for ARM64v8"

on:
  push:
    branches:
      - release

jobs:
  compilation-arm64v8:
    runs-on: aarch-64-alpine-latest
    steps:
      - name: Select faster mirror and add tools
        shell: sh
        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
          echo "https://alpine.sakamoto.pl/alpine/$(cat /etc/os-release | grep PRETT | cut -d ' ' -f 3 | cut -d '"' -f 1)/community" >> /etc/apk/repositories
          apk -U upgrade
          apk add bash git wget curl nodejs sshfs alpine-sdk abuild sudo 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
          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"
      - name: Compile in sequence
        run: |
          # git clone --depth 1 https://gitlab.alpinelinux.org/alpine/aports.git
          # mv aports/community/hexagonrpcd srcpkgs/
          # mv aports/testing/gmic srcpkgs/
          # mv aports/testing/dissent srcpkgs/
          ls srcpkgs | tr ' ' '\n'
          mv srcpkgs /home/runner && chown -R runner:runner /home/runner/srcpkgs
          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 $(ls ./ ); do cd $i && abuild -r -c; 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 'rm -rf hole/latest-stable/main/aarch64/*'
          su - runner -c 'cp packages/srcpkgs/aarch64/* hole/latest-stable/main/aarch64/'
          su - runner -c 'ls -lah /home/runner/hole/latest-stable/main/aarch64/'