WIP: Some changes to Hugo Action to make it work better #2

Manually merged
silver merged 8 commits from silver/deploy_user_hugo:main into main 2025-02-14 00:38:31 +00:00
12 changed files with 184 additions and 39 deletions

View file

@ -18,11 +18,34 @@ jobs:
with:
repository: ${{ gitea.repository }}
ref_name: ${{ gitea.ref_name }}
# temp one just to get it "built"
# Step 2: Install latest Hugo
- name: Install Hugo
run: |
HUGO_VERSION=$(curl -s https://api.github.com/repos/gohugoio/hugo/releases/latest | grep -Po '"tag_name": "\K[^"]+' | sed 's/^v//')
wget -q https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_Linux-amd64.deb
dpkg -i ./hugo_extended_${HUGO_VERSION}_Linux-amd64.deb
hugo version
# Step 3: Ensure submodules or themes are initialized (only needed if your using github submodules for theme purposes)
- name: Initialize Submodules
run: git submodule update --init --recursive
# Step 4: Set the correct URL for skynet
- name: Set the site URL correctly
run: sed -i "s%baseURL.*%baseURL='https://${{ env.GITHUB_REPOSITORY_OWNER }}.users.skynet.ie'%" hugo.toml && cat hugo.toml
# Step 4: Build the Hugo site
- name: Build Hugo site
env:
HUGO_ENV: production
run: hugo --minify # Reduce resources by minifying content
# Step 5: Deploy the /public directory to the server
- uses: https://forgejo.skynet.ie/Skynet/actions/deploy_user@v6
with:
ssh_key: ${{ secrets.SSH_KEY }}
username: ${{ env.GITHUB_REPOSITORY_OWNER }}
folder: "src"
folder: "public"
# uncomment below if you want to deploy to a subfolder
#destination: "subfolder"

11
.gitignore vendored
View file

@ -26,3 +26,14 @@ test.*
# Dealing with Mac users
.DS_Store
###################################################
# Hugo Stuff
###################################################
# Dont commit lockfiles used for building like this
.hugo_build.lock
# public is generated
/public
/**/_gen

3
.gitmodules vendored Normal file
View file

@ -0,0 +1,3 @@
[submodule "themes/PaperMod"]
path = themes/PaperMod
url = https://github.com/adityatelange/hugo-PaperMod.git

View file

@ -1,34 +1,46 @@
# Deploying to Skynet
This is a repo that is used as a template to deploy to Skynet
## Create a Skynet Account
To be able to have a website on Skynet you must first have a Skynet account.
[Instructions on how to create a Skynet Account](https://wiki.skynet.ie/tutorials/skynet/create_account)
---
## Create SSH Key
Details to do this can be found here: [wiki](https://wiki.skynet.ie/tutorials/skynet/create_ssh/)
It is recommended to create a new key for just Forgejo Actions.
**_Do not add a password to the key_**, it will cause the pipeline to fail.
# Hugo Site Setup Guide
### Add key to Skynet account
Add the contents of ``$USERNAME.pub`` (public key) to [your skynet account](https://account.skynet.ie/modify_ssh)
``[CTRL]+[A]`` and ``[CTRL]+[V]`` will copy/paste everything.
The key must remain in its "armor" and the trailing newline at the end must be preserved.
## **1. Set Up Remote Keys**
Follow the steps in the link below to configure your remote keys:
🔗 [Remote Key Setup Instructions](https://forgejo.skynet.ie/Skynet/deploy_user)
## Secrets
One secret must be added to make this work.
---
Secrets are found in your repo under ``Settings > Actions > Secrets``
## **2. Install Hugo**
Install Hugo by following the official guide:
🔗 [Hugo Installation Instructions](https://gohugo.io/installation/)
* SSH_KEY
* This is your private key that was generated above
* Copy paste it exactly
### Nix
If you are using Nix or NixOS you can use ``nix develop`` to enable a local shell which contains Hugo.
End result should look like this:
![Secrets](resources/Secrets.png)
---
## **3. Clone the Repository**
Run the following command to clone the repository:
```sh
git clone <repo>
## Make changes to ``src``
Make changes to the files in ``src``.
Commit and push.
If everything was set up fine then your site will soon be live on ``https://$USERNAME.users.skynet.ie``
# Update the submodules
git submodule update --init --recursive
```
Replace `<repo>` with the actual repository URL.
---
## **4. Choose & Configure a Theme**
### **If you want to continue using PaperMod**
You can find customization and usage details here:
🔗 [PaperMod Wiki](https://github.com/adityatelange/hugo-PaperMod/wiki/)
### **If you want to switch themes**
Browse other Hugo themes here:
🔗 [Hugo Themes](https://themes.gohugo.io/)
**Note:** This project uses **YAML** for configuration, while many Hugo themes use **TOML**. Adjust the settings accordingly.
---

5
archetypes/default.md Normal file
View file

@ -0,0 +1,5 @@
+++
title = '{{ replace .File.ContentBaseName "-" " " | title }}'
date = {{ .Date }}
draft = true
+++

View file

@ -0,0 +1,7 @@
+++
title = 'My First Draft'
date = 2025-02-13T13:26:35Z
draft = true
+++
This page wont be shown publicly yet

View file

@ -0,0 +1,7 @@
+++
title = 'My First Post'
date = 2025-02-13T13:26:35Z
draft = false
+++
Put yer markdown content here

60
flake.lock generated Normal file
View file

@ -0,0 +1,60 @@
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1739214665,
"narHash": "sha256-26L8VAu3/1YRxS8MHgBOyOM8xALdo6N0I04PgorE7UM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "64e75cd44acf21c7933d61d7721e812eac1b5a0a",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-unstable",
"type": "indirect"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

24
flake.nix Normal file
View file

@ -0,0 +1,24 @@
{
inputs = {
nixpkgs.url = "nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = {
self,
nixpkgs,
...
} @ inputs: let
pkgs = nixpkgs.legacyPackages.x86_64-linux.pkgs;
in {
devShells.x86_64-linux.default = pkgs.mkShell {
name = "Hugo build env";
nativeBuildInputs = [
pkgs.hugo
];
buildInputs = [];
# shellHook = ''export EDITOR="${pkgs.nano}/bin/nano --nonewlines"; unset LD_LIBRARY_PATH;'';
};
};
}

4
hugo.toml Normal file
View file

@ -0,0 +1,4 @@
baseURL = 'https://example.org/'
languageCode = 'en-us'
title = 'My New Hugo Site'
theme = 'PaperMod'

View file

@ -1,12 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title></title>
</head>
<body>
<div>
<h1>Hello World!</h1>
<h2>All hail Skynet!!</h2>
</div>
</body>
</html>

1
themes/PaperMod Submodule

@ -0,0 +1 @@
Subproject commit a020be2137458dd0a1f4f3a024cd7b076931e9e3