Form to Wipe — GitHub Actions Deployment
Deze gids behandelt de GitHub Actions-implementatie van Form to Wipe. Elk verwijderingsverzoek is een Pull Request. Branch protection-regels dwingen af dat de aanvrager zijn eigen PR niet kan samenvoegen. Wanneer een fiatteur deze samenvat, voert de werkstroom het wiscommando uit en post de resultaten als PR-opmerking. De volledige geschiedenis leeft in git — permanent, doorzoekbaar en vervalsingsvast. Geen infrastructuur vereist.
Hoe het werkt
1. Aanvrager opent een Issue met de Wipe Request-sjabloon
2. Aanvrager maakt een branch en PR met verwijzing naar de issue
3. Een teamgenoot (niet de aanvrager) beoordeelt en voegt de PR samen
4. GitHub Actions uitvoert: parseert de PR-body, lost apparaat-ID's op, stuurt wiscommando's
5. Resultaten worden gepost als PR-opmerking
6. De samengevoegde PR is uw auditlogboek
Vereisten
- GitHub-repository (public of private met Actions minuten)
- Jamf Platform API OAuth2-client met wisrechten (zie Form to Wipe)
- Een aangewezen goedkeuringsteam in uw GitHub-organisatie
Instelling
Stap 1 — Fork of Clone de Repo
git clone https://github.com/YOUR_ORG/FTW-Form-to-Wipe.git
cd FTW-Form-to-Wipe
Of kopieer de inhoud van de github-workflow/ directory naar uw eigen repo root.
Stap 2 — Repository Secrets
Ga naar Settings → Secrets and variables → Actions → New repository secret en voeg toe:
| Secret | Waarde |
|---|---|
JAMF_CLIENT_ID |
Uw Jamf Platform API client ID |
JAMF_CLIENT_SECRET |
Uw Jamf Platform API client secret |
JAMF_TOKEN_URL |
Token endpoint, bijv. https://YOUR_INSTANCE.jamfcloud.com/api/oauth/token |
JAMF_REGION |
us, eu of apac — bepaalt het API Gateway URL-voorvoegsel |
GitHub-secrets worden nooit vastgelegd of onthuld in workflowoutput. Het token dat in runtime wordt opgehaald, wordt gemaskeerd via add-mask.
Stap 3 — Branch Protection Regels
Dit is de meest kritieke stap. Branch protection is wat afdwingt dat niemand zijn eigen verwijderingsverzoek kan goedkeuren.
Ga naar Settings → Branches → Add branch protection rule
Branch naampatroon:
main(of uw standaardbranch)Schakel de volgende instellingen in:
Instelling Vereist Require a pull request before merging ✅ Require approvals — set to 1 ✅ Dismiss stale reviews when new commits are pushed ✅ Require review from Code Owners Aanbevolen Restrict who can dismiss pull request reviews Aanbevolen Do not allow bypassing the above settings ✅ Kritiek
"Do not allow bypassing" voorkomt dat repository-admins hun eigen verzoeken samenvoegen. Zonder deze instelling kunnen admins goedkeuring volledig omzeilen.
Stap 4 — CODEOWNERS (Aanbevolen)
Maak .github/CODEOWNERS aan om beoordeling van een specifiek team voor elk bestand in de requests/ directory:
# .github/CODEOWNERS
requests/ @your-org/jamf-admins
Dit betekent dat elke PR die requests/ aanraakt automatisch een beoordeling van het jamf-admins team vereist. Teamleden kunnen hun eigen PR's nog steeds niet goedkeuren.
Stap 5 — Verzoekendirectory maken
mkdir requests
echo "# Wipe Requests\n\nMerged PRs in this directory represent executed device wipes." > requests/README.md
git add requests/
git commit -m "Add requests directory"
git push
De werkstroom wordt geactiveerd bij pull_request → closed events voor elke PR die requests/**.md aanraakt.
Een verwijderingsverzoek indienen
Als aanvrager
Open een Issue met de Device Wipe Request-sjabloon. Vul alle velden nauwkeurig in. Noteer het issue-nummer (bijv.
#42).Maak een branch:
git checkout -b wipe/issue-42-device-wipeMaak het verzoekbestand aan:
cat > requests/wipe-$(date +%Y%m%d-%H%M%S).md << 'EOF' **Tenant Name:** Production **Tenant ID:** aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee **Device Type:** computer **Device IDs:** 42,87 **Reason:** Employee offboarding — devices not returned **Find My PIN:** EOF git add requests/ git commit -m "Wipe request for devices 42, 87 - fixes #42" git push -u origin wipe/issue-42-device-wipeOpen een Pull Request — titel:
Device Wipe Request — fixes #42. Vraag beoordeling aan van een teamgenoot.
Als fiatteur
- Beoordeel de PR — controleer of de apparaat-ID's en reden legitiem zijn
- Bevestig dat u niet de PR-auteur bent (GitHub dwingt dit af, maar controleer)
- Goedkeuren en Merge met merge commit (niet squash, niet rebase — merge commit behoudt de volledige history)
- De werkstroom wordt automatisch bij merge uitgevoerd
- Controleer de PR-opmerkingen voor resultaten
Audittrail
Elke samengevoegde verwijderingsverzoek PR is een permanent auditrecord met:
| Veld | Bron |
|---|---|
| Wie aangevraagd | PR-auteur |
| Wie goedgekeurd | Samengevoegd door |
| Welke apparaten | PR-body / verzoekbestand |
| Welke tenant | PR-body |
| Wanneer goedgekeurd | Merge-timestamp |
| Resultaat | Workflow PR-opmerking |
Zo zoekt u eerdere wisen:
# Lijsten alle samengevoegde wipe-PR's op label
gh pr list --label wipe-request --state merged
# Zoeken op apparaat-ID
gh pr list --state merged --search "device 42"
Beveiligingsoverwegingen
- Jamf Platform API-inloggegevens staan als repository secrets — nooit in workflowcode of verzoekbodies
- Branch protection voorkomt zelfgoedkeuring op platformniveau
CODEOWNERSzorgt ervoor dat alleen aangewezen admins verwijderingsverzoeken kunnen goedkeuren- De werkstroom valideert aanvrager ≠ fiatteur bij runtime als tweede controle
- Workflow resultaatkommentaren worden aan de PR toegevoegd en kunnen later niet worden gewijzigd
- De
requests/directory verzamelt een permanent, onveranderbaar record van elke uitgevoerde wis
Beperkingen vs. n8n
| Functie | GitHub Actions | n8n |
|---|---|---|
| Interface | GitHub Issue + PR | Slack modal |
| Real-time approval UX | ⚠️ Asynchrone PR review | ✅ Slack DM |
| Approval timeout | ❌ Handmatig sluiten | ✅ Configureerbaar |
| Audittrail | ✅ Git history (onveranderbaar) | Slack kanaal |
| Vereiste infrastructuur | Geen | n8n instantie |
| Multi-tenant | ✅ Per verzoekbestand | ✅ Per vervolgkeuzelijst |
| Kosten | Gratis (public) / Actions minuten | n8n licentie |