--- 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. ![My SSH Key](/images/mykey.png) 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.