استخدام أكشنز جيتا لنشر موقع هوغو على AWS S3

بعد إعداد Gitea و Hugo على AWS S3...

Page content

الخطوة التالية هي تنفيذ بعض عمليات CI/CD وإعداد
إجراءات Gitea للحصول على موقع Hugo، لدفع الموقع إلى AWS S3
تلقائيًا عند تحديث فرع master.

لقد قمنا بالفعل - بعد تثبيت وتكوين واختبار Gitea إعداد خادم Gitea،
وإعداد SSL لـ Gitea،
بتكوين نشر موقع Hugo على AWS S3.

Gitea Runner

حسنًا. دعنا نبدأ

إنشاء رمز تحقق جديد لـ Gitea runner

انتقل إلى https://your-gitea-server/your-user/your-repo/settings/actions/runners

واضغط على إنشاء runner جديد

إنشاء runner جديد

نسخ رمز التسجيل

تشغيل runner جديد لـ Gitea

قم باتصال SSH بالخادم الذي سيقوم بتشغيل runner جديد لـ Gitea

وابدأ حاوية Docker. يمكنك تشغيلها كملف تنفيذي منفصل، أو تشغيلها كخدمة إلخ، ولكن هنا أستخدم حاوية Docker.

sudo docker run \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -e GITEA_INSTANCE_URL=http://<my-gitea-server>:3000/ \
    -e GITEA_RUNNER_REGISTRATION_TOKEN=<my-registration-token> \
    -e GITEA_RUNNER_NAME=srv-act-runner \
    --name my_runner \
    --restart always \
    -d docker.io/gitea/act_runner:latest

التحقق من تسجيل Runner

انتقل إلى https://your-gitea-server/your-user/your-repo/settings/actions/runners

وينبغي أن ترى أنه يعمل بالفعل

إنشاء عدد من السرائر الخاصة بـ AWS

انتقل إلى: https://your-gitea-server/your-user/your-repo/settings/actions/secrets

وأنشئ عددًا من السرائر الكبيرة: AWS_ACCESS_KEY_ID وAWS_SECRET_ACCESS_KEY. أنت تعرف ما معناهما، صحيح؟

aws-secrets

إنشاء تدفق عمل لـ Gitea لبناء ونشر موقع Hugo إلى s3

في مشروعك الخاص بـ Hugo، في المجلد .gitea/workflows أنشئ ملفًا يسمى hugo-deploy.yaml

name: Gitea Actions - Hugo Deploy
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
on:
  push:
    branches:
      - master
jobs:
  Hugo-Deploy:
    runs-on: ubuntu-latest
    steps:
      - run: echo "🎉 The job was automatically triggered by a ${{ gitea.event_name }} event."
      - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!"
      - run: echo "🔎 The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."

      - name: Check out repository code
        uses: actions/checkout@v4
        with:
          submodules: true  # Fetch Hugo themes (true OR recursive)
          fetch-depth: 0    # Fetch all history for .GitInfo and .Lastmod

      - run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner."

      - name: Setup Hugo
        uses: peaceiris/actions-hugo@v3
        with:
          hugo-version: '0.134.1' # or remove this for the latest
          extended: true

      - name: List files in the repository
        run: |
          ls

      - name: Build
        run: hugo

      - name: Deploy
        run: hugo deploy
        env:
          AWS_REGION: 'ap-southeast-2'
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

      - run: echo "🍏 This job's status is ${{ job.status }}."

إذا لم يكن لديك رغبة كبيرة في استضافة موقعك في سيدني - تغيّر AWS_REGION إلى ما تفضله.

هذا التكوين:

on:
  push:
    branches:
      - master

سيتعامل مع جميع الدفعات والدمج في فرع master.

التزامن والدفع

بعد دفع التغييرات إلى الخادم، يجب أن ترى على الصفحة https://your-gitea-server/your-user/your-repo/actions شيئًا قريبًا من

hugo-deploy-log-gitea-actions

أتمنى لك يومًا جميلًا!

روابط مفيدة