Recently, I tried setting up Gitea Actions to automatically update my Hugo blog whenever I pushed new content. The idea was simple:

+
    +
  • Use Gitea鈥檚 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鈥檛 have built-in secrets management (like GitHub Actions), so I had to hardcode my SSH private key inside the workflow.

+

My SSH Key

+

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.

+ + +