diff --git a/.gitea/workflows/release_arm64v8-edge.yml b/.gitea/workflows/release_arm64v8-edge.yml index 718cde0..75ce368 100755 --- a/.gitea/workflows/release_arm64v8-edge.yml +++ b/.gitea/workflows/release_arm64v8-edge.yml @@ -8,21 +8,19 @@ on: jobs: compilation-arm64v8: runs-on: aarch-64-alpine-edge - env: - REPO_URL: "https://static.itmodulo.eu/dl/repo/alpine/edge/main/aarch64" - REMOTE_SSH: "${{ secrets.SERVER_LOGIN_AND_ADDRESS }}" - REMOTE_PORT: "${{ secrets.LOGIN_PORT }}" - REMOTE_PATH: "${{ secrets.SERVER_REPO_PATH }}/edge/main/aarch64" steps: - - name: setup + - name: Select faster mirror and add tools shell: sh run: | - # 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)/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 echo "https://alpine.sakamoto.pl/alpine/$(cat /etc/os-release | grep PRETT | cut -d ' ' -f 3 | cut -d '"' -f 1)/testing" >> /etc/apk/repositories - apk update && apk upgrade - apk add bash git curl alpine-sdk abuild sudo shadow fuse sshfs nodejs wget file + apk -U upgrade + apk add bash git wget curl nodejs sshfs alpine-sdk abuild sudo shadow + - name: Checkout + uses: actions/checkout@v4 + - name: Set up environment and users + run: | echo "user_allow_other" >> /etc/fuse.conf adduser runner -u 1003 -D -s /bin/bash -G wheel addgroup -g 1003 runner @@ -36,75 +34,24 @@ jobs: 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" - echo "done" - - - name: Checkout sources - uses: actions/checkout@v4 - - - name: Fetch remote index and parse existing pkgs, build - id: get_remote - shell: bash + - name: Compile in sequence run: | - mkdir -p remote_index - curl -sfL "${REPO_URL}/APKINDEX.tar.gz" -o remote_index/APKINDEX.tar.gz - tar -xzf remote_index/APKINDEX.tar.gz -C remote_index - awk '/^P:/ { pkg=$2 } - /^V:/ { ver=$2 } - /^PR:/{ pr=$2; print pkg "-" ver "-" pr }' \ - remote_index/APKINDEX > remote_index/list.txt - - EXISTING_LIST=remote_index/list.txt - ls -lah remote_index - file remote_index/list.txt - cat remote_index/list.txt - mkdir -p newpkgs - for d in edge/*; do - # skip non-directories - [ -d "$d" ] || continue - - # as runner: source APKBUILD, set ident - sudo -u runner bash -c " - cd '$d' - . APKBUILD - echo \"Checking $PKGNAME-$PKGVER-$PKGREL\" - if grep -F -x \"$PKGNAME-$PKGVER-$PKGREL\" ../../${EXISTING_LIST}; then - echo \" → skip, already in repo\" - else - echo \" → building…\" - abuild -r -c - mv /home/runner/packages/srcpkgs/aarch64/${PKGNAME}-*.apk ../../newpkgs/ || true - fi - " - done - - - name: Sync new pkgs, clean old versions, rebuild & sign index - shell: bash + ls srcpkgs | tr ' ' '\n' + mv edge /home/runner/srcpkgs && 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: | - # prepare SSH key for sshfs - echo "${{ secrets.REPO_LOGIN }}" > /home/runner/id_ecdsa - chmod 600 /home/runner/id_ecdsa - mkdir -p /home/runner/remote - sshfs -p "${REMOTE_PORT}" -o StrictHostKeyChecking=accept-new \ - -o IdentityFile=/home/runner/id_ecdsa \ - "${REMOTE_SSH}:${REMOTE_PATH}" /home/runner/remote - - cd /home/runner/remote - - # Remove old iterations of each new pkg - for apk in /home/runner/newpkgs/*.apk; do - base=$(basename "$apk" | sed 's/-[0-9].*//') - rm -f ${base}-*.apk || true - done - - # Copy new ones in - cp /home/runner/newpkgs/*.apk . - - # Rebuild index and sign - apk index -o APKINDEX.tar.gz *.apk - abuild-sign APKINDEX.tar.gz - - fusermount -u /home/runner/remote + 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/edge/main/aarch64/' + su - runner -c 'rm -rf hole/edge/main/aarch64/*' + su - runner -c 'cp packages/srcpkgs/aarch64/* hole/edge/main/aarch64/' + su - runner -c 'ls -lah /home/runner/hole/edge/main/aarch64/'