Merge pull request #11 from archtika/devel

Different Nix configurations for qs and prod
This commit is contained in:
Thilo Hohlt
2024-09-15 15:08:36 +02:00
committed by GitHub
6 changed files with 57 additions and 26 deletions

View File

@@ -1,4 +1,4 @@
name: Deploy app to server name: Deploy to server
on: on:
workflow_run: workflow_run:
@@ -7,12 +7,13 @@ on:
branches: [ devel, main ] branches: [ devel, main ]
env: env:
SERVER_USER: root SERVER_USER: root
SERVER_IP: 128.140.75.240 QS_SERVER_IP: 128.140.75.240
PROD_SERVER_IP: 116.203.122.75
jobs: jobs:
deploy: deploy:
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' && github.event.event == 'push' }} if: ${{ github.event.workflow_run.conclusion == 'success' && github.event.event != 'pull_request' }}
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
@@ -24,14 +25,14 @@ jobs:
- name: Install SSH Key - name: Install SSH Key
uses: shimataro/ssh-key-action@v2 uses: shimataro/ssh-key-action@v2
with: with:
key: ${{ secrets.DEMO_SERVER_SSH_KEY }} key: ${{ github.ref_name == 'devel' && secrets.QS_SSH_KEY || secrets.PROD_SSH_KEY }}
known_hosts: ${{ secrets.DEMO_SERVER_KNOWN_HOSTS }} known_hosts: ${{ github.ref_name == 'devel' && secrets.QS_KNOWN_HOSTS || secrets.PROD_KNOWN_HOSTS }}
- name: Deploy to demo server - name: Deploy to demo server
run: | run: |
nix run nixpkgs#nixos-rebuild -- switch \ nix run nixpkgs#nixos-rebuild -- switch \
--flake .#demo-server \ --flake .#$[ github.ref_name == 'devel' && 'qs' || 'prod' ] \
--fast \ --fast \
--build-host ${{ env.SERVER_USER }}@${{ env.SERVER_IP }} \ --build-host ${{ env.SERVER_USER }}@$[ github.ref_name == 'devel' && env.QS_SERVER_IP || env.PROD_SERVER_IP ] \
--target-host ${{ env.SERVER_USER }}@${{ env.SERVER_IP }} \ --target-host ${{ env.SERVER_USER }}@$[ github.ref_name == 'devel' && env.QS_SERVER_IP || env.PROD_SERVER_IP ] \
--use-remote-sudo --use-remote-sudo

View File

@@ -78,10 +78,17 @@
system = "x86_64-linux"; system = "x86_64-linux";
modules = [ ./nix/dev-vm.nix ]; modules = [ ./nix/dev-vm.nix ];
}; };
demo-server = nixpkgs.lib.nixosSystem { qs = nixpkgs.lib.nixosSystem {
system = "aarch64-linux"; system = "aarch64-linux";
modules = [ modules = [
./nix/demo-server ./nix/deploy/qs
{ _module.args.localArchtikaPackage = self.packages."aarch64-linux".default; }
];
};
prod = nixpkgs.lib.nixosSystem {
system = "aarch64-linux";
modules = [
./nix/deploy/prod
{ _module.args.localArchtikaPackage = self.packages."aarch64-linux".default; } { _module.args.localArchtikaPackage = self.packages."aarch64-linux".default; }
]; ];
}; };

View File

@@ -0,0 +1,19 @@
{ pkgs, localArchtikaPackage, ... }:
{
imports = [
./hardware-configuration.nix
../shared.nix
../../module.nix
];
networking.hostName = "archtika-prod";
services.archtika = {
enable = true;
package = localArchtikaPackage;
domain = "demo.archtika.com";
acmeEmail = "thilo.hohlt@tutanota.com";
dnsProvider = "porkbun";
dnsEnvironmentFile = /var/lib/porkbun.env;
};
}

19
nix/deploy/qs/default.nix Normal file
View File

@@ -0,0 +1,19 @@
{ pkgs, localArchtikaPackage, ... }:
{
imports = [
./hardware-configuration.nix
../shared.nix
../../module.nix
];
networking.hostName = "archtika-qs";
services.archtika = {
enable = true;
package = localArchtikaPackage;
domain = "qs.archtika.com";
acmeEmail = "thilo.hohlt@tutanota.com";
dnsProvider = "porkbun";
dnsEnvironmentFile = /var/lib/porkbun.env;
};
}

View File

@@ -1,10 +1,5 @@
{ pkgs, localArchtikaPackage, ... }: { pkgs, ... }:
{ {
imports = [
./hardware-configuration.nix
../module.nix
];
boot = { boot = {
loader = { loader = {
systemd-boot.enable = true; systemd-boot.enable = true;
@@ -23,7 +18,6 @@
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
networking = { networking = {
hostName = "archtika-qs";
networkmanager.enable = true; networkmanager.enable = true;
firewall = { firewall = {
allowedTCPPorts = [ allowedTCPPorts = [
@@ -62,14 +56,5 @@
settings.PasswordAuthentication = false; settings.PasswordAuthentication = false;
}; };
services.archtika = {
enable = true;
package = localArchtikaPackage;
domain = "qs.archtika.com";
acmeEmail = "thilo.hohlt@tutanota.com";
dnsProvider = "porkbun";
dnsEnvironmentFile = /var/lib/porkbun.env;
};
system.stateVersion = "24.11"; system.stateVersion = "24.11";
} }