diff --git a/.drone.jsonnet b/.drone.jsonnet index 3dca53b..f899bfb 100644 --- a/.drone.jsonnet +++ b/.drone.jsonnet @@ -1,58 +1,55 @@ local Pipeline(isDev) = { kind: "pipeline", - name: if isDev then "deploy-dev" else "deploy-prod", + type: "exec", + name: if isDev then "Deploy to dev" else "Deploy to prod", # Dev ignores "master", prod only triggers on "master" trigger: { branch: { [if isDev then "exclude" else "include"]: [ "main" ] } }, - # We want to clone the submodules, which isn't done by default - clone: { disable: true }, steps: [ { - name: "clone", - image: "plugins/git", - recursive: true, + # We want to clone the submodules, which isn't done by default + name: "submodules", + commands: [ + "git submodule update --recursive --init", + ] }, { - name: "markdownlint", - image: "06kellyjac/markdownlint-cli", + # Include pre-commit checks, which include markdownlint + name: "check", commands: [ - "markdownlint --version", - "markdownlint content/", + "nix flake check", ], }, { + # If dev, include drafts and future articles, change base URL name: "build", - image: "klakegg/hugo", commands: [ - "hugo version", - # If dev, include drafts and future articles, change base URL - "hugo --minify" + if isDev then " -D -F -b https://dev.belanyi.fr" else "", + "nix develop -c make " + if isDev then "build-dev" else "build-prod", ], - [if !isDev then "environment"]: { HUGO_ENV: "production" } }, { name: "deploy", - image: "appleboy/drone-scp", - settings: { - source: "public/*", - strip_components: 1, # Remove 'public/' suffix from file paths - rm: true, # Remove previous files from target directory - host: { from_secret: "ssh_host" }, - target: { from_secret: "ssh_target" + if isDev then "_dev" else "" }, - username: { from_secret: "ssh_user" }, - key: { from_secret: "ssh_key" }, - port: { from_secret: "ssh_port" }, + commands: [ + "nix develop -c make deploy", + ], + environment: { + SSH_HOST: { from_secret: "ssh_host" }, + SSH_TARGET: { from_secret: "ssh_target" + if isDev then "_dev" else "" }, + SSH_USER: { from_secret: "ssh_user" }, + SSH_KEY: { from_secret: "ssh_key" }, }, }, { name: "notify", - image: "plugins/matrix", - settings: { - homeserver: { from_secret: "matrix_homeserver" }, - roomid: { from_secret: "matrix_roomid" }, - username: { from_secret: "matrix_username" }, - password: { from_secret: "matrix_password" }, + commands: [ + "nix run github:ambroisie/matrix-notifier", + ], + environment: { + ADDRESS: { from_secret: "matrix_homeserver" }, + ROOM: { from_secret: "matrix_roomid" }, + USER: { from_secret: "matrix_username" }, + PASS: { from_secret: "matrix_password" }, }, - trigger: { status: [ "failure", "success", ] }, + when: { status: [ "failure", "success", ] }, }, ] }; diff --git a/Makefile b/Makefile index 9ecbb22..fcec24d 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ all: build-dev .PHONY: build-dev build-dev: - HUGO_BASEURL=https://dev.belanyi.fr hugo -D -F + HUGO_TITLE="Ambroisie's dev blog" HUGO_BASEURL=https://dev.belanyi.fr hugo -D -F .PHONY: build-prod build-prod: @@ -13,6 +13,14 @@ build-prod: serve: hugo server -D -F +deploy: + @if [ -n "$$SSH_KEY" ]; then eval "$$(ssh-agent)"; echo "$$SSH_KEY" | ssh-add -; fi + @if [ -z "$$SSH_USER" ] || [ -z "$$SSH_HOST" ] || [ -z "$$SSH_TARGET" ]; \ + then echo "Missing one of SSH_USER, SSH_HOST, or SSH_TARGET" >&2; \ + exit 1; \ + fi + rsync -e 'ssh -o StrictHostKeyChecking=no' --progress -avz --delete public/ "$$SSH_USER@$$SSH_HOST:$$SSH_TARGET" + .PHONY: clean clean: $(RM) -r public diff --git a/flake.nix b/flake.nix index be1350a..1f8c11c 100644 --- a/flake.nix +++ b/flake.nix @@ -67,6 +67,8 @@ buildInputs = with pkgs; [ gnumake hugo + openssh + rsync ]; inherit (self.checks.${system}.pre-commit) shellHook;