From 8f36460c705e05f1a965b154eeb9077e9a5a4736 Mon Sep 17 00:00:00 2001 From: plasmagoat Date: Sun, 8 Jun 2025 03:04:09 +0200 Subject: [PATCH] split flow --- .forgejo/workflows/publish-image.yml | 73 ++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 .forgejo/workflows/publish-image.yml diff --git a/.forgejo/workflows/publish-image.yml b/.forgejo/workflows/publish-image.yml new file mode 100644 index 0000000..b1239a5 --- /dev/null +++ b/.forgejo/workflows/publish-image.yml @@ -0,0 +1,73 @@ +name: "Build & Upload NixOS Proxmox Image" + +on: + release: + types: [published] + workflow_dispatch: + +jobs: + build-upload: + runs-on: nixos-latest + env: + PROXMOX_HOST: 192.168.1.205 + PROXMOX_USER: forgejo-runner + TEMPLATE_VMID: 9001 + LATEST_TEMPLATE_VMID: 9000 + + steps: + - name: Install nodejs + run: nix-env -iA nixpkgs.nodejs + + - uses: actions/checkout@v4 + + - name: Download Forgejo Release + if: ${{ github.ref_type == 'tag' }} + uses: actions/forgejo-release@v2.6.0 + with: + direction: download + release-dir: ./ # by default, files are downloaded into dist/release + + - name: Prepare SSH + run: | + mkdir -p ~/.ssh + echo "${{ secrets.RUNNER_SSH_KEY }}" > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa + ssh-keyscan -H $PROXMOX_HOST >> ~/.ssh/known_hosts + ssh-keyscan -H $NIXOS_BUILER_HOST >> ~/.ssh/known_hosts + + - name: Test SSH connection + run: | + echo "Testing SSH connection to $PROXMOX_HOST..." + ssh -o StrictHostKeyChecking=yes $PROXMOX_USER@$PROXMOX_HOST "echo 'SSH success. Hostname:' && hostname" + echo "Testing SSH connection to $NIXOS_BUILER_HOST..." + ssh -o StrictHostKeyChecking=yes $NIXOS_BUILER_USER@$NIXOS_BUILER_HOST "echo 'SSH success. Hostname:' && hostname" + + - name: Upload image to Proxmox and manage templates + run: | + set -e + ls + IMAGE="./*.vma.zst" + REMOTE_NAME="nixos-base-image-${{ steps.version.outputs.tag}}.vma.zst" + REMOTE_PATH="/var/lib/vz/template/images/$REMOTE_NAME" + + echo "Uploading $IMAGE to Proxmox as $REMOTE_NAME" + scp $IMAGE $PROXMOX_USER@$PROXMOX_HOST:$REMOTE_PATH + + echo "Restoring as VMID $TEMPLATE_VMID" + ssh $PROXMOX_USER@$PROXMOX_HOST " + qm destroy $TEMPLATE_VMID --purge || true + qmrestore $REMOTE_PATH $TEMPLATE_VMID --unique + qm template $TEMPLATE_VMID + + echo 'Cloning to $LATEST_TEMPLATE_VMID as latest' + qm destroy $LATEST_TEMPLATE_VMID --purge || true + qm clone $TEMPLATE_VMID $LATEST_TEMPLATE_VMID --name nixos-base-latest + qm template $TEMPLATE_VMID + " + + # - name: Prune old templates + # run: | + # ssh $PROXMOX_USER@$PROXMOX_HOST " + # cd /var/lib/vz/template/images + # ls -tp nixos-base-image-*.vma.zst | grep -v '/$' | tail -n +6 | xargs -r rm -- + # "