My first post
Fixing my mistake!
This commit is contained in:
commit
1e96c1dd91
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
[submodule "themes/PaperMod"]
|
||||
path = themes/PaperMod
|
||||
url = https://github.com/adityatelange/hugo-PaperMod.git
|
||||
0
.hugo_build.lock
Normal file
0
.hugo_build.lock
Normal file
5
archetypes/default.md
Normal file
5
archetypes/default.md
Normal file
@ -0,0 +1,5 @@
|
||||
+++
|
||||
date = '{{ .Date }}'
|
||||
draft = true
|
||||
title = '{{ replace .File.ContentBaseName "-" " " | title }}'
|
||||
+++
|
||||
53
content/posts/first-attempt.md
Normal file
53
content/posts/first-attempt.md
Normal file
@ -0,0 +1,53 @@
|
||||
---
|
||||
title: "Automating Hugo Deployment with Gitea Actions"
|
||||
date: 2025-02-27
|
||||
author: "Dev"
|
||||
tags: ["gitea", "ci/cd", "hugo"]
|
||||
---
|
||||
|
||||
Recently, I tried setting up **Gitea Actions** to automatically update my Hugo blog whenever I pushed new content. The idea was simple:
|
||||
- Use Gitea’s built-in CI/CD to pull the repo,
|
||||
- Build the site using Hugo,
|
||||
- Deploy it to the server.
|
||||
|
||||
## Setting Up Gitea Actions
|
||||
First, I created a `.gitea/workflows/deploy.yml` file with the following steps:
|
||||
|
||||
```yaml
|
||||
name: Deploy Hugo Site
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Clone repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install Hugo
|
||||
run: |
|
||||
sudo apt update && sudo apt install -y hugo
|
||||
|
||||
- name: Build site
|
||||
run: hugo -D
|
||||
|
||||
- name: Deploy to server
|
||||
run: |
|
||||
scp -r public/* user@server:/var/www/html/
|
||||
|
||||
```
|
||||
|
||||
# Authentication Issues 😩
|
||||
To deploy, I needed SSH access to the server. Gitea doesn’t have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.
|
||||
|
||||

