From 60a5778194e978ef447b67383355a960f96d5fde Mon Sep 17 00:00:00 2001 From: Dmitry Date: Sat, 30 May 2026 13:11:29 +0300 Subject: [PATCH] Move NixOS switches to SSH runners --- .gitea/workflows/nixos-switch-cloud-pc.yml | 13 +++++++++-- .gitea/workflows/nixos-switch-mini-pc.yml | 13 +++++++++-- cloud-pc/gitea-runner/Dockerfile | 4 ++++ cloud-pc/gitea-runner/docker-compose.yml | 13 +++++++++++ mini-pc/gitea-runner/Dockerfile | 4 ++++ mini-pc/gitea-runner/docker-compose.yml | 13 +++++++++++ nixos/hosts/cloud-pc/default.nix | 25 ---------------------- nixos/hosts/mini-pc/default.nix | 25 ---------------------- 8 files changed, 56 insertions(+), 54 deletions(-) create mode 100644 cloud-pc/gitea-runner/Dockerfile create mode 100644 cloud-pc/gitea-runner/docker-compose.yml create mode 100644 mini-pc/gitea-runner/Dockerfile create mode 100644 mini-pc/gitea-runner/docker-compose.yml diff --git a/.gitea/workflows/nixos-switch-cloud-pc.yml b/.gitea/workflows/nixos-switch-cloud-pc.yml index c0dab74..3e0fa4a 100644 --- a/.gitea/workflows/nixos-switch-cloud-pc.yml +++ b/.gitea/workflows/nixos-switch-cloud-pc.yml @@ -12,7 +12,7 @@ on: jobs: switch: - runs-on: cloud-pc-nixos + runs-on: cloud-pc steps: - name: Sync repo run: | @@ -20,4 +20,13 @@ jobs: git -C /opt/services pull --ff-only - name: Switch NixOS generation - run: sudo /run/current-system/sw/bin/nixos-rebuild switch --flake /opt/services/nixos#cloud-pc + env: + NIXOS_DEPLOY_KEY: ${{ secrets.NIXOS_DEPLOY_KEY }} + run: | + KEY=$(mktemp) + echo "$NIXOS_DEPLOY_KEY" > "$KEY" + chmod 600 "$KEY" + trap "rm -f $KEY" EXIT + ssh -i "$KEY" -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \ + ada@192.168.1.5 \ + "sudo /run/current-system/sw/bin/nixos-rebuild switch --flake /opt/services/nixos#cloud-pc" diff --git a/.gitea/workflows/nixos-switch-mini-pc.yml b/.gitea/workflows/nixos-switch-mini-pc.yml index f443060..b9e2bce 100644 --- a/.gitea/workflows/nixos-switch-mini-pc.yml +++ b/.gitea/workflows/nixos-switch-mini-pc.yml @@ -12,7 +12,7 @@ on: jobs: switch: - runs-on: mini-pc-nixos + runs-on: mini-pc steps: - name: Sync repo run: | @@ -20,4 +20,13 @@ jobs: git -C /opt/services pull --ff-only - name: Switch NixOS generation - run: sudo /run/current-system/sw/bin/nixos-rebuild switch --flake /opt/services/nixos#mini-pc + env: + NIXOS_DEPLOY_KEY: ${{ secrets.NIXOS_DEPLOY_KEY }} + run: | + KEY=$(mktemp) + echo "$NIXOS_DEPLOY_KEY" > "$KEY" + chmod 600 "$KEY" + trap "rm -f $KEY" EXIT + ssh -i "$KEY" -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \ + ada@192.168.1.10 \ + "sudo /run/current-system/sw/bin/nixos-rebuild switch --flake /opt/services/nixos#mini-pc" diff --git a/cloud-pc/gitea-runner/Dockerfile b/cloud-pc/gitea-runner/Dockerfile new file mode 100644 index 0000000..1da9587 --- /dev/null +++ b/cloud-pc/gitea-runner/Dockerfile @@ -0,0 +1,4 @@ +FROM gitea/act_runner:latest + +USER root +RUN apk add --no-cache docker-cli docker-cli-compose diff --git a/cloud-pc/gitea-runner/docker-compose.yml b/cloud-pc/gitea-runner/docker-compose.yml new file mode 100644 index 0000000..db1c915 --- /dev/null +++ b/cloud-pc/gitea-runner/docker-compose.yml @@ -0,0 +1,13 @@ +services: + gitea-runner: + build: . + restart: always + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - /opt/services:/opt/services + - /opt/data/gitea-runner:/data + environment: + GITEA_INSTANCE_URL: https://git.ada-dev.ru + GITEA_RUNNER_REGISTRATION_TOKEN: ${TOKEN} + GITEA_RUNNER_NAME: cloud-pc-runner + GITEA_RUNNER_LABELS: cloud-pc diff --git a/mini-pc/gitea-runner/Dockerfile b/mini-pc/gitea-runner/Dockerfile new file mode 100644 index 0000000..1da9587 --- /dev/null +++ b/mini-pc/gitea-runner/Dockerfile @@ -0,0 +1,4 @@ +FROM gitea/act_runner:latest + +USER root +RUN apk add --no-cache docker-cli docker-cli-compose diff --git a/mini-pc/gitea-runner/docker-compose.yml b/mini-pc/gitea-runner/docker-compose.yml new file mode 100644 index 0000000..7a1cb6d --- /dev/null +++ b/mini-pc/gitea-runner/docker-compose.yml @@ -0,0 +1,13 @@ +services: + gitea-runner: + build: . + restart: always + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - /opt/services:/opt/services + - /opt/data/gitea-runner:/data + environment: + GITEA_INSTANCE_URL: https://git.ada-dev.ru + GITEA_RUNNER_REGISTRATION_TOKEN: ${TOKEN} + GITEA_RUNNER_NAME: mini-pc-runner + GITEA_RUNNER_LABELS: mini-pc diff --git a/nixos/hosts/cloud-pc/default.nix b/nixos/hosts/cloud-pc/default.nix index 6b3664e..cd1dd63 100644 --- a/nixos/hosts/cloud-pc/default.nix +++ b/nixos/hosts/cloud-pc/default.nix @@ -80,30 +80,5 @@ "d /mnt/yandex 0755 ada users - -" ]; - services.gitea-actions-runner.instances."cloud-pc" = { - enable = true; - name = "cloud-pc"; - url = "https://git.ada-dev.ru"; - tokenFile = "/etc/gitea-runner/cloud-pc.token"; - labels = [ "cloud-pc" "cloud-pc-nixos" ]; - }; - - systemd.services."gitea-runner-cloud-pc".serviceConfig = { - SupplementaryGroups = [ "docker" ]; - Environment = [ "PATH=/run/current-system/sw/bin:/bin" ]; - }; - - security.sudo.extraRules = [ - { - users = [ "gitea-runner" ]; - commands = [ - { - command = "/run/current-system/sw/bin/nixos-rebuild"; - options = [ "NOPASSWD" ]; - } - ]; - } - ]; - system.stateVersion = "25.11"; } diff --git a/nixos/hosts/mini-pc/default.nix b/nixos/hosts/mini-pc/default.nix index 3989f5b..34010cb 100644 --- a/nixos/hosts/mini-pc/default.nix +++ b/nixos/hosts/mini-pc/default.nix @@ -75,30 +75,5 @@ } ''; - services.gitea-actions-runner.instances."mini-pc" = { - enable = true; - name = "mini-pc"; - url = "https://git.ada-dev.ru"; - tokenFile = "/etc/gitea-runner/mini-pc.token"; - labels = [ "mini-pc" "mini-pc-nixos" ]; - }; - - systemd.services."gitea-runner-mini-pc".serviceConfig = { - SupplementaryGroups = [ "docker" ]; - Environment = [ "PATH=/run/current-system/sw/bin:/bin" ]; - }; - - security.sudo.extraRules = [ - { - users = [ "gitea-runner" ]; - commands = [ - { - command = "/run/current-system/sw/bin/nixos-rebuild"; - options = [ "NOPASSWD" ]; - } - ]; - } - ]; - system.stateVersion = "25.11"; }