Skip to content

Merge pull request #36 from thejanit0r/master #2

Merge pull request #36 from thejanit0r/master

Merge pull request #36 from thejanit0r/master #2

Workflow file for this run

name: Build Sysmon Guide
on:
push:
branches: [ master, main ]
paths:
- 'chapters/**'
- 'chapters.json'
- 'build_guide.py'
- 'Build/**'
pull_request:
branches: [ master, main ]
paths:
- 'chapters/**'
- 'chapters.json'
- 'build_guide.py'
- 'Build/**'
workflow_dispatch: # Allow manual trigger
jobs:
validate:
name: Validate Chapters
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Validate configuration and chapters
run: |
python3 -c "
import json
import sys
from pathlib import Path
# Validate JSON
try:
config = json.load(open('chapters.json'))
print('✅ Configuration file is valid JSON')
except Exception as e:
print(f'❌ Invalid JSON: {e}')
sys.exit(1)
# Validate chapter files
missing = []
def check_chapter(chapter):
if 'file' in chapter:
if not Path(chapter['file']).exists():
missing.append(chapter['file'])
if 'sections' in chapter:
for section in chapter['sections']:
check_chapter(section)
for chapter in config['chapters']:
check_chapter(chapter)
if missing:
print('❌ Missing chapter files:')
for f in missing:
print(f' - {f}')
sys.exit(1)
else:
print('✅ All chapter files found')
"
build-markdown:
name: Build Master Document
runs-on: ubuntu-latest
needs: validate
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Build master document
run: python3 build_guide.py
- name: Check master document was created
run: |
if [ -f "Build/Sysmon.md" ]; then
echo "✅ Master document created successfully"
echo "📄 Document size: $(wc -c < Build/Sysmon.md) bytes"
echo "📝 Line count: $(wc -l < Build/Sysmon.md) lines"
else
echo "❌ Master document not found"
exit 1
fi
- name: Upload master document artifact
uses: actions/upload-artifact@v3
with:
name: master-document
path: Build/Sysmon.md
retention-days: 30
build-pdf:
name: Build PDF
runs-on: ubuntu-latest
needs: build-markdown
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install LaTeX and dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
texlive-xetex \
texlive-latex-extra \
texlive-fonts-extra \
texlive-fonts-recommended \
fonts-dejavu \
fonts-dejavu-core \
fonts-dejavu-extra \
pandoc \
perl
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Build master document
run: python3 build_guide.py
- name: Generate PDF
run: |
cd Build
chmod +x md2pdf.sh
./md2pdf.sh ./Sysmon.md SysmonGuide.pdf
- name: Check PDF was created
run: |
if [ -f "Build/SysmonGuide.pdf" ]; then
echo "✅ PDF created successfully"
echo "📄 PDF size: $(wc -c < Build/SysmonGuide.pdf) bytes"
else
echo "❌ PDF not found"
exit 1
fi
- name: Upload PDF artifact
uses: actions/upload-artifact@v3
with:
name: sysmon-guide-pdf
path: Build/SysmonGuide.pdf
retention-days: 90
docker-build:
name: Test Docker Build
runs-on: ubuntu-latest
needs: validate
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build Docker image
run: docker build -t sysmon-guide-builder .
- name: Test Docker build
run: |
docker run --rm \
-v $(pwd):/guide \
-w /guide \
sysmon-guide-builder \
python3 build_guide.py
- name: Verify Docker build output
run: |
if [ -f "Build/Sysmon.md" ]; then
echo "✅ Docker build successful"
else
echo "❌ Docker build failed"
exit 1
fi