|
||||
|
||||
I knew this wasn't ideal, but I just wanted to get it working first. Unfortunately, after multiple attempts, it still failed with permission denied (publickey) errors.
|
||||
|
||||
# What's Next? 🤔
|
||||
Instead of fighting with Gitea Actions, I decided to try something else. In my next post, I'll explain how I switched to a simpler, more reliable approach using a sync service.
|
||||
|
||||
16
hugo.yml
Normal file
16
hugo.yml
Normal file
@ -0,0 +1,16 @@
|
||||
baseURL: 'https://blog.rakowskiii.com/'
|
||||
languageCode: 'en-us'
|
||||
title: 'Dev Logbook'
|
||||
theme: "PaperMod"
|
||||
|
||||
params:
|
||||
defaultTheme: "light"
|
||||
homeInfoParams:
|
||||
Title: "Dev Journey Logbook"
|
||||
Subtitle: "A place to document my journey as a developer"
|
||||
Content: >
|
||||
Hi, I'm Joe Doe and this is my journey as a developer. I'm currently learning web development and I'm documenting my journey here. I hope you find something useful here. Feel free to reach out to me if you have any questions or feedback.
|
||||
socialIcons:
|
||||
- name: github
|
||||
title: View Source on Github
|
||||
url: "https://gitea.rakowskiii.com/johndoe/logbook"
|
||||
155
public/404.html
Normal file
155
public/404.html
Normal file
@ -0,0 +1,155 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="auto">
|
||||
|
||||
<head><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="robots" content="index, follow">
|
||||
<title>404 Page not found | Dev Logbook</title>
|
||||
<meta name="keywords" content="">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
<link rel="canonical" href="https://blog.rakowskiii.com/404.html">
|
||||
<link crossorigin="anonymous" href="/assets/css/stylesheet.45e028aa8ce0961349adf411b013ee39406be2c0bc80d4ea3fc04555f7f4611a.css" integrity="sha256-ReAoqozglhNJrfQRsBPuOUBr4sC8gNTqP8BFVff0YRo=" rel="preload stylesheet" as="style">
|
||||
<link rel="icon" href="https://blog.rakowskiii.com/favicon.ico">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="https://blog.rakowskiii.com/favicon-16x16.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="https://blog.rakowskiii.com/favicon-32x32.png">
|
||||
<link rel="apple-touch-icon" href="https://blog.rakowskiii.com/apple-touch-icon.png">
|
||||
<link rel="mask-icon" href="https://blog.rakowskiii.com/safari-pinned-tab.svg">
|
||||
<meta name="theme-color" content="#2e2e33">
|
||||
<meta name="msapplication-TileColor" content="#2e2e33">
|
||||
<link rel="alternate" hreflang="en" href="https://blog.rakowskiii.com/404.html">
|
||||
<noscript>
|
||||
<style>
|
||||
#theme-toggle,
|
||||
.top-link {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript><meta property="og:url" content="https://blog.rakowskiii.com/404.html">
|
||||
<meta property="og:site_name" content="Dev Logbook">
|
||||
<meta property="og:title" content="404 Page not found">
|
||||
<meta property="og:locale" content="en-us">
|
||||
<meta property="og:type" content="website">
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="404 Page not found">
|
||||
<meta name="twitter:description" content="">
|
||||
|
||||
</head>
|
||||
|
||||
<body class="list" id="top">
|
||||
<script>
|
||||
if (localStorage.getItem("pref-theme") === "dark") {
|
||||
document.body.classList.add('dark');
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<header class="header">
|
||||
<nav class="nav">
|
||||
<div class="logo">
|
||||
<a href="https://blog.rakowskiii.com/" accesskey="h" title="Dev Logbook (Alt + H)">Dev Logbook</a>
|
||||
<div class="logo-switches">
|
||||
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
|
||||
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||||
</svg>
|
||||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
<div class="not-found">404</div>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<span>© 2025 <a href="https://blog.rakowskiii.com/">Dev Logbook</a></span> ·
|
||||
|
||||
<span>
|
||||
Powered by
|
||||
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
|
||||
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
|
||||
</span>
|
||||
</footer>
|
||||
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
||||
<path d="M12 6H0l6-6z" />
|
||||
</svg>
|
||||
</a>
|
||||
|
||||
<script>
|
||||
let menu = document.getElementById('menu')
|
||||
if (menu) {
|
||||
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
|
||||
menu.onscroll = function () {
|
||||
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
||||
}
|
||||
}
|
||||
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener("click", function (e) {
|
||||
e.preventDefault();
|
||||
var id = this.getAttribute("href").substr(1);
|
||||
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
||||
behavior: "smooth"
|
||||
});
|
||||
} else {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
|
||||
}
|
||||
if (id === "top") {
|
||||
history.replaceState(null, null, " ");
|
||||
} else {
|
||||
history.pushState(null, null, `#${id}`);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
<script>
|
||||
var mybutton = document.getElementById("top-link");
|
||||
window.onscroll = function () {
|
||||
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
|
||||
mybutton.style.visibility = "visible";
|
||||
mybutton.style.opacity = "1";
|
||||
} else {
|
||||
mybutton.style.visibility = "hidden";
|
||||
mybutton.style.opacity = "0";
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<script>
|
||||
document.getElementById("theme-toggle").addEventListener("click", () => {
|
||||
if (document.body.className.includes("dark")) {
|
||||
document.body.classList.remove('dark');
|
||||
localStorage.setItem("pref-theme", 'light');
|
||||
} else {
|
||||
document.body.classList.add('dark');
|
||||
localStorage.setItem("pref-theme", 'dark');
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
File diff suppressed because one or more lines are too long
161
public/categories/index.html
Normal file
161
public/categories/index.html
Normal file
@ -0,0 +1,161 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="auto">
|
||||
|
||||
<head><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="robots" content="index, follow">
|
||||
<title>Categories | Dev Logbook</title>
|
||||
<meta name="keywords" content="">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
<link rel="canonical" href="https://blog.rakowskiii.com/categories/">
|
||||
<link crossorigin="anonymous" href="/assets/css/stylesheet.45e028aa8ce0961349adf411b013ee39406be2c0bc80d4ea3fc04555f7f4611a.css" integrity="sha256-ReAoqozglhNJrfQRsBPuOUBr4sC8gNTqP8BFVff0YRo=" rel="preload stylesheet" as="style">
|
||||
<link rel="icon" href="https://blog.rakowskiii.com/favicon.ico">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="https://blog.rakowskiii.com/favicon-16x16.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="https://blog.rakowskiii.com/favicon-32x32.png">
|
||||
<link rel="apple-touch-icon" href="https://blog.rakowskiii.com/apple-touch-icon.png">
|
||||
<link rel="mask-icon" href="https://blog.rakowskiii.com/safari-pinned-tab.svg">
|
||||
<meta name="theme-color" content="#2e2e33">
|
||||
<meta name="msapplication-TileColor" content="#2e2e33">
|
||||
<link rel="alternate" type="application/rss+xml" href="https://blog.rakowskiii.com/categories/index.xml">
|
||||
<link rel="alternate" hreflang="en" href="https://blog.rakowskiii.com/categories/">
|
||||
<noscript>
|
||||
<style>
|
||||
#theme-toggle,
|
||||
.top-link {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript><meta property="og:url" content="https://blog.rakowskiii.com/categories/">
|
||||
<meta property="og:site_name" content="Dev Logbook">
|
||||
<meta property="og:title" content="Categories">
|
||||
<meta property="og:locale" content="en-us">
|
||||
<meta property="og:type" content="website">
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="Categories">
|
||||
<meta name="twitter:description" content="">
|
||||
|
||||
</head>
|
||||
|
||||
<body class="list" id="top">
|
||||
<script>
|
||||
if (localStorage.getItem("pref-theme") === "dark") {
|
||||
document.body.classList.add('dark');
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<header class="header">
|
||||
<nav class="nav">
|
||||
<div class="logo">
|
||||
<a href="https://blog.rakowskiii.com/" accesskey="h" title="Dev Logbook (Alt + H)">Dev Logbook</a>
|
||||
<div class="logo-switches">
|
||||
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
|
||||
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||||
</svg>
|
||||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
<header class="page-header">
|
||||
<h1>Categories</h1>
|
||||
</header>
|
||||
|
||||
<ul class="terms-tags">
|
||||
</ul>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<span>© 2025 <a href="https://blog.rakowskiii.com/">Dev Logbook</a></span> ·
|
||||
|
||||
<span>
|
||||
Powered by
|
||||
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
|
||||
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
|
||||
</span>
|
||||
</footer>
|
||||
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
||||
<path d="M12 6H0l6-6z" />
|
||||
</svg>
|
||||
</a>
|
||||
|
||||
<script>
|
||||
let menu = document.getElementById('menu')
|
||||
if (menu) {
|
||||
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
|
||||
menu.onscroll = function () {
|
||||
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
||||
}
|
||||
}
|
||||
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener("click", function (e) {
|
||||
e.preventDefault();
|
||||
var id = this.getAttribute("href").substr(1);
|
||||
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
||||
behavior: "smooth"
|
||||
});
|
||||
} else {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
|
||||
}
|
||||
if (id === "top") {
|
||||
history.replaceState(null, null, " ");
|
||||
} else {
|
||||
history.pushState(null, null, `#${id}`);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
<script>
|
||||
var mybutton = document.getElementById("top-link");
|
||||
window.onscroll = function () {
|
||||
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
|
||||
mybutton.style.visibility = "visible";
|
||||
mybutton.style.opacity = "1";
|
||||
} else {
|
||||
mybutton.style.visibility = "hidden";
|
||||
mybutton.style.opacity = "0";
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<script>
|
||||
document.getElementById("theme-toggle").addEventListener("click", () => {
|
||||
if (document.body.className.includes("dark")) {
|
||||
document.body.classList.remove('dark');
|
||||
localStorage.setItem("pref-theme", 'light');
|
||||
} else {
|
||||
document.body.classList.add('dark');
|
||||
localStorage.setItem("pref-theme", 'dark');
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
11
public/categories/index.xml
Normal file
11
public/categories/index.xml
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
|
||||
<channel>
|
||||
<title>Categories on Dev Logbook</title>
|
||||
<link>https://blog.rakowskiii.com/categories/</link>
|
||||
<description>Recent content in Categories on Dev Logbook</description>
|
||||
<generator>Hugo -- 0.145.0</generator>
|
||||
<language>en-us</language>
|
||||
<atom:link href="https://blog.rakowskiii.com/categories/index.xml" rel="self" type="application/rss+xml" />
|
||||
</channel>
|
||||
</rss>
|
||||
BIN
public/images/mykey.png
Normal file
BIN
public/images/mykey.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 35 KiB |
206
public/index.html
Normal file
206
public/index.html
Normal file
@ -0,0 +1,206 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="auto">
|
||||
|
||||
<head>
|
||||
<meta name="generator" content="Hugo 0.145.0"><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="robots" content="index, follow">
|
||||
<title>Dev Logbook</title>
|
||||
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
<link rel="canonical" href="https://blog.rakowskiii.com/">
|
||||
<link crossorigin="anonymous" href="/assets/css/stylesheet.45e028aa8ce0961349adf411b013ee39406be2c0bc80d4ea3fc04555f7f4611a.css" integrity="sha256-ReAoqozglhNJrfQRsBPuOUBr4sC8gNTqP8BFVff0YRo=" rel="preload stylesheet" as="style">
|
||||
<link rel="icon" href="https://blog.rakowskiii.com/favicon.ico">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="https://blog.rakowskiii.com/favicon-16x16.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="https://blog.rakowskiii.com/favicon-32x32.png">
|
||||
<link rel="apple-touch-icon" href="https://blog.rakowskiii.com/apple-touch-icon.png">
|
||||
<link rel="mask-icon" href="https://blog.rakowskiii.com/safari-pinned-tab.svg">
|
||||
<meta name="theme-color" content="#2e2e33">
|
||||
<meta name="msapplication-TileColor" content="#2e2e33">
|
||||
<link rel="alternate" type="application/rss+xml" href="https://blog.rakowskiii.com/index.xml">
|
||||
<link rel="alternate" hreflang="en" href="https://blog.rakowskiii.com/">
|
||||
<noscript>
|
||||
<style>
|
||||
#theme-toggle,
|
||||
.top-link {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript><meta property="og:url" content="https://blog.rakowskiii.com/">
|
||||
<meta property="og:site_name" content="Dev Logbook">
|
||||
<meta property="og:title" content="Dev Logbook">
|
||||
<meta property="og:locale" content="en-us">
|
||||
<meta property="og:type" content="website">
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="Dev Logbook">
|
||||
<meta name="twitter:description" content="">
|
||||
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Organization",
|
||||
"name": "Dev Logbook",
|
||||
"url": "https://blog.rakowskiii.com/",
|
||||
"description": "",
|
||||
"logo": "https://blog.rakowskiii.com/favicon.ico",
|
||||
"sameAs": [
|
||||
"https://gitea.rakowskiii.com/johndoe/logbook"
|
||||
]
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body class="list" id="top">
|
||||
<script>
|
||||
if (localStorage.getItem("pref-theme") === "dark") {
|
||||
document.body.classList.add('dark');
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<header class="header">
|
||||
<nav class="nav">
|
||||
<div class="logo">
|
||||
<a href="https://blog.rakowskiii.com/" accesskey="h" title="Dev Logbook (Alt + H)">Dev Logbook</a>
|
||||
<div class="logo-switches">
|
||||
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
|
||||
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||||
</svg>
|
||||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
<article class="first-entry home-info">
|
||||
<header class="entry-header">
|
||||
<h1>Dev Journey Logbook</h1>
|
||||
</header>
|
||||
<div class="entry-content">
|
||||
Hi, I’m Joe Doe and this is my journey as a developer. I’m currently learning web development and I’m documenting my journey here. I hope you find something useful here. Feel free to reach out to me if you have any questions or feedback.
|
||||
</div>
|
||||
<footer class="entry-footer">
|
||||
<div class="social-icons" >
|
||||
<a href="https://gitea.rakowskiii.com/johndoe/logbook" target="_blank" rel="noopener noreferrer me"
|
||||
title="View Source on Github">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path
|
||||
d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22">
|
||||
</path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
</article>
|
||||
|
||||
<article class="post-entry">
|
||||
<header class="entry-header">
|
||||
<h2 class="entry-hint-parent">Automating Hugo Deployment with Gitea Actions
|
||||
</h2>
|
||||
</header>
|
||||
<div class="entry-content">
|
||||
<p>Recently, I tried setting up Gitea Actions to automatically update my Hugo blog whenever I pushed new content. The idea was simple:
|
||||
Use Gitea’s built-in CI/CD to pull the repo, Build the site using Hugo, Deploy it to the server. Setting Up Gitea Actions First, I created a .gitea/workflows/deploy.yml file with the following steps:
|
||||
name: Deploy Hugo Site on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Clone repository uses: actions/checkout@v3 - name: Install Hugo run: | sudo apt update && sudo apt install -y hugo - name: Build site run: hugo -D - name: Deploy to server run: | scp -r public/* user@server:/var/www/html/ Authentication Issues 😩 To deploy, I needed SSH access to the server. Gitea doesn’t have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.
|
||||
...</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2025-02-27 00:00:00 +0000 UTC'>February 27, 2025</span> · Dev</footer>
|
||||
<a class="entry-link" aria-label="post link to Automating Hugo Deployment with Gitea Actions" href="https://blog.rakowskiii.com/posts/first-attempt/"></a>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<span>© 2025 <a href="https://blog.rakowskiii.com/">Dev Logbook</a></span> ·
|
||||
|
||||
<span>
|
||||
Powered by
|
||||
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
|
||||
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
|
||||
</span>
|
||||
</footer>
|
||||
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
||||
<path d="M12 6H0l6-6z" />
|
||||
</svg>
|
||||
</a>
|
||||
|
||||
<script>
|
||||
let menu = document.getElementById('menu')
|
||||
if (menu) {
|
||||
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
|
||||
menu.onscroll = function () {
|
||||
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
||||
}
|
||||
}
|
||||
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener("click", function (e) {
|
||||
e.preventDefault();
|
||||
var id = this.getAttribute("href").substr(1);
|
||||
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
||||
behavior: "smooth"
|
||||
});
|
||||
} else {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
|
||||
}
|
||||
if (id === "top") {
|
||||
history.replaceState(null, null, " ");
|
||||
} else {
|
||||
history.pushState(null, null, `#${id}`);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
<script>
|
||||
var mybutton = document.getElementById("top-link");
|
||||
window.onscroll = function () {
|
||||
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
|
||||
mybutton.style.visibility = "visible";
|
||||
mybutton.style.opacity = "1";
|
||||
} else {
|
||||
mybutton.style.visibility = "hidden";
|
||||
mybutton.style.opacity = "0";
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<script>
|
||||
document.getElementById("theme-toggle").addEventListener("click", () => {
|
||||
if (document.body.className.includes("dark")) {
|
||||
document.body.classList.remove('dark');
|
||||
localStorage.setItem("pref-theme", 'light');
|
||||
} else {
|
||||
document.body.classList.add('dark');
|
||||
localStorage.setItem("pref-theme", 'dark');
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
52
public/index.xml
Normal file
52
public/index.xml
Normal file
@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
|
||||
<channel>
|
||||
<title>Dev Logbook</title>
|
||||
<link>https://blog.rakowskiii.com/</link>
|
||||
<description>Recent content on Dev Logbook</description>
|
||||
<generator>Hugo -- 0.145.0</generator>
|
||||
<language>en-us</language>
|
||||
<lastBuildDate>Thu, 27 Feb 2025 00:00:00 +0000</lastBuildDate>
|
||||
<atom:link href="https://blog.rakowskiii.com/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Automating Hugo Deployment with Gitea Actions</title>
|
||||
<link>https://blog.rakowskiii.com/posts/first-attempt/</link>
|
||||
<pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate>
|
||||
<guid>https://blog.rakowskiii.com/posts/first-attempt/</guid>
|
||||
<description><p>Recently, I tried setting up <strong>Gitea Actions</strong> to automatically update my Hugo blog whenever I pushed new content. The idea was simple:</p>
|
||||
<ul>
|
||||
<li>Use Gitea’s built-in CI/CD to pull the repo,</li>
|
||||
<li>Build the site using Hugo,</li>
|
||||
<li>Deploy it to the server.</li>
|
||||
</ul>
|
||||
<h2 id="setting-up-gitea-actions">Setting Up Gitea Actions</h2>
|
||||
<p>First, I created a <code>.gitea/workflows/deploy.yml</code> file with the following steps:</p>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">name</span>: <span style="color:#ae81ff">Deploy Hugo Site</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#f92672">on</span>:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">push</span>:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">branches</span>:
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">main</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#f92672">jobs</span>:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">build</span>:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">runs-on</span>: <span style="color:#ae81ff">ubuntu-latest</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">steps</span>:
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Clone repository</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">uses</span>: <span style="color:#ae81ff">actions/checkout@v3</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Install Hugo</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">run</span>: |<span style="color:#e6db74">
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> sudo apt update &amp;&amp; sudo apt install -y hugo</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Build site</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">run</span>: <span style="color:#ae81ff">hugo -D</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Deploy to server</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">run</span>: |<span style="color:#e6db74">
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> scp -r public/* user@server:/var/www/html/</span>
|
||||
</span></span></code></pre></div><h1 id="authentication-issues-">Authentication Issues 😩</h1>
|
||||
<p>To deploy, I needed SSH access to the server. Gitea doesn’t have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.</p></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
10
public/page/1/index.html
Normal file
10
public/page/1/index.html
Normal file
@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<title>https://blog.rakowskiii.com/</title>
|
||||
<link rel="canonical" href="https://blog.rakowskiii.com/">
|
||||
<meta name="robots" content="noindex">
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="refresh" content="0; url=https://blog.rakowskiii.com/">
|
||||
</head>
|
||||
</html>
|
||||
344
public/posts/first-attempt/index.html
Normal file
344
public/posts/first-attempt/index.html
Normal file
@ -0,0 +1,344 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="auto">
|
||||
|
||||
<head><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="robots" content="index, follow">
|
||||
<title>Automating Hugo Deployment with Gitea Actions | Dev Logbook</title>
|
||||
<meta name="keywords" content="gitea, ci/cd, hugo">
|
||||
<meta name="description" content="Recently, I tried setting up Gitea Actions to automatically update my Hugo blog whenever I pushed new content. The idea was simple:
|
||||
|
||||
Use Gitea’s built-in CI/CD to pull the repo,
|
||||
Build the site using Hugo,
|
||||
Deploy it to the server.
|
||||
|
||||
Setting Up Gitea Actions
|
||||
First, I created a .gitea/workflows/deploy.yml file with the following steps:
|
||||
name: Deploy Hugo Site
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Clone repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install Hugo
|
||||
run: |
|
||||
sudo apt update && sudo apt install -y hugo
|
||||
|
||||
- name: Build site
|
||||
run: hugo -D
|
||||
|
||||
- name: Deploy to server
|
||||
run: |
|
||||
scp -r public/* user@server:/var/www/html/
|
||||
Authentication Issues 😩
|
||||
To deploy, I needed SSH access to the server. Gitea doesn’t have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.">
|
||||
<meta name="author" content="Dev">
|
||||
<link rel="canonical" href="https://blog.rakowskiii.com/posts/first-attempt/">
|
||||
<link crossorigin="anonymous" href="/assets/css/stylesheet.45e028aa8ce0961349adf411b013ee39406be2c0bc80d4ea3fc04555f7f4611a.css" integrity="sha256-ReAoqozglhNJrfQRsBPuOUBr4sC8gNTqP8BFVff0YRo=" rel="preload stylesheet" as="style">
|
||||
<link rel="icon" href="https://blog.rakowskiii.com/favicon.ico">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="https://blog.rakowskiii.com/favicon-16x16.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="https://blog.rakowskiii.com/favicon-32x32.png">
|
||||
<link rel="apple-touch-icon" href="https://blog.rakowskiii.com/apple-touch-icon.png">
|
||||
<link rel="mask-icon" href="https://blog.rakowskiii.com/safari-pinned-tab.svg">
|
||||
<meta name="theme-color" content="#2e2e33">
|
||||
<meta name="msapplication-TileColor" content="#2e2e33">
|
||||
<link rel="alternate" hreflang="en" href="https://blog.rakowskiii.com/posts/first-attempt/">
|
||||
<noscript>
|
||||
<style>
|
||||
#theme-toggle,
|
||||
.top-link {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript><meta property="og:url" content="https://blog.rakowskiii.com/posts/first-attempt/">
|
||||
<meta property="og:site_name" content="Dev Logbook">
|
||||
<meta property="og:title" content="Automating Hugo Deployment with Gitea Actions">
|
||||
<meta property="og:description" content="Recently, I tried setting up Gitea Actions to automatically update my Hugo blog whenever I pushed new content. The idea was simple:
|
||||
Use Gitea’s built-in CI/CD to pull the repo, Build the site using Hugo, Deploy it to the server. Setting Up Gitea Actions First, I created a .gitea/workflows/deploy.yml file with the following steps:
|
||||
name: Deploy Hugo Site on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Clone repository uses: actions/checkout@v3 - name: Install Hugo run: | sudo apt update && sudo apt install -y hugo - name: Build site run: hugo -D - name: Deploy to server run: | scp -r public/* user@server:/var/www/html/ Authentication Issues 😩 To deploy, I needed SSH access to the server. Gitea doesn’t have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.">
|
||||
<meta property="og:locale" content="en-us">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="article:section" content="posts">
|
||||
<meta property="article:published_time" content="2025-02-27T00:00:00+00:00">
|
||||
<meta property="article:modified_time" content="2025-02-27T00:00:00+00:00">
|
||||
<meta property="article:tag" content="Gitea">
|
||||
<meta property="article:tag" content="Ci/Cd">
|
||||
<meta property="article:tag" content="Hugo">
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="Automating Hugo Deployment with Gitea Actions">
|
||||
<meta name="twitter:description" content="Recently, I tried setting up Gitea Actions to automatically update my Hugo blog whenever I pushed new content. The idea was simple:
|
||||
|
||||
Use Gitea’s built-in CI/CD to pull the repo,
|
||||
Build the site using Hugo,
|
||||
Deploy it to the server.
|
||||
|
||||
Setting Up Gitea Actions
|
||||
First, I created a .gitea/workflows/deploy.yml file with the following steps:
|
||||
name: Deploy Hugo Site
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Clone repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install Hugo
|
||||
run: |
|
||||
sudo apt update && sudo apt install -y hugo
|
||||
|
||||
- name: Build site
|
||||
run: hugo -D
|
||||
|
||||
- name: Deploy to server
|
||||
run: |
|
||||
scp -r public/* user@server:/var/www/html/
|
||||
Authentication Issues 😩
|
||||
To deploy, I needed SSH access to the server. Gitea doesn’t have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.">
|
||||
|
||||
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "BreadcrumbList",
|
||||
"itemListElement": [
|
||||
{
|
||||
"@type": "ListItem",
|
||||
"position": 1 ,
|
||||
"name": "Posts",
|
||||
"item": "https://blog.rakowskiii.com/posts/"
|
||||
},
|
||||
{
|
||||
"@type": "ListItem",
|
||||
"position": 2 ,
|
||||
"name": "Automating Hugo Deployment with Gitea Actions",
|
||||
"item": "https://blog.rakowskiii.com/posts/first-attempt/"
|
||||
}
|
||||
]
|
||||
}
|
||||
</script>
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "BlogPosting",
|
||||
"headline": "Automating Hugo Deployment with Gitea Actions",
|
||||
"name": "Automating Hugo Deployment with Gitea Actions",
|
||||
"description": "Recently, I tried setting up Gitea Actions to automatically update my Hugo blog whenever I pushed new content. The idea was simple:\nUse Gitea’s built-in CI/CD to pull the repo, Build the site using Hugo, Deploy it to the server. Setting Up Gitea Actions First, I created a .gitea/workflows/deploy.yml file with the following steps:\nname: Deploy Hugo Site on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Clone repository uses: actions/checkout@v3 - name: Install Hugo run: | sudo apt update \u0026amp;\u0026amp; sudo apt install -y hugo - name: Build site run: hugo -D - name: Deploy to server run: | scp -r public/* user@server:/var/www/html/ Authentication Issues 😩 To deploy, I needed SSH access to the server. Gitea doesn’t have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.\n",
|
||||
"keywords": [
|
||||
"gitea", "ci/cd", "hugo"
|
||||
],
|
||||
"articleBody": "Recently, I tried setting up Gitea Actions to automatically update my Hugo blog whenever I pushed new content. The idea was simple:\nUse Gitea’s built-in CI/CD to pull the repo, Build the site using Hugo, Deploy it to the server. Setting Up Gitea Actions First, I created a .gitea/workflows/deploy.yml file with the following steps:\nname: Deploy Hugo Site on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Clone repository uses: actions/checkout@v3 - name: Install Hugo run: | sudo apt update \u0026\u0026 sudo apt install -y hugo - name: Build site run: hugo -D - name: Deploy to server run: | scp -r public/* user@server:/var/www/html/ Authentication Issues 😩 To deploy, I needed SSH access to the server. Gitea doesn’t have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.\nI knew this wasn’t ideal, but I just wanted to get it working first. Unfortunately, after multiple attempts, it still failed with permission denied (publickey) errors.\nWhat’s Next? 🤔 Instead of fighting with Gitea Actions, I decided to try something else. In my next post, I’ll explain how I switched to a simpler, more reliable approach using a sync service.\n",
|
||||
"wordCount" : "200",
|
||||
"inLanguage": "en",
|
||||
"datePublished": "2025-02-27T00:00:00Z",
|
||||
"dateModified": "2025-02-27T00:00:00Z",
|
||||
"author":{
|
||||
"@type": "Person",
|
||||
"name": "Dev"
|
||||
},
|
||||
"mainEntityOfPage": {
|
||||
"@type": "WebPage",
|
||||
"@id": "https://blog.rakowskiii.com/posts/first-attempt/"
|
||||
},
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"name": "Dev Logbook",
|
||||
"logo": {
|
||||
"@type": "ImageObject",
|
||||
"url": "https://blog.rakowskiii.com/favicon.ico"
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body class="" id="top">
|
||||
<script>
|
||||
if (localStorage.getItem("pref-theme") === "dark") {
|
||||
document.body.classList.add('dark');
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<header class="header">
|
||||
<nav class="nav">
|
||||
<div class="logo">
|
||||
<a href="https://blog.rakowskiii.com/" accesskey="h" title="Dev Logbook (Alt + H)">Dev Logbook</a>
|
||||
<div class="logo-switches">
|
||||
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
|
||||
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||||
</svg>
|
||||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
|
||||
<article class="post-single">
|
||||
<header class="post-header">
|
||||
|
||||
<h1 class="post-title entry-hint-parent">
|
||||
Automating Hugo Deployment with Gitea Actions
|
||||
</h1>
|
||||
<div class="post-meta"><span title='2025-02-27 00:00:00 +0000 UTC'>February 27, 2025</span> · Dev
|
||||
|
||||
</div>
|
||||
</header>
|
||||
<div class="post-content"><p>Recently, I tried setting up <strong>Gitea Actions</strong> to automatically update my Hugo blog whenever I pushed new content. The idea was simple:</p>
|
||||
<ul>
|
||||
<li>Use Gitea’s built-in CI/CD to pull the repo,</li>
|
||||
<li>Build the site using Hugo,</li>
|
||||
<li>Deploy it to the server.</li>
|
||||
</ul>
|
||||
<h2 id="setting-up-gitea-actions">Setting Up Gitea Actions<a hidden class="anchor" aria-hidden="true" href="#setting-up-gitea-actions">#</a></h2>
|
||||
<p>First, I created a <code>.gitea/workflows/deploy.yml</code> file with the following steps:</p>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">name</span>: <span style="color:#ae81ff">Deploy Hugo Site</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#f92672">on</span>:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">push</span>:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">branches</span>:
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">main</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#f92672">jobs</span>:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">build</span>:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">runs-on</span>: <span style="color:#ae81ff">ubuntu-latest</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">steps</span>:
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Clone repository</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">uses</span>: <span style="color:#ae81ff">actions/checkout@v3</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Install Hugo</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">run</span>: |<span style="color:#e6db74">
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> sudo apt update && sudo apt install -y hugo</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Build site</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">run</span>: <span style="color:#ae81ff">hugo -D</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Deploy to server</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">run</span>: |<span style="color:#e6db74">
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> scp -r public/* user@server:/var/www/html/</span>
|
||||
</span></span></code></pre></div><h1 id="authentication-issues-">Authentication Issues 😩<a hidden class="anchor" aria-hidden="true" href="#authentication-issues-">#</a></h1>
|
||||
<p>To deploy, I needed SSH access to the server. Gitea doesn’t have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.</p>
|
||||
<p><img alt="My SSH Key" loading="lazy" src="/images/mykey.png"></p>
|
||||
<p>I knew this wasn’t ideal, but I just wanted to get it working first. Unfortunately, after multiple attempts, it still failed with permission denied (publickey) errors.</p>
|
||||
<h1 id="whats-next-">What’s Next? 🤔<a hidden class="anchor" aria-hidden="true" href="#whats-next-">#</a></h1>
|
||||
<p>Instead of fighting with Gitea Actions, I decided to try something else. In my next post, I’ll explain how I switched to a simpler, more reliable approach using a sync service.</p>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<footer class="post-footer">
|
||||
<ul class="post-tags">
|
||||
<li><a href="https://blog.rakowskiii.com/tags/gitea/">Gitea</a></li>
|
||||
<li><a href="https://blog.rakowskiii.com/tags/ci/cd/">Ci/Cd</a></li>
|
||||
<li><a href="https://blog.rakowskiii.com/tags/hugo/">Hugo</a></li>
|
||||
</ul>
|
||||
</footer>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<span>© 2025 <a href="https://blog.rakowskiii.com/">Dev Logbook</a></span> ·
|
||||
|
||||
<span>
|
||||
Powered by
|
||||
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
|
||||
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
|
||||
</span>
|
||||
</footer>
|
||||
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
||||
<path d="M12 6H0l6-6z" />
|
||||
</svg>
|
||||
</a>
|
||||
|
||||
<script>
|
||||
let menu = document.getElementById('menu')
|
||||
if (menu) {
|
||||
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
|
||||
menu.onscroll = function () {
|
||||
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
||||
}
|
||||
}
|
||||
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener("click", function (e) {
|
||||
e.preventDefault();
|
||||
var id = this.getAttribute("href").substr(1);
|
||||
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
||||
behavior: "smooth"
|
||||
});
|
||||
} else {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
|
||||
}
|
||||
if (id === "top") {
|
||||
history.replaceState(null, null, " ");
|
||||
} else {
|
||||
history.pushState(null, null, `#${id}`);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
<script>
|
||||
var mybutton = document.getElementById("top-link");
|
||||
window.onscroll = function () {
|
||||
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
|
||||
mybutton.style.visibility = "visible";
|
||||
mybutton.style.opacity = "1";
|
||||
} else {
|
||||
mybutton.style.visibility = "hidden";
|
||||
mybutton.style.opacity = "0";
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<script>
|
||||
document.getElementById("theme-toggle").addEventListener("click", () => {
|
||||
if (document.body.className.includes("dark")) {
|
||||
document.body.classList.remove('dark');
|
||||
localStorage.setItem("pref-theme", 'light');
|
||||
} else {
|
||||
document.body.classList.add('dark');
|
||||
localStorage.setItem("pref-theme", 'dark');
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
190
public/posts/index.html
Normal file
190
public/posts/index.html
Normal file
@ -0,0 +1,190 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="auto">
|
||||
|
||||
<head><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="robots" content="index, follow">
|
||||
<title>Posts | Dev Logbook</title>
|
||||
<meta name="keywords" content="">
|
||||
<meta name="description" content="Posts - Dev Logbook">
|
||||
<meta name="author" content="">
|
||||
<link rel="canonical" href="https://blog.rakowskiii.com/posts/">
|
||||
<link crossorigin="anonymous" href="/assets/css/stylesheet.45e028aa8ce0961349adf411b013ee39406be2c0bc80d4ea3fc04555f7f4611a.css" integrity="sha256-ReAoqozglhNJrfQRsBPuOUBr4sC8gNTqP8BFVff0YRo=" rel="preload stylesheet" as="style">
|
||||
<link rel="icon" href="https://blog.rakowskiii.com/favicon.ico">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="https://blog.rakowskiii.com/favicon-16x16.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="https://blog.rakowskiii.com/favicon-32x32.png">
|
||||
<link rel="apple-touch-icon" href="https://blog.rakowskiii.com/apple-touch-icon.png">
|
||||
<link rel="mask-icon" href="https://blog.rakowskiii.com/safari-pinned-tab.svg">
|
||||
<meta name="theme-color" content="#2e2e33">
|
||||
<meta name="msapplication-TileColor" content="#2e2e33">
|
||||
<link rel="alternate" type="application/rss+xml" href="https://blog.rakowskiii.com/posts/index.xml">
|
||||
<link rel="alternate" hreflang="en" href="https://blog.rakowskiii.com/posts/">
|
||||
<noscript>
|
||||
<style>
|
||||
#theme-toggle,
|
||||
.top-link {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript><meta property="og:url" content="https://blog.rakowskiii.com/posts/">
|
||||
<meta property="og:site_name" content="Dev Logbook">
|
||||
<meta property="og:title" content="Posts">
|
||||
<meta property="og:locale" content="en-us">
|
||||
<meta property="og:type" content="website">
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="Posts">
|
||||
<meta name="twitter:description" content="">
|
||||
|
||||
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "BreadcrumbList",
|
||||
"itemListElement": [
|
||||
{
|
||||
"@type": "ListItem",
|
||||
"position": 1 ,
|
||||
"name": "Posts",
|
||||
"item": "https://blog.rakowskiii.com/posts/"
|
||||
}
|
||||
]
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body class="list" id="top">
|
||||
<script>
|
||||
if (localStorage.getItem("pref-theme") === "dark") {
|
||||
document.body.classList.add('dark');
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<header class="header">
|
||||
<nav class="nav">
|
||||
<div class="logo">
|
||||
<a href="https://blog.rakowskiii.com/" accesskey="h" title="Dev Logbook (Alt + H)">Dev Logbook</a>
|
||||
<div class="logo-switches">
|
||||
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
|
||||
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||||
</svg>
|
||||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
<header class="page-header">
|
||||
<h1>
|
||||
Posts
|
||||
</h1>
|
||||
</header>
|
||||
|
||||
<article class="post-entry">
|
||||
<header class="entry-header">
|
||||
<h2 class="entry-hint-parent">Automating Hugo Deployment with Gitea Actions
|
||||
</h2>
|
||||
</header>
|
||||
<div class="entry-content">
|
||||
<p>Recently, I tried setting up Gitea Actions to automatically update my Hugo blog whenever I pushed new content. The idea was simple:
|
||||
Use Gitea’s built-in CI/CD to pull the repo, Build the site using Hugo, Deploy it to the server. Setting Up Gitea Actions First, I created a .gitea/workflows/deploy.yml file with the following steps:
|
||||
name: Deploy Hugo Site on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Clone repository uses: actions/checkout@v3 - name: Install Hugo run: | sudo apt update && sudo apt install -y hugo - name: Build site run: hugo -D - name: Deploy to server run: | scp -r public/* user@server:/var/www/html/ Authentication Issues 😩 To deploy, I needed SSH access to the server. Gitea doesn’t have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.
|
||||
...</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2025-02-27 00:00:00 +0000 UTC'>February 27, 2025</span> · Dev</footer>
|
||||
<a class="entry-link" aria-label="post link to Automating Hugo Deployment with Gitea Actions" href="https://blog.rakowskiii.com/posts/first-attempt/"></a>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<span>© 2025 <a href="https://blog.rakowskiii.com/">Dev Logbook</a></span> ·
|
||||
|
||||
<span>
|
||||
Powered by
|
||||
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
|
||||
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
|
||||
</span>
|
||||
</footer>
|
||||
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
||||
<path d="M12 6H0l6-6z" />
|
||||
</svg>
|
||||
</a>
|
||||
|
||||
<script>
|
||||
let menu = document.getElementById('menu')
|
||||
if (menu) {
|
||||
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
|
||||
menu.onscroll = function () {
|
||||
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
||||
}
|
||||
}
|
||||
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener("click", function (e) {
|
||||
e.preventDefault();
|
||||
var id = this.getAttribute("href").substr(1);
|
||||
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
||||
behavior: "smooth"
|
||||
});
|
||||
} else {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
|
||||
}
|
||||
if (id === "top") {
|
||||
history.replaceState(null, null, " ");
|
||||
} else {
|
||||
history.pushState(null, null, `#${id}`);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
<script>
|
||||
var mybutton = document.getElementById("top-link");
|
||||
window.onscroll = function () {
|
||||
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
|
||||
mybutton.style.visibility = "visible";
|
||||
mybutton.style.opacity = "1";
|
||||
} else {
|
||||
mybutton.style.visibility = "hidden";
|
||||
mybutton.style.opacity = "0";
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<script>
|
||||
document.getElementById("theme-toggle").addEventListener("click", () => {
|
||||
if (document.body.className.includes("dark")) {
|
||||
document.body.classList.remove('dark');
|
||||
localStorage.setItem("pref-theme", 'light');
|
||||
} else {
|
||||
document.body.classList.add('dark');
|
||||
localStorage.setItem("pref-theme", 'dark');
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
52
public/posts/index.xml
Normal file
52
public/posts/index.xml
Normal file
@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
|
||||
<channel>
|
||||
<title>Posts on Dev Logbook</title>
|
||||
<link>https://blog.rakowskiii.com/posts/</link>
|
||||
<description>Recent content in Posts on Dev Logbook</description>
|
||||
<generator>Hugo -- 0.145.0</generator>
|
||||
<language>en-us</language>
|
||||
<lastBuildDate>Thu, 27 Feb 2025 00:00:00 +0000</lastBuildDate>
|
||||
<atom:link href="https://blog.rakowskiii.com/posts/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Automating Hugo Deployment with Gitea Actions</title>
|
||||
<link>https://blog.rakowskiii.com/posts/first-attempt/</link>
|
||||
<pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate>
|
||||
<guid>https://blog.rakowskiii.com/posts/first-attempt/</guid>
|
||||
<description><p>Recently, I tried setting up <strong>Gitea Actions</strong> to automatically update my Hugo blog whenever I pushed new content. The idea was simple:</p>
|
||||
<ul>
|
||||
<li>Use Gitea’s built-in CI/CD to pull the repo,</li>
|
||||
<li>Build the site using Hugo,</li>
|
||||
<li>Deploy it to the server.</li>
|
||||
</ul>
|
||||
<h2 id="setting-up-gitea-actions">Setting Up Gitea Actions</h2>
|
||||
<p>First, I created a <code>.gitea/workflows/deploy.yml</code> file with the following steps:</p>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">name</span>: <span style="color:#ae81ff">Deploy Hugo Site</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#f92672">on</span>:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">push</span>:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">branches</span>:
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">main</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#f92672">jobs</span>:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">build</span>:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">runs-on</span>: <span style="color:#ae81ff">ubuntu-latest</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">steps</span>:
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Clone repository</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">uses</span>: <span style="color:#ae81ff">actions/checkout@v3</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Install Hugo</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">run</span>: |<span style="color:#e6db74">
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> sudo apt update &amp;&amp; sudo apt install -y hugo</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Build site</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">run</span>: <span style="color:#ae81ff">hugo -D</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Deploy to server</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">run</span>: |<span style="color:#e6db74">
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> scp -r public/* user@server:/var/www/html/</span>
|
||||
</span></span></code></pre></div><h1 id="authentication-issues-">Authentication Issues 😩</h1>
|
||||
<p>To deploy, I needed SSH access to the server. Gitea doesn’t have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.</p></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
10
public/posts/page/1/index.html
Normal file
10
public/posts/page/1/index.html
Normal file
@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<title>https://blog.rakowskiii.com/posts/</title>
|
||||
<link rel="canonical" href="https://blog.rakowskiii.com/posts/">
|
||||
<meta name="robots" content="noindex">
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="refresh" content="0; url=https://blog.rakowskiii.com/posts/">
|
||||
</head>
|
||||
</html>
|
||||
28
public/sitemap.xml
Normal file
28
public/sitemap.xml
Normal file
@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
||||
xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
||||
<url>
|
||||
<loc>https://blog.rakowskiii.com/posts/first-attempt/</loc>
|
||||
<lastmod>2025-02-27T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>https://blog.rakowskiii.com/tags/ci/cd/</loc>
|
||||
<lastmod>2025-02-27T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>https://blog.rakowskiii.com/</loc>
|
||||
<lastmod>2025-02-27T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>https://blog.rakowskiii.com/tags/gitea/</loc>
|
||||
<lastmod>2025-02-27T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>https://blog.rakowskiii.com/tags/hugo/</loc>
|
||||
<lastmod>2025-02-27T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>https://blog.rakowskiii.com/posts/</loc>
|
||||
<lastmod>2025-02-27T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>https://blog.rakowskiii.com/tags/</loc>
|
||||
<lastmod>2025-02-27T00:00:00+00:00</lastmod>
|
||||
</url><url>
|
||||
<loc>https://blog.rakowskiii.com/categories/</loc>
|
||||
</url>
|
||||
</urlset>
|
||||
175
public/tags/ci/cd/index.html
Normal file
175
public/tags/ci/cd/index.html
Normal file
@ -0,0 +1,175 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="auto">
|
||||
|
||||
<head><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="robots" content="index, follow">
|
||||
<title>Ci/Cd | Dev Logbook</title>
|
||||
<meta name="keywords" content="">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
<link rel="canonical" href="https://blog.rakowskiii.com/tags/ci/cd/">
|
||||
<link crossorigin="anonymous" href="/assets/css/stylesheet.45e028aa8ce0961349adf411b013ee39406be2c0bc80d4ea3fc04555f7f4611a.css" integrity="sha256-ReAoqozglhNJrfQRsBPuOUBr4sC8gNTqP8BFVff0YRo=" rel="preload stylesheet" as="style">
|
||||
<link rel="icon" href="https://blog.rakowskiii.com/favicon.ico">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="https://blog.rakowskiii.com/favicon-16x16.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="https://blog.rakowskiii.com/favicon-32x32.png">
|
||||
<link rel="apple-touch-icon" href="https://blog.rakowskiii.com/apple-touch-icon.png">
|
||||
<link rel="mask-icon" href="https://blog.rakowskiii.com/safari-pinned-tab.svg">
|
||||
<meta name="theme-color" content="#2e2e33">
|
||||
<meta name="msapplication-TileColor" content="#2e2e33">
|
||||
<link rel="alternate" type="application/rss+xml" href="https://blog.rakowskiii.com/tags/ci/cd/index.xml">
|
||||
<link rel="alternate" hreflang="en" href="https://blog.rakowskiii.com/tags/ci/cd/">
|
||||
<noscript>
|
||||
<style>
|
||||
#theme-toggle,
|
||||
.top-link {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript><meta property="og:url" content="https://blog.rakowskiii.com/tags/ci/cd/">
|
||||
<meta property="og:site_name" content="Dev Logbook">
|
||||
<meta property="og:title" content="Ci/Cd">
|
||||
<meta property="og:locale" content="en-us">
|
||||
<meta property="og:type" content="website">
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="Ci/Cd">
|
||||
<meta name="twitter:description" content="">
|
||||
|
||||
</head>
|
||||
|
||||
<body class="list" id="top">
|
||||
<script>
|
||||
if (localStorage.getItem("pref-theme") === "dark") {
|
||||
document.body.classList.add('dark');
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<header class="header">
|
||||
<nav class="nav">
|
||||
<div class="logo">
|
||||
<a href="https://blog.rakowskiii.com/" accesskey="h" title="Dev Logbook (Alt + H)">Dev Logbook</a>
|
||||
<div class="logo-switches">
|
||||
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
|
||||
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||||
</svg>
|
||||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
<header class="page-header">
|
||||
<h1>
|
||||
Ci/Cd
|
||||
</h1>
|
||||
</header>
|
||||
|
||||
<article class="post-entry tag-entry">
|
||||
<header class="entry-header">
|
||||
<h2 class="entry-hint-parent">Automating Hugo Deployment with Gitea Actions
|
||||
</h2>
|
||||
</header>
|
||||
<div class="entry-content">
|
||||
<p>Recently, I tried setting up Gitea Actions to automatically update my Hugo blog whenever I pushed new content. The idea was simple:
|
||||
Use Gitea’s built-in CI/CD to pull the repo, Build the site using Hugo, Deploy it to the server. Setting Up Gitea Actions First, I created a .gitea/workflows/deploy.yml file with the following steps:
|
||||
name: Deploy Hugo Site on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Clone repository uses: actions/checkout@v3 - name: Install Hugo run: | sudo apt update && sudo apt install -y hugo - name: Build site run: hugo -D - name: Deploy to server run: | scp -r public/* user@server:/var/www/html/ Authentication Issues 😩 To deploy, I needed SSH access to the server. Gitea doesn’t have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.
|
||||
...</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2025-02-27 00:00:00 +0000 UTC'>February 27, 2025</span> · Dev</footer>
|
||||
<a class="entry-link" aria-label="post link to Automating Hugo Deployment with Gitea Actions" href="https://blog.rakowskiii.com/posts/first-attempt/"></a>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<span>© 2025 <a href="https://blog.rakowskiii.com/">Dev Logbook</a></span> ·
|
||||
|
||||
<span>
|
||||
Powered by
|
||||
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
|
||||
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
|
||||
</span>
|
||||
</footer>
|
||||
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
||||
<path d="M12 6H0l6-6z" />
|
||||
</svg>
|
||||
</a>
|
||||
|
||||
<script>
|
||||
let menu = document.getElementById('menu')
|
||||
if (menu) {
|
||||
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
|
||||
menu.onscroll = function () {
|
||||
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
||||
}
|
||||
}
|
||||
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener("click", function (e) {
|
||||
e.preventDefault();
|
||||
var id = this.getAttribute("href").substr(1);
|
||||
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
||||
behavior: "smooth"
|
||||
});
|
||||
} else {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
|
||||
}
|
||||
if (id === "top") {
|
||||
history.replaceState(null, null, " ");
|
||||
} else {
|
||||
history.pushState(null, null, `#${id}`);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
<script>
|
||||
var mybutton = document.getElementById("top-link");
|
||||
window.onscroll = function () {
|
||||
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
|
||||
mybutton.style.visibility = "visible";
|
||||
mybutton.style.opacity = "1";
|
||||
} else {
|
||||
mybutton.style.visibility = "hidden";
|
||||
mybutton.style.opacity = "0";
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<script>
|
||||
document.getElementById("theme-toggle").addEventListener("click", () => {
|
||||
if (document.body.className.includes("dark")) {
|
||||
document.body.classList.remove('dark');
|
||||
localStorage.setItem("pref-theme", 'light');
|
||||
} else {
|
||||
document.body.classList.add('dark');
|
||||
localStorage.setItem("pref-theme", 'dark');
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
52
public/tags/ci/cd/index.xml
Normal file
52
public/tags/ci/cd/index.xml
Normal file
@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
|
||||
<channel>
|
||||
<title>Ci/Cd on Dev Logbook</title>
|
||||
<link>https://blog.rakowskiii.com/tags/ci/cd/</link>
|
||||
<description>Recent content in Ci/Cd on Dev Logbook</description>
|
||||
<generator>Hugo -- 0.145.0</generator>
|
||||
<language>en-us</language>
|
||||
<lastBuildDate>Thu, 27 Feb 2025 00:00:00 +0000</lastBuildDate>
|
||||
<atom:link href="https://blog.rakowskiii.com/tags/ci/cd/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Automating Hugo Deployment with Gitea Actions</title>
|
||||
<link>https://blog.rakowskiii.com/posts/first-attempt/</link>
|
||||
<pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate>
|
||||
<guid>https://blog.rakowskiii.com/posts/first-attempt/</guid>
|
||||
<description><p>Recently, I tried setting up <strong>Gitea Actions</strong> to automatically update my Hugo blog whenever I pushed new content. The idea was simple:</p>
|
||||
<ul>
|
||||
<li>Use Gitea’s built-in CI/CD to pull the repo,</li>
|
||||
<li>Build the site using Hugo,</li>
|
||||
<li>Deploy it to the server.</li>
|
||||
</ul>
|
||||
<h2 id="setting-up-gitea-actions">Setting Up Gitea Actions</h2>
|
||||
<p>First, I created a <code>.gitea/workflows/deploy.yml</code> file with the following steps:</p>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">name</span>: <span style="color:#ae81ff">Deploy Hugo Site</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#f92672">on</span>:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">push</span>:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">branches</span>:
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">main</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#f92672">jobs</span>:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">build</span>:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">runs-on</span>: <span style="color:#ae81ff">ubuntu-latest</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">steps</span>:
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Clone repository</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">uses</span>: <span style="color:#ae81ff">actions/checkout@v3</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Install Hugo</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">run</span>: |<span style="color:#e6db74">
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> sudo apt update &amp;&amp; sudo apt install -y hugo</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Build site</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">run</span>: <span style="color:#ae81ff">hugo -D</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Deploy to server</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">run</span>: |<span style="color:#e6db74">
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> scp -r public/* user@server:/var/www/html/</span>
|
||||
</span></span></code></pre></div><h1 id="authentication-issues-">Authentication Issues 😩</h1>
|
||||
<p>To deploy, I needed SSH access to the server. Gitea doesn’t have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.</p></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
10
public/tags/ci/cd/page/1/index.html
Normal file
10
public/tags/ci/cd/page/1/index.html
Normal file
@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<title>https://blog.rakowskiii.com/tags/ci/cd/</title>
|
||||
<link rel="canonical" href="https://blog.rakowskiii.com/tags/ci/cd/">
|
||||
<meta name="robots" content="noindex">
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="refresh" content="0; url=https://blog.rakowskiii.com/tags/ci/cd/">
|
||||
</head>
|
||||
</html>
|
||||
175
public/tags/gitea/index.html
Normal file
175
public/tags/gitea/index.html
Normal file
@ -0,0 +1,175 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="auto">
|
||||
|
||||
<head><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="robots" content="index, follow">
|
||||
<title>Gitea | Dev Logbook</title>
|
||||
<meta name="keywords" content="">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
<link rel="canonical" href="https://blog.rakowskiii.com/tags/gitea/">
|
||||
<link crossorigin="anonymous" href="/assets/css/stylesheet.45e028aa8ce0961349adf411b013ee39406be2c0bc80d4ea3fc04555f7f4611a.css" integrity="sha256-ReAoqozglhNJrfQRsBPuOUBr4sC8gNTqP8BFVff0YRo=" rel="preload stylesheet" as="style">
|
||||
<link rel="icon" href="https://blog.rakowskiii.com/favicon.ico">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="https://blog.rakowskiii.com/favicon-16x16.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="https://blog.rakowskiii.com/favicon-32x32.png">
|
||||
<link rel="apple-touch-icon" href="https://blog.rakowskiii.com/apple-touch-icon.png">
|
||||
<link rel="mask-icon" href="https://blog.rakowskiii.com/safari-pinned-tab.svg">
|
||||
<meta name="theme-color" content="#2e2e33">
|
||||
<meta name="msapplication-TileColor" content="#2e2e33">
|
||||
<link rel="alternate" type="application/rss+xml" href="https://blog.rakowskiii.com/tags/gitea/index.xml">
|
||||
<link rel="alternate" hreflang="en" href="https://blog.rakowskiii.com/tags/gitea/">
|
||||
<noscript>
|
||||
<style>
|
||||
#theme-toggle,
|
||||
.top-link {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript><meta property="og:url" content="https://blog.rakowskiii.com/tags/gitea/">
|
||||
<meta property="og:site_name" content="Dev Logbook">
|
||||
<meta property="og:title" content="Gitea">
|
||||
<meta property="og:locale" content="en-us">
|
||||
<meta property="og:type" content="website">
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="Gitea">
|
||||
<meta name="twitter:description" content="">
|
||||
|
||||
</head>
|
||||
|
||||
<body class="list" id="top">
|
||||
<script>
|
||||
if (localStorage.getItem("pref-theme") === "dark") {
|
||||
document.body.classList.add('dark');
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<header class="header">
|
||||
<nav class="nav">
|
||||
<div class="logo">
|
||||
<a href="https://blog.rakowskiii.com/" accesskey="h" title="Dev Logbook (Alt + H)">Dev Logbook</a>
|
||||
<div class="logo-switches">
|
||||
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
|
||||
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||||
</svg>
|
||||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
<header class="page-header">
|
||||
<h1>
|
||||
Gitea
|
||||
</h1>
|
||||
</header>
|
||||
|
||||
<article class="post-entry tag-entry">
|
||||
<header class="entry-header">
|
||||
<h2 class="entry-hint-parent">Automating Hugo Deployment with Gitea Actions
|
||||
</h2>
|
||||
</header>
|
||||
<div class="entry-content">
|
||||
<p>Recently, I tried setting up Gitea Actions to automatically update my Hugo blog whenever I pushed new content. The idea was simple:
|
||||
Use Gitea’s built-in CI/CD to pull the repo, Build the site using Hugo, Deploy it to the server. Setting Up Gitea Actions First, I created a .gitea/workflows/deploy.yml file with the following steps:
|
||||
name: Deploy Hugo Site on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Clone repository uses: actions/checkout@v3 - name: Install Hugo run: | sudo apt update && sudo apt install -y hugo - name: Build site run: hugo -D - name: Deploy to server run: | scp -r public/* user@server:/var/www/html/ Authentication Issues 😩 To deploy, I needed SSH access to the server. Gitea doesn’t have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.
|
||||
...</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2025-02-27 00:00:00 +0000 UTC'>February 27, 2025</span> · Dev</footer>
|
||||
<a class="entry-link" aria-label="post link to Automating Hugo Deployment with Gitea Actions" href="https://blog.rakowskiii.com/posts/first-attempt/"></a>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<span>© 2025 <a href="https://blog.rakowskiii.com/">Dev Logbook</a></span> ·
|
||||
|
||||
<span>
|
||||
Powered by
|
||||
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
|
||||
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
|
||||
</span>
|
||||
</footer>
|
||||
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
||||
<path d="M12 6H0l6-6z" />
|
||||
</svg>
|
||||
</a>
|
||||
|
||||
<script>
|
||||
let menu = document.getElementById('menu')
|
||||
if (menu) {
|
||||
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
|
||||
menu.onscroll = function () {
|
||||
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
||||
}
|
||||
}
|
||||
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener("click", function (e) {
|
||||
e.preventDefault();
|
||||
var id = this.getAttribute("href").substr(1);
|
||||
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
||||
behavior: "smooth"
|
||||
});
|
||||
} else {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
|
||||
}
|
||||
if (id === "top") {
|
||||
history.replaceState(null, null, " ");
|
||||
} else {
|
||||
history.pushState(null, null, `#${id}`);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
<script>
|
||||
var mybutton = document.getElementById("top-link");
|
||||
window.onscroll = function () {
|
||||
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
|
||||
mybutton.style.visibility = "visible";
|
||||
mybutton.style.opacity = "1";
|
||||
} else {
|
||||
mybutton.style.visibility = "hidden";
|
||||
mybutton.style.opacity = "0";
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<script>
|
||||
document.getElementById("theme-toggle").addEventListener("click", () => {
|
||||
if (document.body.className.includes("dark")) {
|
||||
document.body.classList.remove('dark');
|
||||
localStorage.setItem("pref-theme", 'light');
|
||||
} else {
|
||||
document.body.classList.add('dark');
|
||||
localStorage.setItem("pref-theme", 'dark');
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
52
public/tags/gitea/index.xml
Normal file
52
public/tags/gitea/index.xml
Normal file
@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
|
||||
<channel>
|
||||
<title>Gitea on Dev Logbook</title>
|
||||
<link>https://blog.rakowskiii.com/tags/gitea/</link>
|
||||
<description>Recent content in Gitea on Dev Logbook</description>
|
||||
<generator>Hugo -- 0.145.0</generator>
|
||||
<language>en-us</language>
|
||||
<lastBuildDate>Thu, 27 Feb 2025 00:00:00 +0000</lastBuildDate>
|
||||
<atom:link href="https://blog.rakowskiii.com/tags/gitea/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Automating Hugo Deployment with Gitea Actions</title>
|
||||
<link>https://blog.rakowskiii.com/posts/first-attempt/</link>
|
||||
<pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate>
|
||||
<guid>https://blog.rakowskiii.com/posts/first-attempt/</guid>
|
||||
<description><p>Recently, I tried setting up <strong>Gitea Actions</strong> to automatically update my Hugo blog whenever I pushed new content. The idea was simple:</p>
|
||||
<ul>
|
||||
<li>Use Gitea’s built-in CI/CD to pull the repo,</li>
|
||||
<li>Build the site using Hugo,</li>
|
||||
<li>Deploy it to the server.</li>
|
||||
</ul>
|
||||
<h2 id="setting-up-gitea-actions">Setting Up Gitea Actions</h2>
|
||||
<p>First, I created a <code>.gitea/workflows/deploy.yml</code> file with the following steps:</p>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">name</span>: <span style="color:#ae81ff">Deploy Hugo Site</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#f92672">on</span>:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">push</span>:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">branches</span>:
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">main</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#f92672">jobs</span>:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">build</span>:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">runs-on</span>: <span style="color:#ae81ff">ubuntu-latest</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">steps</span>:
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Clone repository</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">uses</span>: <span style="color:#ae81ff">actions/checkout@v3</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Install Hugo</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">run</span>: |<span style="color:#e6db74">
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> sudo apt update &amp;&amp; sudo apt install -y hugo</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Build site</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">run</span>: <span style="color:#ae81ff">hugo -D</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Deploy to server</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">run</span>: |<span style="color:#e6db74">
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> scp -r public/* user@server:/var/www/html/</span>
|
||||
</span></span></code></pre></div><h1 id="authentication-issues-">Authentication Issues 😩</h1>
|
||||
<p>To deploy, I needed SSH access to the server. Gitea doesn’t have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.</p></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
10
public/tags/gitea/page/1/index.html
Normal file
10
public/tags/gitea/page/1/index.html
Normal file
@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<title>https://blog.rakowskiii.com/tags/gitea/</title>
|
||||
<link rel="canonical" href="https://blog.rakowskiii.com/tags/gitea/">
|
||||
<meta name="robots" content="noindex">
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="refresh" content="0; url=https://blog.rakowskiii.com/tags/gitea/">
|
||||
</head>
|
||||
</html>
|
||||
175
public/tags/hugo/index.html
Normal file
175
public/tags/hugo/index.html
Normal file
@ -0,0 +1,175 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="auto">
|
||||
|
||||
<head><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="robots" content="index, follow">
|
||||
<title>Hugo | Dev Logbook</title>
|
||||
<meta name="keywords" content="">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
<link rel="canonical" href="https://blog.rakowskiii.com/tags/hugo/">
|
||||
<link crossorigin="anonymous" href="/assets/css/stylesheet.45e028aa8ce0961349adf411b013ee39406be2c0bc80d4ea3fc04555f7f4611a.css" integrity="sha256-ReAoqozglhNJrfQRsBPuOUBr4sC8gNTqP8BFVff0YRo=" rel="preload stylesheet" as="style">
|
||||
<link rel="icon" href="https://blog.rakowskiii.com/favicon.ico">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="https://blog.rakowskiii.com/favicon-16x16.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="https://blog.rakowskiii.com/favicon-32x32.png">
|
||||
<link rel="apple-touch-icon" href="https://blog.rakowskiii.com/apple-touch-icon.png">
|
||||
<link rel="mask-icon" href="https://blog.rakowskiii.com/safari-pinned-tab.svg">
|
||||
<meta name="theme-color" content="#2e2e33">
|
||||
<meta name="msapplication-TileColor" content="#2e2e33">
|
||||
<link rel="alternate" type="application/rss+xml" href="https://blog.rakowskiii.com/tags/hugo/index.xml">
|
||||
<link rel="alternate" hreflang="en" href="https://blog.rakowskiii.com/tags/hugo/">
|
||||
<noscript>
|
||||
<style>
|
||||
#theme-toggle,
|
||||
.top-link {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript><meta property="og:url" content="https://blog.rakowskiii.com/tags/hugo/">
|
||||
<meta property="og:site_name" content="Dev Logbook">
|
||||
<meta property="og:title" content="Hugo">
|
||||
<meta property="og:locale" content="en-us">
|
||||
<meta property="og:type" content="website">
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="Hugo">
|
||||
<meta name="twitter:description" content="">
|
||||
|
||||
</head>
|
||||
|
||||
<body class="list" id="top">
|
||||
<script>
|
||||
if (localStorage.getItem("pref-theme") === "dark") {
|
||||
document.body.classList.add('dark');
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<header class="header">
|
||||
<nav class="nav">
|
||||
<div class="logo">
|
||||
<a href="https://blog.rakowskiii.com/" accesskey="h" title="Dev Logbook (Alt + H)">Dev Logbook</a>
|
||||
<div class="logo-switches">
|
||||
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
|
||||
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||||
</svg>
|
||||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
<header class="page-header">
|
||||
<h1>
|
||||
Hugo
|
||||
</h1>
|
||||
</header>
|
||||
|
||||
<article class="post-entry tag-entry">
|
||||
<header class="entry-header">
|
||||
<h2 class="entry-hint-parent">Automating Hugo Deployment with Gitea Actions
|
||||
</h2>
|
||||
</header>
|
||||
<div class="entry-content">
|
||||
<p>Recently, I tried setting up Gitea Actions to automatically update my Hugo blog whenever I pushed new content. The idea was simple:
|
||||
Use Gitea’s built-in CI/CD to pull the repo, Build the site using Hugo, Deploy it to the server. Setting Up Gitea Actions First, I created a .gitea/workflows/deploy.yml file with the following steps:
|
||||
name: Deploy Hugo Site on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Clone repository uses: actions/checkout@v3 - name: Install Hugo run: | sudo apt update && sudo apt install -y hugo - name: Build site run: hugo -D - name: Deploy to server run: | scp -r public/* user@server:/var/www/html/ Authentication Issues 😩 To deploy, I needed SSH access to the server. Gitea doesn’t have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.
|
||||
...</p>
|
||||
</div>
|
||||
<footer class="entry-footer"><span title='2025-02-27 00:00:00 +0000 UTC'>February 27, 2025</span> · Dev</footer>
|
||||
<a class="entry-link" aria-label="post link to Automating Hugo Deployment with Gitea Actions" href="https://blog.rakowskiii.com/posts/first-attempt/"></a>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<span>© 2025 <a href="https://blog.rakowskiii.com/">Dev Logbook</a></span> ·
|
||||
|
||||
<span>
|
||||
Powered by
|
||||
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
|
||||
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
|
||||
</span>
|
||||
</footer>
|
||||
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
||||
<path d="M12 6H0l6-6z" />
|
||||
</svg>
|
||||
</a>
|
||||
|
||||
<script>
|
||||
let menu = document.getElementById('menu')
|
||||
if (menu) {
|
||||
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
|
||||
menu.onscroll = function () {
|
||||
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
||||
}
|
||||
}
|
||||
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener("click", function (e) {
|
||||
e.preventDefault();
|
||||
var id = this.getAttribute("href").substr(1);
|
||||
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
||||
behavior: "smooth"
|
||||
});
|
||||
} else {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
|
||||
}
|
||||
if (id === "top") {
|
||||
history.replaceState(null, null, " ");
|
||||
} else {
|
||||
history.pushState(null, null, `#${id}`);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
<script>
|
||||
var mybutton = document.getElementById("top-link");
|
||||
window.onscroll = function () {
|
||||
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
|
||||
mybutton.style.visibility = "visible";
|
||||
mybutton.style.opacity = "1";
|
||||
} else {
|
||||
mybutton.style.visibility = "hidden";
|
||||
mybutton.style.opacity = "0";
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<script>
|
||||
document.getElementById("theme-toggle").addEventListener("click", () => {
|
||||
if (document.body.className.includes("dark")) {
|
||||
document.body.classList.remove('dark');
|
||||
localStorage.setItem("pref-theme", 'light');
|
||||
} else {
|
||||
document.body.classList.add('dark');
|
||||
localStorage.setItem("pref-theme", 'dark');
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
52
public/tags/hugo/index.xml
Normal file
52
public/tags/hugo/index.xml
Normal file
@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
|
||||
<channel>
|
||||
<title>Hugo on Dev Logbook</title>
|
||||
<link>https://blog.rakowskiii.com/tags/hugo/</link>
|
||||
<description>Recent content in Hugo on Dev Logbook</description>
|
||||
<generator>Hugo -- 0.145.0</generator>
|
||||
<language>en-us</language>
|
||||
<lastBuildDate>Thu, 27 Feb 2025 00:00:00 +0000</lastBuildDate>
|
||||
<atom:link href="https://blog.rakowskiii.com/tags/hugo/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Automating Hugo Deployment with Gitea Actions</title>
|
||||
<link>https://blog.rakowskiii.com/posts/first-attempt/</link>
|
||||
<pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate>
|
||||
<guid>https://blog.rakowskiii.com/posts/first-attempt/</guid>
|
||||
<description><p>Recently, I tried setting up <strong>Gitea Actions</strong> to automatically update my Hugo blog whenever I pushed new content. The idea was simple:</p>
|
||||
<ul>
|
||||
<li>Use Gitea’s built-in CI/CD to pull the repo,</li>
|
||||
<li>Build the site using Hugo,</li>
|
||||
<li>Deploy it to the server.</li>
|
||||
</ul>
|
||||
<h2 id="setting-up-gitea-actions">Setting Up Gitea Actions</h2>
|
||||
<p>First, I created a <code>.gitea/workflows/deploy.yml</code> file with the following steps:</p>
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">name</span>: <span style="color:#ae81ff">Deploy Hugo Site</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#f92672">on</span>:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">push</span>:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">branches</span>:
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#ae81ff">main</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#f92672">jobs</span>:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">build</span>:
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">runs-on</span>: <span style="color:#ae81ff">ubuntu-latest</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">steps</span>:
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Clone repository</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">uses</span>: <span style="color:#ae81ff">actions/checkout@v3</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Install Hugo</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">run</span>: |<span style="color:#e6db74">
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> sudo apt update &amp;&amp; sudo apt install -y hugo</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Build site</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">run</span>: <span style="color:#ae81ff">hugo -D</span>
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">Deploy to server</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#f92672">run</span>: |<span style="color:#e6db74">
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74"> scp -r public/* user@server:/var/www/html/</span>
|
||||
</span></span></code></pre></div><h1 id="authentication-issues-">Authentication Issues 😩</h1>
|
||||
<p>To deploy, I needed SSH access to the server. Gitea doesn’t have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.</p></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
10
public/tags/hugo/page/1/index.html
Normal file
10
public/tags/hugo/page/1/index.html
Normal file
@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<title>https://blog.rakowskiii.com/tags/hugo/</title>
|
||||
<link rel="canonical" href="https://blog.rakowskiii.com/tags/hugo/">
|
||||
<meta name="robots" content="noindex">
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="refresh" content="0; url=https://blog.rakowskiii.com/tags/hugo/">
|
||||
</head>
|
||||
</html>
|
||||
170
public/tags/index.html
Normal file
170
public/tags/index.html
Normal file
@ -0,0 +1,170 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="auto">
|
||||
|
||||
<head><meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="robots" content="index, follow">
|
||||
<title>Tags | Dev Logbook</title>
|
||||
<meta name="keywords" content="">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
<link rel="canonical" href="https://blog.rakowskiii.com/tags/">
|
||||
<link crossorigin="anonymous" href="/assets/css/stylesheet.45e028aa8ce0961349adf411b013ee39406be2c0bc80d4ea3fc04555f7f4611a.css" integrity="sha256-ReAoqozglhNJrfQRsBPuOUBr4sC8gNTqP8BFVff0YRo=" rel="preload stylesheet" as="style">
|
||||
<link rel="icon" href="https://blog.rakowskiii.com/favicon.ico">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="https://blog.rakowskiii.com/favicon-16x16.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="https://blog.rakowskiii.com/favicon-32x32.png">
|
||||
<link rel="apple-touch-icon" href="https://blog.rakowskiii.com/apple-touch-icon.png">
|
||||
<link rel="mask-icon" href="https://blog.rakowskiii.com/safari-pinned-tab.svg">
|
||||
<meta name="theme-color" content="#2e2e33">
|
||||
<meta name="msapplication-TileColor" content="#2e2e33">
|
||||
<link rel="alternate" type="application/rss+xml" href="https://blog.rakowskiii.com/tags/index.xml">
|
||||
<link rel="alternate" hreflang="en" href="https://blog.rakowskiii.com/tags/">
|
||||
<noscript>
|
||||
<style>
|
||||
#theme-toggle,
|
||||
.top-link {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
</noscript><meta property="og:url" content="https://blog.rakowskiii.com/tags/">
|
||||
<meta property="og:site_name" content="Dev Logbook">
|
||||
<meta property="og:title" content="Tags">
|
||||
<meta property="og:locale" content="en-us">
|
||||
<meta property="og:type" content="website">
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta name="twitter:title" content="Tags">
|
||||
<meta name="twitter:description" content="">
|
||||
|
||||
</head>
|
||||
|
||||
<body class="list" id="top">
|
||||
<script>
|
||||
if (localStorage.getItem("pref-theme") === "dark") {
|
||||
document.body.classList.add('dark');
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<header class="header">
|
||||
<nav class="nav">
|
||||
<div class="logo">
|
||||
<a href="https://blog.rakowskiii.com/" accesskey="h" title="Dev Logbook (Alt + H)">Dev Logbook</a>
|
||||
<div class="logo-switches">
|
||||
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
|
||||
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||||
</svg>
|
||||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<circle cx="12" cy="12" r="5"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
<header class="page-header">
|
||||
<h1>Tags</h1>
|
||||
</header>
|
||||
|
||||
<ul class="terms-tags">
|
||||
<li>
|
||||
<a href="https://blog.rakowskiii.com/tags/ci/cd/">cd <sup><strong><sup>1</sup></strong></sup> </a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://blog.rakowskiii.com/tags/gitea/">gitea <sup><strong><sup>1</sup></strong></sup> </a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://blog.rakowskiii.com/tags/hugo/">hugo <sup><strong><sup>1</sup></strong></sup> </a>
|
||||
</li>
|
||||
</ul>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<span>© 2025 <a href="https://blog.rakowskiii.com/">Dev Logbook</a></span> ·
|
||||
|
||||
<span>
|
||||
Powered by
|
||||
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
|
||||
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
|
||||
</span>
|
||||
</footer>
|
||||
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
||||
<path d="M12 6H0l6-6z" />
|
||||
</svg>
|
||||
</a>
|
||||
|
||||
<script>
|
||||
let menu = document.getElementById('menu')
|
||||
if (menu) {
|
||||
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
|
||||
menu.onscroll = function () {
|
||||
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
||||
}
|
||||
}
|
||||
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener("click", function (e) {
|
||||
e.preventDefault();
|
||||
var id = this.getAttribute("href").substr(1);
|
||||
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
||||
behavior: "smooth"
|
||||
});
|
||||
} else {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
|
||||
}
|
||||
if (id === "top") {
|
||||
history.replaceState(null, null, " ");
|
||||
} else {
|
||||
history.pushState(null, null, `#${id}`);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
<script>
|
||||
var mybutton = document.getElementById("top-link");
|
||||
window.onscroll = function () {
|
||||
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
|
||||
mybutton.style.visibility = "visible";
|
||||
mybutton.style.opacity = "1";
|
||||
} else {
|
||||
mybutton.style.visibility = "hidden";
|
||||
mybutton.style.opacity = "0";
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<script>
|
||||
document.getElementById("theme-toggle").addEventListener("click", () => {
|
||||
if (document.body.className.includes("dark")) {
|
||||
document.body.classList.remove('dark');
|
||||
localStorage.setItem("pref-theme", 'light');
|
||||
} else {
|
||||
document.body.classList.add('dark');
|
||||
localStorage.setItem("pref-theme", 'dark');
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
33
public/tags/index.xml
Normal file
33
public/tags/index.xml
Normal file
@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
|
||||
<channel>
|
||||
<title>Tags on Dev Logbook</title>
|
||||
<link>https://blog.rakowskiii.com/tags/</link>
|
||||
<description>Recent content in Tags on Dev Logbook</description>
|
||||
<generator>Hugo -- 0.145.0</generator>
|
||||
<language>en-us</language>
|
||||
<lastBuildDate>Thu, 27 Feb 2025 00:00:00 +0000</lastBuildDate>
|
||||
<atom:link href="https://blog.rakowskiii.com/tags/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Ci/Cd</title>
|
||||
<link>https://blog.rakowskiii.com/tags/ci/cd/</link>
|
||||
<pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate>
|
||||
<guid>https://blog.rakowskiii.com/tags/ci/cd/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Gitea</title>
|
||||
<link>https://blog.rakowskiii.com/tags/gitea/</link>
|
||||
<pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate>
|
||||
<guid>https://blog.rakowskiii.com/tags/gitea/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Hugo</title>
|
||||
<link>https://blog.rakowskiii.com/tags/hugo/</link>
|
||||
<pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate>
|
||||
<guid>https://blog.rakowskiii.com/tags/hugo/</guid>
|
||||
<description></description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
BIN
static/images/mykey.png
Normal file
BIN
static/images/mykey.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 35 KiB |
1
themes/PaperMod
Submodule
1
themes/PaperMod
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 243ba38a34ce03a6c44c1eed36e22bc992ccc019
|
||||
Loading…
x
Reference in New Issue
Block a user