feat: setup MkDocs + Forgejo Actions deploy ke vm-edge
Some checks failed
Deploy Buku Online → helmibahara.my.id/book/sim/ / Build MkDocs & Deploy ke vm-edge (push) Has been cancelled
Some checks failed
Deploy Buku Online → helmibahara.my.id/book/sim/ / Build MkDocs & Deploy ke vm-edge (push) Has been cancelled
This commit is contained in:
parent
e52a9ca0b5
commit
11b1e998ce
3 changed files with 315 additions and 0 deletions
67
.forgejo/workflows/deploy.yml
Normal file
67
.forgejo/workflows/deploy.yml
Normal file
|
|
@ -0,0 +1,67 @@
|
||||||
|
name: Deploy Buku Online → helmibahara.my.id/book/sim/
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [main]
|
||||||
|
paths:
|
||||||
|
- "chapters/**"
|
||||||
|
- "backmatter/**"
|
||||||
|
- "foundation/RPS-SIM.md"
|
||||||
|
- "mkdocs.yml"
|
||||||
|
- "scripts/sync-docs.py"
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
name: Build MkDocs & Deploy ke vm-edge
|
||||||
|
runs-on: ubuntu-latest # Forgejo self-hosted runner
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Setup Python 3.12
|
||||||
|
uses: actions/setup-python@v5
|
||||||
|
with:
|
||||||
|
python-version: "3.12"
|
||||||
|
cache: "pip"
|
||||||
|
|
||||||
|
- name: Install MkDocs + Material
|
||||||
|
run: |
|
||||||
|
pip install --upgrade pip
|
||||||
|
pip install \
|
||||||
|
mkdocs==1.6.* \
|
||||||
|
mkdocs-material==9.* \
|
||||||
|
mkdocs-minify-plugin \
|
||||||
|
pymdown-extensions
|
||||||
|
|
||||||
|
- name: Sync chapters → docs/
|
||||||
|
run: python scripts/sync-docs.py --verbose
|
||||||
|
|
||||||
|
- name: Build site MkDocs
|
||||||
|
run: mkdocs build --strict
|
||||||
|
|
||||||
|
# ── Deploy ke vm-edge via rsync over SSH ────────────────────────
|
||||||
|
# Secret yang dibutuhkan di Forgejo repo → Settings → Secrets:
|
||||||
|
# DEPLOY_KEY → private key (ed25519) untuk akses vm-edge
|
||||||
|
# Di vm-edge tambahkan public key ke authorized_keys deploy user
|
||||||
|
# ─────────────────────────────────────────────────────────────────
|
||||||
|
- name: Setup SSH deploy key
|
||||||
|
run: |
|
||||||
|
mkdir -p ~/.ssh
|
||||||
|
echo "${{ secrets.DEPLOY_KEY }}" > ~/.ssh/deploy_key
|
||||||
|
chmod 600 ~/.ssh/deploy_key
|
||||||
|
ssh-keyscan -H 192.168.18.202 >> ~/.ssh/known_hosts
|
||||||
|
|
||||||
|
- name: Rsync site/ → vm-edge:/var/www/sim-book/
|
||||||
|
run: |
|
||||||
|
rsync -avz --delete \
|
||||||
|
-e "ssh -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no" \
|
||||||
|
site/ \
|
||||||
|
deploy@192.168.18.202:/var/www/sim-book/
|
||||||
|
|
||||||
|
- name: Cleanup SSH key
|
||||||
|
if: always()
|
||||||
|
run: rm -f ~/.ssh/deploy_key
|
||||||
124
mkdocs.yml
Normal file
124
mkdocs.yml
Normal file
|
|
@ -0,0 +1,124 @@
|
||||||
|
site_name: Sistem Informasi Manajemen di Era AI
|
||||||
|
site_description: Perspektif Strategis dan Pengambilan Keputusan — Helmi Bahar Alim, S.Kom., M.Kom.
|
||||||
|
site_author: Helmi Bahar Alim
|
||||||
|
site_url: https://helmibahara.my.id/book/sim/ # slug: ganti "sim" jika perlu
|
||||||
|
|
||||||
|
repo_name: forgejo/sim-manajement-book
|
||||||
|
repo_url: https://forgejo.upb.ac.id/helmi-upb/sim-manajement-book # ganti host jika perlu
|
||||||
|
edit_uri: edit/main/chapters/
|
||||||
|
|
||||||
|
docs_dir: docs
|
||||||
|
site_dir: site
|
||||||
|
|
||||||
|
theme:
|
||||||
|
name: material
|
||||||
|
language: id
|
||||||
|
palette:
|
||||||
|
- scheme: default
|
||||||
|
primary: indigo
|
||||||
|
accent: blue
|
||||||
|
toggle:
|
||||||
|
icon: material/weather-sunny
|
||||||
|
name: Beralih ke mode gelap
|
||||||
|
- scheme: slate
|
||||||
|
primary: indigo
|
||||||
|
accent: blue
|
||||||
|
toggle:
|
||||||
|
icon: material/weather-night
|
||||||
|
name: Beralih ke mode terang
|
||||||
|
font:
|
||||||
|
text: Source Serif 4
|
||||||
|
code: JetBrains Mono
|
||||||
|
features:
|
||||||
|
- navigation.tabs
|
||||||
|
- navigation.tabs.sticky
|
||||||
|
- navigation.sections
|
||||||
|
- navigation.expand
|
||||||
|
- navigation.top
|
||||||
|
- navigation.footer
|
||||||
|
- search.highlight
|
||||||
|
- search.suggest
|
||||||
|
- content.action.edit
|
||||||
|
- content.code.copy
|
||||||
|
- toc.follow
|
||||||
|
icon:
|
||||||
|
repo: fontawesome/brands/git-alt
|
||||||
|
edit: material/pencil
|
||||||
|
|
||||||
|
plugins:
|
||||||
|
- search:
|
||||||
|
lang: id
|
||||||
|
- minify:
|
||||||
|
minify_html: true
|
||||||
|
|
||||||
|
markdown_extensions:
|
||||||
|
- admonition
|
||||||
|
- pymdownx.details
|
||||||
|
- pymdownx.superfences
|
||||||
|
- pymdownx.tabbed:
|
||||||
|
alternate_style: true
|
||||||
|
- pymdownx.emoji:
|
||||||
|
emoji_index: !!python/name:material.extensions.emoji.twemoji
|
||||||
|
emoji_generator: !!python/name:material.extensions.emoji.to_svg
|
||||||
|
- pymdownx.highlight:
|
||||||
|
anchor_linenums: true
|
||||||
|
- tables
|
||||||
|
- toc:
|
||||||
|
permalink: true
|
||||||
|
title: Daftar Isi Bab
|
||||||
|
- attr_list
|
||||||
|
- def_list
|
||||||
|
- footnotes
|
||||||
|
- md_in_html
|
||||||
|
|
||||||
|
extra:
|
||||||
|
social:
|
||||||
|
- icon: fontawesome/brands/git-alt
|
||||||
|
link: https://forgejo.upb.ac.id/helmi-upb/sim-manajement-book
|
||||||
|
name: Source di Forgejo
|
||||||
|
generator: false
|
||||||
|
|
||||||
|
copyright: >
|
||||||
|
© 2026 Helmi Bahar Alim — Universitas Putra Bangsa, Kebumen.
|
||||||
|
Hak cipta dilindungi.
|
||||||
|
|
||||||
|
nav:
|
||||||
|
- Beranda: index.md
|
||||||
|
- Kata Pengantar: kata-pengantar.md
|
||||||
|
|
||||||
|
- "Bagian I — Konteks Strategis":
|
||||||
|
- "Bab 1: Peran SI dalam Organisasi Modern": bab-01.md
|
||||||
|
- "Bab 2: Keselarasan Strategi Bisnis dan SI": bab-02.md
|
||||||
|
|
||||||
|
- "Bagian II — Fondasi Berpikir Manajerial":
|
||||||
|
- "Bab 3: Data dan Informasi sebagai Aset": bab-03.md
|
||||||
|
- "Bab 4: Analisis Permasalahan Organisasi": bab-04.md
|
||||||
|
- "Bab 5: Kebutuhan Informasi Manajerial": bab-05.md
|
||||||
|
|
||||||
|
- "Bagian III — SI dalam Proses Bisnis dan Keputusan":
|
||||||
|
- "Bab 6: SI dalam Fungsi Bisnis": bab-06.md
|
||||||
|
- "Bab 7: Sistem Perusahaan dan Integrasi": bab-07.md
|
||||||
|
- "Bab 8: Pengambilan Keputusan Berbasis Data": bab-08.md
|
||||||
|
- "Bab 9: Business Intelligence dan Analitik": bab-09.md
|
||||||
|
|
||||||
|
- "Bagian IV — Perancangan Solusi SI":
|
||||||
|
- "Bab 10: Pemodelan Proses Bisnis": bab-10.md
|
||||||
|
- "Bab 11: Perancangan Konseptual SI": bab-11.md
|
||||||
|
- "Bab 12: Alternatif Solusi Custom-Komersial-Cloud": bab-12.md
|
||||||
|
|
||||||
|
- "Bagian V — Implementasi, Evaluasi & Risiko":
|
||||||
|
- "Bab 13: Implementasi Sistem Informasi": bab-13.md
|
||||||
|
- "Bab 14: Evaluasi Kelayakan dan ROI": bab-14.md
|
||||||
|
- "Bab 15: Risiko, Keamanan, dan Tata Kelola SI": bab-15.md
|
||||||
|
|
||||||
|
- "Bagian VI — Transformasi Digital, AI & Masa Depan":
|
||||||
|
- "Bab 16: Transformasi Digital dan E-Business": bab-16.md
|
||||||
|
- "Bab 17: AI dalam Pengambilan Keputusan": bab-17.md
|
||||||
|
- "Bab 18: Tren SI dan Masa Depan Organisasi": bab-18.md
|
||||||
|
|
||||||
|
- Referensi & Back Matter:
|
||||||
|
- Daftar Referensi: references.md
|
||||||
|
- Glosarium: glosarium.md
|
||||||
|
- Indeks: indeks.md
|
||||||
|
- Tentang Penulis: tentang-penulis.md
|
||||||
|
- RPS Mata Kuliah: rps-sim.md
|
||||||
124
scripts/sync-docs.py
Normal file
124
scripts/sync-docs.py
Normal file
|
|
@ -0,0 +1,124 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
sync-docs.py — Salin chapters/ ke docs/ untuk MkDocs
|
||||||
|
=====================================================
|
||||||
|
Bersihkan:
|
||||||
|
- metadata block (```metainfo ... ```)
|
||||||
|
- HTML comment (<!-- ... -->)
|
||||||
|
- mermaid block → ganti dengan blockquote keterangan
|
||||||
|
- baris kosong berlebih (maks 2)
|
||||||
|
|
||||||
|
Buat docs/index.md dan docs/rps-sim.md otomatis.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import re
|
||||||
|
import argparse
|
||||||
|
import shutil
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
ROOT = Path(__file__).parent.parent
|
||||||
|
CHAPTERS = ROOT / "chapters"
|
||||||
|
BACKMATTER = ROOT / "backmatter"
|
||||||
|
FOUNDATION = ROOT / "foundation"
|
||||||
|
DOCS = ROOT / "docs"
|
||||||
|
|
||||||
|
|
||||||
|
def clean(text: str) -> str:
|
||||||
|
# 1. Hapus metadata block
|
||||||
|
text = re.sub(r"^```metainfo\s*\n.*?```\s*\n?", "", text,
|
||||||
|
flags=re.DOTALL | re.MULTILINE)
|
||||||
|
# 2. Hapus HTML comment
|
||||||
|
text = re.sub(r"<!--.*?-->", "", text, flags=re.DOTALL)
|
||||||
|
# 3. Ganti mermaid dengan keterangan
|
||||||
|
def mermaid_sub(m: re.Match) -> str:
|
||||||
|
first = m.group(1).strip().splitlines()[0] if m.group(1).strip() else "Diagram"
|
||||||
|
return f"\n> **[Diagram]** *{first}* — lihat versi cetak.\n"
|
||||||
|
text = re.sub(r"```mermaid\s*\n(.*?)```", mermaid_sub, text, flags=re.DOTALL)
|
||||||
|
# 4. Normalisasi baris kosong
|
||||||
|
text = re.sub(r"\n{3,}", "\n\n", text)
|
||||||
|
return text.strip() + "\n"
|
||||||
|
|
||||||
|
|
||||||
|
def write(dst: Path, content: str) -> None:
|
||||||
|
dst.write_text(content, encoding="utf-8")
|
||||||
|
|
||||||
|
|
||||||
|
def sync(verbose: bool) -> None:
|
||||||
|
if verbose:
|
||||||
|
print(f"docs/ → {DOCS}")
|
||||||
|
|
||||||
|
DOCS.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
# Chapters
|
||||||
|
for src in sorted(CHAPTERS.glob("bab-*.md")):
|
||||||
|
write(DOCS / src.name, clean(src.read_text("utf-8")))
|
||||||
|
if verbose:
|
||||||
|
print(f" ✓ {src.name}")
|
||||||
|
|
||||||
|
# Backmatter
|
||||||
|
for name in ["kata-pengantar.md", "references.md", "glosarium.md",
|
||||||
|
"indeks.md", "tentang-penulis.md"]:
|
||||||
|
src = BACKMATTER / name
|
||||||
|
if src.exists():
|
||||||
|
write(DOCS / name, clean(src.read_text("utf-8")))
|
||||||
|
if verbose:
|
||||||
|
print(f" ✓ {name}")
|
||||||
|
|
||||||
|
# RPS
|
||||||
|
rps = FOUNDATION / "RPS-SIM.md"
|
||||||
|
if rps.exists():
|
||||||
|
write(DOCS / "rps-sim.md", clean(rps.read_text("utf-8")))
|
||||||
|
if verbose:
|
||||||
|
print(" ✓ rps-sim.md")
|
||||||
|
|
||||||
|
# index.md
|
||||||
|
index = """\
|
||||||
|
# Sistem Informasi Manajemen di Era AI
|
||||||
|
|
||||||
|
**Perspektif Strategis dan Pengambilan Keputusan**
|
||||||
|
|
||||||
|
*Helmi Bahar Alim, S.Kom., M.Kom.* — Universitas Putra Bangsa, Kebumen · Edisi 2025/2026
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Tentang Buku Ini
|
||||||
|
|
||||||
|
Buku ajar mata kuliah **Sistem Informasi Manajemen (SIM)** yang dirancang untuk era
|
||||||
|
kecerdasan buatan. Buku ini membekali mahasiswa dengan kerangka berpikir manajerial
|
||||||
|
untuk menggunakan SI sebagai senjata pengambilan keputusan.
|
||||||
|
|
||||||
|
## Struktur Buku
|
||||||
|
|
||||||
|
| Bagian | Topik | Bab |
|
||||||
|
|--------|-------|-----|
|
||||||
|
| I | Konteks Strategis | 1–2 |
|
||||||
|
| II | Fondasi Berpikir Manajerial | 3–5 |
|
||||||
|
| III | SI dalam Proses Bisnis & Keputusan | 6–9 |
|
||||||
|
| IV | Perancangan Solusi SI | 10–12 |
|
||||||
|
| V | Implementasi, Evaluasi & Risiko | 13–15 |
|
||||||
|
| VI | Transformasi Digital, AI & Masa Depan | 16–18 |
|
||||||
|
|
||||||
|
## Navigasi Cepat
|
||||||
|
|
||||||
|
- [Kata Pengantar](kata-pengantar.md)
|
||||||
|
- [BAB 1 — Mulai dari sini →](bab-01.md)
|
||||||
|
- [Glosarium](glosarium.md)
|
||||||
|
- [Referensi](references.md)
|
||||||
|
- [RPS Mata Kuliah](rps-sim.md)
|
||||||
|
"""
|
||||||
|
write(DOCS / "index.md", index)
|
||||||
|
if verbose:
|
||||||
|
print(" ✓ index.md")
|
||||||
|
|
||||||
|
print("✅ Sync selesai → docs/")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument("--verbose", "-v", action="store_true")
|
||||||
|
parser.add_argument("--clean", action="store_true",
|
||||||
|
help="Hapus docs/ dulu sebelum sync")
|
||||||
|
args = parser.parse_args()
|
||||||
|
if args.clean and DOCS.exists():
|
||||||
|
shutil.rmtree(DOCS)
|
||||||
|
sync(args.verbose)
|
||||||
Loading…
Add table
Reference in a new issue