From ca4251922254cbe5155ae90e679b2de25303e4b8 Mon Sep 17 00:00:00 2001 From: Evan Scamehorn Date: Wed, 7 Jan 2026 16:59:40 -0600 Subject: [PATCH] gitea action to deploy with rsync w ssh key --- .gitea/workflows/depoly.yaml | 81 ++++++++++++++ .github/FUNDING.yml | 2 - .github/preview.webp | Bin 49532 -> 0 bytes .github/workflows/deploy.yml | 124 ---------------------- .github/workflows/import-publications.yml | 122 --------------------- .github/workflows/updater-wip.yml | 24 ----- 6 files changed, 81 insertions(+), 272 deletions(-) create mode 100644 .gitea/workflows/depoly.yaml delete mode 100644 .github/FUNDING.yml delete mode 100644 .github/preview.webp delete mode 100644 .github/workflows/deploy.yml delete mode 100644 .github/workflows/import-publications.yml delete mode 100644 .github/workflows/updater-wip.yml diff --git a/.gitea/workflows/depoly.yaml b/.gitea/workflows/depoly.yaml new file mode 100644 index 0000000..97d11ec --- /dev/null +++ b/.gitea/workflows/depoly.yaml @@ -0,0 +1,81 @@ +name: Deploy website to VPS + +env: + NODE_VERSION: '20' + HUGO_VERSION: '0.121.0' # Fallback version + +on: + push: + branches: ['main'] + workflow_dispatch: + +jobs: + build-and-deploy: + runs-on: ubuntu-latest # This maps to your node:20-alpine runner + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install System Dependencies + run: | + apk add --no-cache rsync openssh-client bash git + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Setup pnpm + if: hashFiles('package.json') != '' + uses: pnpm/action-setup@v4 + + - name: Get Hugo Version + run: | + if [ -f "hugoblox.yaml" ]; then + VERSION=$(grep "hugo_version" hugoblox.yaml | awk '{print $2}' | tr -d "'\"") + echo "HUGO_VERSION=$VERSION" >> $GITHUB_ENV + fi + + - name: Install dependencies + run: | + if [ -f "package.json" ]; then + pnpm install --no-frozen-lockfile || npm install + fi + + - name: Setup Hugo + uses: peaceiris/actions-hugo@v3 + with: + hugo-version: ${{ env.HUGO_VERSION }} + extended: true + + - name: Build with Hugo + run: | + # Use your actual domain here + hugo --minify --baseURL "https://ejs.cam/" + + - name: Generate Pagefind search index + run: | + if [ -f "package.json" ] && grep -q "pagefind" package.json; then + pnpm dlx pagefind --source "public" || npx pagefind --source "public" + fi + + - name: Deploy via Rsync + env: + SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} + run: | + # Setup SSH + mkdir -p ~/.ssh + echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_ed25519 + chmod 600 ~/.ssh/id_ed25519 + + # Scan host key to prevent MITM prompts + ssh-keyscan -p ${{ secrets.REMOTE_PORT }} ${{ secrets.REMOTE_HOST }} >> ~/.ssh/known_hosts + + # Sync files + # --delete ensures old files are removed from /var/www + rsync -avz --delete \ + -e "ssh -p ${{ secrets.REMOTE_PORT }}" \ + ./public/ \ + ${{ secrets.REMOTE_USER }}@${{ secrets.REMOTE_HOST }}:/var/www/ diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 2ed14d2..0000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,2 +0,0 @@ -github: gcushen -custom: https://hugoblox.com/sponsor/ diff --git a/.github/preview.webp b/.github/preview.webp deleted file mode 100644 index 2791bdec7655ff910b8d7d855fb0fbae6de0fcb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49532 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 $GITHUB_ENV - - - name: Install dependencies - run: | - # Install Tailwind CLI if package.json exists - if [ -f "package.json" ]; then - echo "Installing Tailwind dependencies..." - pnpm install --no-frozen-lockfile || npm install - fi - - - name: Setup Hugo - uses: peaceiris/actions-hugo@v3 - with: - hugo-version: ${{ env.HUGO_VERSION }} - extended: true - - # Cache dependencies (Go modules, node_modules) - stable, rarely changes - - uses: actions/cache@v4 - with: - path: | - /tmp/hugo_cache_runner/ - node_modules/ - modules/*/node_modules/ - key: ${{ runner.os }}-hugo-deps-${{ hashFiles('**/go.mod', '**/package-lock.json', - '**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-hugo-deps- - - # Cache Hugo resources (processed images, CSS) - invalidates only when assets/config change - - uses: actions/cache@v4 - with: - path: resources/ - key: ${{ runner.os }}-hugo-resources-${{ hashFiles('assets/**/*', 'config/**/*', - 'hugo.yaml', 'package.json') }} - restore-keys: | - ${{ runner.os }}-hugo-resources- - - - name: Setup Pages - id: pages - uses: actions/configure-pages@v5 - - - name: Build with Hugo - env: - HUGO_ENVIRONMENT: production - run: | - echo "Hugo Cache Dir: $(hugo config | grep cachedir)" - hugo --minify --baseURL "${{ steps.pages.outputs.base_url }}/" - - - name: Generate Pagefind search index (if applicable) - run: | - # Check if site uses Pagefind search - if [ -f "package.json" ] && grep -q "pagefind" package.json; then - pnpm dlx pagefind --source "public" || npx pagefind --source "public" - fi - - - name: Upload artifact - uses: actions/upload-pages-artifact@v4 - with: - path: ./public - - # Deploy website to GitHub Pages hosting - deploy: - if: github.repository_owner != 'HugoBlox' - needs: build - # Grant GITHUB_TOKEN the permissions required to make a Pages deployment - permissions: - pages: write # to deploy to Pages - id-token: write # to verify the deployment originates from an appropriate source - # Deploy to the github-pages environment - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 diff --git a/.github/workflows/import-publications.yml b/.github/workflows/import-publications.yml deleted file mode 100644 index 9e99a52..0000000 --- a/.github/workflows/import-publications.yml +++ /dev/null @@ -1,122 +0,0 @@ -# Hugo Blox GitHub Action to convert Bibtex publications to Markdown-based webpages -name: Import Publications From Bibtex - -# Require permission to create a PR (least privilege principle) -permissions: - contents: write - pull-requests: write - -# Run workflow when a `.bib` file is added or updated in the `data/` folder -on: - push: - branches: ['main'] - paths: ['publications.bib'] - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -# Prevent concurrent runs of this workflow -concurrency: - group: import-publications-${{ github.ref }} - cancel-in-progress: true - -jobs: - hugoblox: - if: github.repository_owner != 'HugoBlox' - runs-on: ubuntu-latest - timeout-minutes: 10 - - env: - ACADEMIC_VERSION: '>=0.10.0' - PYTHON_VERSION: '3.12' - steps: - - name: Checkout the repo - uses: actions/checkout@v4 - with: - # Only need recent history for publication import - fetch-depth: 1 - - - name: Set up Python 3.13 - uses: actions/setup-python@v5 - with: - python-version: '3.12' - - name: Setup pip cache - uses: actions/cache@v4 - with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip-academic-${{ env.ACADEMIC_VERSION }} - restore-keys: | - ${{ runner.os }}-pip-academic- - ${{ runner.os }}-pip- - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install "academic${{ env.ACADEMIC_VERSION }}" - - name: Validate publications.bib file - if: ${{ hashFiles('publications.bib') != '' }} - run: | - if [ ! -f "publications.bib" ]; then - echo "❌ publications.bib file not found" - exit 1 - fi - echo "βœ… publications.bib file found" - - - name: Run Academic (Bibtex To Markdown Converter) - # Check `.bib` file exists for case when action runs on `.bib` deletion - # Note GH only provides hashFiles func in `steps.if` context, not `jobs.if` context - if: ${{ hashFiles('publications.bib') != '' }} - run: | - echo "πŸš€ Starting publication import..." - academic import publications.bib content/publication/ --compact --verbose - echo "βœ… Publication import completed successfully" - - # Verify that files were created - if [ -d "content/publication" ] && [ "$(ls -A content/publication/)" ]; then - echo "πŸ“š Publications imported: $(ls content/publication/ | wc -l) items" - else - echo "⚠️ No publications were imported" - fi - continue-on-error: false - - name: Create Pull Request - # Set ID for `Check outputs` stage - id: cpr - uses: peter-evans/create-pull-request@v6 - with: - commit-message: 'feat(publications): import latest publications from bibtex' - title: 'Hugo Blox Builder - Import latest publications from Bibtex' - body: | - πŸ”„ **Automated Publication Import** - - This PR automatically imports the latest publications from `publications.bib` to `content/publication/`. - - **Changes:** - - πŸ“š Updated publication entries - - 🏷️ Processed bibliographic data - - --- - ε°†ζœ€ζ–°ηš„ε‡Ίη‰ˆη‰©δ»Ž`publications.bib`ε―Όε…₯到`content/publication/`。 - - πŸ“– [View Documentation](https://github.com/GetRD/academic-file-converter) - base: main - labels: automated-pr, content, publications - branch: hugoblox-import-publications - delete-branch: true - draft: false - - name: Check outputs - if: ${{ steps.cpr.outputs.pull-request-number }} - run: | - echo "βœ… Successfully created Pull Request!" - echo "πŸ“ Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}" - echo "πŸ”— Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}" - echo "🎯 Operation completed at $(date)" - - - name: Report workflow status - if: always() - run: | - if [ "${{ job.status }}" == "success" ]; then - echo "πŸŽ‰ Workflow completed successfully" - else - echo "❌ Workflow failed - check logs for details" - exit 1 - fi diff --git a/.github/workflows/updater-wip.yml b/.github/workflows/updater-wip.yml deleted file mode 100644 index 25f5140..0000000 --- a/.github/workflows/updater-wip.yml +++ /dev/null @@ -1,24 +0,0 @@ -# This workflow is only for the Hugo Blox repository. It is safe to delete from your site. -name: Updater (WIP) - -on: - schedule: - - cron: 0 0 * * 0 - # Allows you to run this workflow manually from the Actions tab on GitHub. - workflow_dispatch: - -# Provide permission to clone the repo and deploy it to GitHub Pages -permissions: - contents: write - -jobs: - update: - if: github.repository_owner == 'HugoBlox' - runs-on: ubuntu-latest - steps: - - uses: HugoBlox/gh-action-updater@v2 - with: - feed-url: https://hugoblox.com/rss.xml - readme-section: news - branch: main - github_token: ${{ secrets.GITHUB_TOKEN }}