Założyłem nowe repozytorium na GitHub, np. wasm
Dodałem prosty plik C – hello.c
W katalogu .github/workflows/ stworzyłem plik main.yml. Oto jego treść:
######
name: Compile C to WebAssembly and Deploy
on:
push:
branches:
- main
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Emscripten
run: |
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
./emsdk install latest
./emsdk activate latest
shell: bash
- name: Compile C to WebAssembly
run: |
source emsdk/emsdk_env.sh
mkdir dist
emcc hello.c -o dist/index.html
shell: bash
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v4
with:github_token:${{secrets.GITHUB_TOKEN }}
publish_dir: ./dist
########
error 128 nie ma uprawnień do zapisu w gh-pages
Aby GitHub Actions mogło pisać do gałęzi gh-pages, trzeba było ustawić uprawnienia:
Przejdź do Settings → Actions → General
W sekcji Workflow permissions:
Zmień z Read access na Read and write permissions
Kliknij Save
Bez tego deploy nie zadziała — akcja nie ma wtedy prawa tworzyć ani aktualizować gałęzi gh-pages.
🚀 5. Publikacja strony
Po zatwierdzeniu zmian (git push na main), GitHub Actions:
skompilował hello.c do index.html, index.js, index.wasm
umieścił wszystko w folderze dist/
opublikował zawartość jako stronę GitHub Pages
Konfiguracja GitHub Pages:
W repozytorium:
Wejdź w Settings → Pages
Wybierz:
Branch: gh-pages
Folder: / (root)
Kliknij Save
Strona była gotowa pod:
📎 https://notepadpl.github.io/wasm/
🐛 Problemy po drodze
Strona wyświetlała kod HTML jako tekst — GitHub traktował pliki jak zwykłe pliki repozytorium
Rozwiązanie: poprawne ustawienie GitHub Pages + użycie index.html
Akcja nie mogła pisać do gh-pages — trzeba było zmienić uprawnienia Actions na "Read and write"
Brak folderu dist/ — bez tego deploy zawierał niepotrzebne pliki
✅ Efekt końcowy
Po poprawkach wszystko działa automatycznie:
pushuję nową wersję hello.c
GitHub Actions kompiluje i publikuje nowe WebAssembly
strona się aktualizuje
No comments:
Post a Comment