at master 2.6 kB view raw
1{ pkgs, ... }: 2{ 3 name = "renovate"; 4 meta.maintainers = with pkgs.lib.maintainers; [ 5 marie 6 natsukium 7 ]; 8 9 nodes.machine = 10 { config, ... }: 11 { 12 services.renovate = { 13 enable = true; 14 settings = { 15 platform = "forgejo"; 16 endpoint = "http://localhost:3000"; 17 autodiscover = true; 18 gitAuthor = "Renovate <renovate@example.com>"; 19 }; 20 credentials = { 21 RENOVATE_TOKEN = "/etc/renovate-token"; 22 }; 23 }; 24 environment.systemPackages = [ 25 config.services.forgejo.package 26 pkgs.tea 27 pkgs.git 28 ]; 29 services.forgejo = { 30 enable = true; 31 settings.server.HTTP_PORT = 3000; 32 }; 33 systemd.enableStrictShellChecks = true; 34 }; 35 36 testScript = '' 37 def forgejo(command): 38 return machine.succeed(f"cd /var/lib/forgejo && sudo --user=forgejo FORGEJO_WORK_DIR=/var/lib/forgejo FORGEJO_CUSTOM=/var/lib/forgejo/custom forgejo {command}") 39 40 machine.wait_for_unit("forgejo.service") 41 machine.wait_for_open_port(3000) 42 43 machine.systemctl("stop forgejo.service") 44 45 forgejo("admin user create --username meow --email meow@example.com --password meow") 46 47 machine.systemctl("start forgejo.service") 48 machine.wait_for_unit("forgejo.service") 49 machine.wait_for_open_port(3000) 50 51 accessToken = forgejo("admin user generate-access-token --raw --username meow --scopes all | tr -d '\n'") 52 53 machine.succeed(f"tea login add --name default --user meow --token '{accessToken}' --password meow --url http://localhost:3000") 54 machine.succeed("tea repo create --login default --name kitty --init") 55 machine.succeed("git config --global user.name Meow") 56 machine.succeed("git config --global user.email meow@example.com") 57 machine.succeed(f"git clone http://meow:{accessToken}@localhost:3000/meow/kitty.git /tmp/kitty") 58 machine.succeed("echo '{ \"name\": \"meow\", \"version\": \"0.1.0\" }' > /tmp/kitty/package.json") 59 machine.succeed("git -C /tmp/kitty add /tmp/kitty/package.json") 60 machine.succeed("git -C /tmp/kitty commit -m 'add package.json'") 61 machine.succeed("git -C /tmp/kitty push origin") 62 63 machine.succeed(f"echo '{accessToken}' > /etc/renovate-token") 64 machine.systemctl("start --wait renovate.service") 65 66 machine.succeed("tea pulls list --login default --repo meow/kitty | grep 'Configure Renovate'") 67 machine.succeed("tea pulls merge --login default --repo meow/kitty 1") 68 69 machine.systemctl("start --wait renovate.service") 70 ''; 71}