Avatar

my-app-s(M.R.E)

Мой репозиторий:

go-generate

Stack

HTML Generator in Go

[!NOTE]

Go Version License Status CI CI

Описание

Простой и быстрый локальный генератор статического лендинга(статической страницы) на Go так же реализован как CI для GitHub Actions для автоматического деплоя в GitHub Pages.

🛠 Features

🎨 Визуализация процесса

🚀 Инструкции

Примеры есть по пути templates/examples/ в репозитории.

📦 Локальная генерация (OS Linux)

Для локальный генерации лендинга необходимо: - скачать репозиторий командой git clone https://github.com/my-app-s/go-generator.git - перейти в деректорию скачаного go-generator - обновить зависимости командой go mod tidy - запустить main.go

Команды для выполнения в терминале:

# скачать репозиторий
git clone https://github.com/my-app-s/go-generator.git
# перейти в деректорию репозитория
cd go-generator
# обновить зависимости
go mod tidy
# запустить
go run main.go

Команды для выполнения в терминале:

# перейти в деректорию dist
cd dist
# посмотреть содержимое директории
ls

📦 CI деплой для GitHub Page (GitHub Actions)

Для автоматического деплоя с помощью GitHub Actions как CI для GitHub Page необходимо следующее: - создать в репозитории файл deploy.yml по пути .github/workflows

Команды для выполнения в терминале:

# созлание деректорий .github/workflows (ключ -p позволяет создать полный путь директорий)
mkdir -p `.github/workflows`
# созлание deploy.yml
touch .github/workflows/deploy.yml
name: Deploy to GitHub Pages

on:
  push:
    # Запускаем workflows при пуше в ветку main или вручную
    branches: [ main ]
    # Игнорируем файлы при изменении которых деплой не будет запускаться
    paths-ignore:
      - 'LICENSE'
      - '.gitignore'
      - '.github/workflows/**'
  workflow_dispatch:

# Устанавливаем права
permissions:
  contents: read
  pages: write
  id-token: write

# Разрешаем только один одновременный деплой
concurrency:
  group: "pages"
  cancel-in-progress: true

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Landing Repository (конфиг и редми)
        uses: actions/checkout@v7
        with:
          path: landing-source

      - name: Checkout Generator Repository (исходники генератора на Go)
        uses: actions/checkout@v7
        with:
          repository: 'my-app-s/go-generator'
          path: generator-source

      - name: Set up Go
        uses: actions/setup-go@v7
        with:
          go-version: '1.25'
          cache: false

      - name: Install dependencies
        run: |
          cd generator-source
          go mod tidy

      - name: Build binaries
        run: |
          cd generator-source
          CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o go-generator .
          chmod +x ./go-generator

      - name: Copy binaries
        run: cp ./go-generator ../landing-source

      - name: Run Go Generator
        run: |
          cd landing-source
          ./go-generator

      - name: Setup Pages
        uses: actions/configure-pages@v6

      - name: Upload artifact
        uses: actions/upload-pages-artifact@v5
        with:
          path: 'landing-source/dist'
          retention-days: 1

  deploy:
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v5

Альтернативный вариант использование как Action:

name: Deploy to GitHub Pages

on:
  push:
    branches: [ main ]
    paths-ignore:
      - 'LICENSE'
      - '.gitignore'
      - '.github/workflows/**'
  workflow_dispatch:

permissions:
  contents: read
  pages: write
  id-token: write

concurrency:
  group: "pages"
  cancel-in-progress: true

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Landing Repository (конфиг и редми)
        uses: actions/checkout@v7

      # Использование my-app-s/go-generator@1 action
      - name: Generate Static Site
        uses: my-app-s/go-generator@v1

      - name: Setup Pages
        uses: actions/configure-pages@v6

      - name: Upload artifact
        uses: actions/upload-pages-artifact@v5
        with:
          path: 'dist'
          retention-days: 1

  deploy:
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v5

Команды для выполнения в терминале:

# создание config.json
touch config.json

[!IMPORTANT]

В файле config.json обязательно заполнить Редактировать по правилам синтаксиса JSON

{
  "name_repository": "название репозитория",
  "name_author": "имя автора",
  "url_avatar": "ссылка на аватар",
  "url_repository": "ссылка на репозиторий",
  "stack": [
    // можно удалить оставив нужное колличество
    {"name": "имя навыка"}, // если более одного `,` обязательна
    {"name": "имя навыка"},
    {"name": "имя навыка"}
  ],
  "links": [
    // можно удалить оставив нужное колличество
    {"name": "название", "url": "ссылка"}, // если более одного `,` обязательна
    {"name": "название", "url": "ссылка"},
    {"name": "название", "url": "ссылка"},
    {"name": "название", "url": "ссылка"}
  ]
}

Realization Action

Example use in deploy:

Если стандартно по инструкции:

- name: Generate Static Site
  uses: my-app-s/go-generator@v1

Или используется кастомный подход:

- name: Generate Static Site
  uses: my-app-s/go-generator@v1
  with:
    config: 'custom-config.json'
    readme: 'docs/MAIN_README.md'

🔄 Обновление генератора в лендингах

Если обновлен код в репозиторий go-generator (например, изменил шаблон HTML), то созданный лендинг подтянет изменения при следующем деплое. Чтобы принудительно запустить пересборку без изменения файлов лендинга, необходимо выполнить пустой коммит:

[!IMPORTANT]

Но нужно из paths-ignore в deploy.yml удалить '.github/workflows/**' если этого не сделать обновление генератора в лендингах не сработает.

git commit --allow-empty -m "ci: trigger rebuild with latest generator template"
git push

Disclaimer & License

Author & Contacts