Leuk dat het voor je werkt en dat je stappen aan het zetten bentMars Warrior schreef op maandag 1 december 2025 @ 10:32:
Ik krijg er nu deze dingen uit als pipeline voor Woodpecker bijv.
Het is geen Ansible (), maar doet wel alles om zaken op te zetten, te initialiseren en te deployen.
[...]
Het mounten en rsyncen lijkt in eerste instantie een enorm goed idee totdat het een keer misgaat
rsync -a --delete . "/deployroot///"
Oeps
# CI_REPO_OWNER=".." # CI_REPO_NAME=".." rsync -a --delete . "/deployroot/../../"
En nu niet zeggen dat dat niet kan, want met wat creativiteit kan er meer dan je denkt
Ansible is wat mij betreft de gouden standaard voor dit soort deployments. Met name omdat je ook veiligheid in kan bouwen en omdat communicatie via SSH of WinRM gaat. Ik ken Woodpecker verder niet, maar ik begrijp eerlijk gezegd niet waarom je niet een native CI/CD platform neemt. Dat integreert volgens mij veel makkelijker en maak je het jezelf nu alleen maar lastig...
Ook kun je met GitLab Runners, Forgejo Actions of GitHub Actions de ingebouwde secrets gebruiken voor dit soort deployments waarmee authenticatie naar bijv. target machines per repo beperkt kan worden. Mijn infra repo heeft bijvoorbeeld de Ansible Vault sleutel:"
/f/image/3aWHLQDv9VuJXnUeIONLG8Gc.png?f=fotoalbum_large)
Maar die kan ik voor de rest niet inzien. Aan mijn account zitten daarnaast de deploy keys gekoppeld:
/f/image/CU7Tbets7Nro2nhbRhpwK1il.png?f=fotoalbum_large)
Dit is de private key van de deploy voor mijn machines.
Bedenk ook dat Forgejo Actions, Gitea Actions afgeleid zijn van GitHub Actions. De meeste actions die te vinden zijn op de GitHub marketplace zijn uitwisselbaar en te gebruiken in Forgejo. Misschien maakt dit je leven ook een stuk makkelijker
Yes, maar je moet niet gaan rennen voordat je gaat lopen hè. Mijn eerste Docker build workflow is al een heel stuk eenvoudiger.In de repo van @alex3305 zag ik nog wat behoorlijke complexe actions om allerhande versies aan te maken zodat je alle stacks samenneemt voor zover ik begrijp in een release, maar dat komt later wel.
Ik heb zelfs nog een hele tijd Docker container(s) gebruikt, net zoals met Woodpecker. Maar daar ben ik vanaf gestapt omdat ik nu een hosted tool cache gebruik. Daarmee heb ik geen extra ruimte nodig voor (custom) Docker images. Daarbij gebruik ik dan een cache stap zodat Forgejo Actions de cache kan gebruiken bij packages met dezelfde versie(s). Bij mijn infra repo gebruik ik daarvoor de hash van Python's requirements.txt en de hash van Ansible Galaxy requirements.yml:
.forgejo/actions/setup-ansible/action.yml
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| runs: using: "composite" steps: - name: 🏗️ Setup Python id: setup-python uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6 with: cache: 'pip' cache-dependency-path: 'requirements.txt' - name: 👷 Install Python dependencies if: steps.setup-python.outputs.cache-hit != 'true' shell: bash run: pip install -r requirements.txt - name: 📦 Setup Ansible Galaxy Cache id: ansible-galaxy-cache uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 with: path: | .ansible ~/.ansible key: ${{ runner.os }}-ansible-${{ hashFiles('**/requirements.yml') }} restore-keys: | ${{ runner.os }}-ansible- - name: 🌌 Install Ansible Galaxy dependencies if: steps.ansible-galaxy-cache.outputs.cache-hit != 'true' shell: bash run: ansible-galaxy install -r requirements.yml |
Het is in dit geval maar een paar MB aan cache, maar zorgt ervoor dat Ansible in minder dan 10 seconde is geïnstalleerd en klaar is voor gebruik. Het opstarten van een Ansible container (zonder pull) was gek genoeg een minuutje langzamer. Waarschijnlijk omdat het om Docker in Docker in Docker ging
/f/image/Q5RckVMiXhFMnrhGOCwXxT56.png?f=fotoalbum_large)
/f/image/vimsjVMzicvJRIZdv8HZXTlJ.png?f=fotoalbum_large)
:strip_exif()/f/image/GzSa52jv7cyUl9Iq5aNoUxxg.png?f=user_large)
:strip_exif()/f/image/iyKMNVqjIl33TI5C235zefqd.png?f=user_large)
/f/image/L5zwvZyMnPV35Z9tNsUCS1bQ.png?f=fotoalbum_large)
/f/image/5kYxcRaFX4TgWiqkTtz9hCsC.png?f=fotoalbum_large)
/f/image/oqTznUI78A5U094Fy9gwpuXe.png?f=fotoalbum_large)
/f/image/S9NQNl3BtYmh7XkLY1jNRoVz.png?f=fotoalbum_large)
/f/image/c4cVDvFIx2SSdPFBPdMe7NQB.png?f=fotoalbum_large)
/f/image/QOVoBbb0yEICTca84LgTo7sA.png?f=fotoalbum_large)
/f/image/3jYFXgUus0ECnTp8Eok4AA7L.png?f=fotoalbum_large)
:strip_exif()/f/image/KSwoaHEAXKLWMfb7x6vT8Z1Z.png?f=user_large)
/f/image/eZz1YEkUjiTq82jUfyF1sdMv.png?f=fotoalbum_large)
:strip_exif()/f/image/GqFahEqoIJNJPjF9wRoGsmTN.png?f=user_large)
:strip_exif()/f/image/FejRWwBMYGw15L5s1JbChAa8.jpg?f=fotoalbum_large)
/f/image/qrk9v5CclTjzIbqCf0gnC14Q.png?f=fotoalbum_large)
/f/image/q1osnuGwzR9vThnYhq13fe5v.png?f=fotoalbum_large)
/f/image/50MxTwEJVOvVBpH3KkwA9iGe.png?f=fotoalbum_large)