Add deployment workflow (#7)
Reviewed-on: https://git.hubrecht.ovh/DGNum/dgnum.eu/pulls/7 Co-authored-by: Tom Hubrecht <tom@hubrecht.ovh> Co-committed-by: Tom Hubrecht <tom@hubrecht.ovh>
This commit is contained in:
parent
8056829c14
commit
c665ce2eb6
6 changed files with 112 additions and 6 deletions
66
.forgejo/workflows/deploy-dgnum.yaml
Normal file
66
.forgejo/workflows/deploy-dgnum.yaml
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
name: Publish website to Codeberg Pages
|
||||||
|
run-name: publish-dgnum.eu
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
publish:
|
||||||
|
runs-on: native
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
path: dgnum.eu
|
||||||
|
|
||||||
|
- name: Build website
|
||||||
|
run: |
|
||||||
|
# Hack to set the cache in the working directory
|
||||||
|
HOME="$GITHUB_WORKSPACE" nix-build dgnum.eu
|
||||||
|
|
||||||
|
- name: Push new website
|
||||||
|
run: |
|
||||||
|
export HOME="$GITHUB_WORKSPACE"
|
||||||
|
|
||||||
|
echo "[+] Using SSH_DEPLOY_KEY"
|
||||||
|
|
||||||
|
# Setup deploy key
|
||||||
|
DEPLOY_KEY_FILE="$HOME/.ssh/deploy_key"
|
||||||
|
mkdir .ssh
|
||||||
|
echo "${SSH_DEPLOY_KEY}" > "$DEPLOY_KEY_FILE"
|
||||||
|
chmod 600 "$DEPLOY_KEY_FILE"
|
||||||
|
|
||||||
|
# Setup known hosts
|
||||||
|
KNOWN_HOSTS_FILE="$HOME/.ssh/known_hosts"
|
||||||
|
ssh-keyscan -H codeberg.org > "$KNOWN_HOSTS_FILE"
|
||||||
|
|
||||||
|
export GIT_SSH_COMMAND="ssh -i $DEPLOY_KEY_FILE -o UserKnownHostsFile=$KNOWN_HOSTS_FILE"
|
||||||
|
GIT_CMD_REPOSITORY="git@codeberg.org:DGNum/$GIT_REPOSITORY.git"
|
||||||
|
|
||||||
|
echo "[+] Cloning remote repository"
|
||||||
|
git clone --single-branch --depth 1 --branch main "$GIT_CMD_REPOSITORY" "$GIT_REPOSITORY"
|
||||||
|
|
||||||
|
git config --global user.email "$GIT_USER_EMAIL"
|
||||||
|
git config --global user.name "$GIT_USER_NAME"
|
||||||
|
|
||||||
|
echo "[+] Updating assets"
|
||||||
|
rm -r "$GIT_REPOSITORY"/*
|
||||||
|
|
||||||
|
# Update assets
|
||||||
|
cp -R --no-preserve=mode,ownership,timestamps result/* "$GIT_REPOSITORY/"
|
||||||
|
cd "$GIT_REPOSITORY"
|
||||||
|
|
||||||
|
echo "[+] Creating commit"
|
||||||
|
ORIGIN_COMMIT="https://$GIT_ORIGIN_SERVER/$GITHUB_REPOSITORY/commit/$GITHUB_SHA"
|
||||||
|
git add .
|
||||||
|
git diff-index --quiet HEAD || git commit --message "Automatic pages update from $ORIGIN_COMMIT"
|
||||||
|
|
||||||
|
echo "[+] Pushing update"
|
||||||
|
git push "$GIT_CMD_REPOSITORY" --set-upstream main
|
||||||
|
env:
|
||||||
|
SSH_DEPLOY_KEY: ${{ secrets.SSH_DEPLOY_KEY }}
|
||||||
|
GIT_REPOSITORY: pages
|
||||||
|
GIT_USER_EMAIL: automated-update@dgnum.eu
|
||||||
|
GIT_USER_NAME: Forgejo Action
|
||||||
|
GIT_ORIGIN_SERVER: git.hubrecht.ovh
|
10
default.nix
Normal file
10
default.nix
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
(import
|
||||||
|
(
|
||||||
|
let lock = builtins.fromJSON (builtins.readFile ./flake.lock); in
|
||||||
|
fetchTarball {
|
||||||
|
url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
|
||||||
|
sha256 = lock.nodes.flake-compat.locked.narHash;
|
||||||
|
}
|
||||||
|
)
|
||||||
|
{ src = ./.; }
|
||||||
|
).defaultNix
|
17
flake.lock
17
flake.lock
|
@ -1,5 +1,21 @@
|
||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
|
"flake-compat": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1673956053,
|
||||||
|
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"flake-utils": {
|
"flake-utils": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
|
@ -35,6 +51,7 @@
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
"flake-utils": "flake-utils",
|
"flake-utils": "flake-utils",
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs"
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,15 +4,20 @@
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "nixpkgs/nixos-unstable";
|
nixpkgs.url = "nixpkgs/nixos-unstable";
|
||||||
flake-utils.url = "github:numtide/flake-utils";
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
|
flake-compat = {
|
||||||
|
url = "github:edolstra/flake-compat";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, nixpkgs, flake-utils }:
|
outputs = { self, nixpkgs, flake-utils, ... }:
|
||||||
flake-utils.lib.eachDefaultSystem (system:
|
flake-utils.lib.eachDefaultSystem (system:
|
||||||
let
|
let
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
ssg = pkgs.callPackage ./ssg { };
|
ssg = pkgs.callPackage ./ssg { };
|
||||||
defaultInputs = with pkgs; [ nixfmt shellcheck ];
|
defaultInputs = with pkgs; [ nixfmt shellcheck ];
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
formatter = pkgs.nixfmt;
|
formatter = pkgs.nixfmt;
|
||||||
|
|
||||||
devShells = {
|
devShells = {
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
{ glibcLocales, nix-gitignore, ssg, stdenv }:
|
{ glibcLocales
|
||||||
|
, nix-gitignore
|
||||||
|
, ssg
|
||||||
|
, stdenv
|
||||||
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
name = "dgnum.eu";
|
name = "dgnum.eu";
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
{ haskellPackages, locale, nix-gitignore }:
|
{ haskellPackages
|
||||||
|
, nix-gitignore
|
||||||
|
}:
|
||||||
|
|
||||||
let srcs = nix-gitignore.gitignoreSourcePure ../.gitignore ./.;
|
haskellPackages.callCabal2nix
|
||||||
in haskellPackages.callCabal2nix "ssg" srcs { }
|
"ssg"
|
||||||
|
(nix-gitignore.gitignoreSourcePure ../.gitignore ./.)
|
||||||
|
{ }
|
||||||
|
|
Loading…
Reference in a new issue