Benutzer-Werkzeuge

Webseiten-Werkzeuge


programming:git:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
programming:git:start [2020/06/01 11:41]
frank [lokales Repo aktualisieren]
programming:git:start [2020/07/07 22:05] (aktuell)
frank [automatisches build]
Zeile 958: Zeile 958:
 !external/ !external/
 </​code>​ </​code>​
 +
 +==== automatisches build ====
 +
 +ich habe auf meinem NAS ein (sehr simples) deployment eingerichtet,​ welches mir nach einem Push automatisch mein [[https://​github.com/​frank-w/​BPI-R2-4.14|Kernel-repo]] baut.
 +
 +dazu muss ich natürlich erstmal die Abhängigkeiten installieren,​ die meine build.sh benötigt (siehe Readme.md).
 +weiterhin benötigt ccache ein temp-Verzeichnis im home des Users unter dem die build.sh läuft...da dies bei mir www-data ist (home=/​var/​www) musste ich das Verzeichnis hier anlegen und entsprechend die Rechte setzen.
 +
 +Bei mir läuft der GIT-Server in einer VM, von daher bedenkenlos möglich ;) sonst sollte zumindest der Deploy-Prozess (und die installierten Tools) in eine VM gepackt werden.
 +
 +der git-hook selbst sieht dann so aus (da ich nicht nur den Master-Branch bauen möchte sind die Code-Stellen auskommentiert):​
 +<code bash>
 +#!/bin/bash
 +TARGET="/​mnt/​vcs/​git_repo/​BPI-R2-Linux-master"​
 +GIT_DIR="/​mnt/​vcs/​git_repo/​BPI-R2-Linux"​
 +BRANCH="​master"​
 +
 +while read oldrev newrev ref
 +do
 +  # only checking out the master (or whatever branch you would like to deploy)
 +#  if [[ $ref = refs/​heads/​$BRANCH ]];
 +#  then
 +     ​BRNCH=${ref//​refs\/​heads\//​} #without "​A"​ to avoid conflict with filter
 +    echo "Ref $ref ($oldrev => $newrev) received. Deploying
 +${BRNCH} branch to production..."​
 +    mkdir -p $TARGET/​$newrev
 +    git --work-tree=$TARGET/​$newrev --git-dir=$GIT_DIR check
 +out -f $BRNCH
 +    echo "​starting deploy..."​
 +    (
 +      echo "​deploy it..."
 +      cd $TARGET/​$newrev
 +      ./build.sh importconfig
 +      ./build.sh build
 +      ./build.sh pack
 +      #...
 +    ) &> $TARGET/​$newrev/​deploy.log &
 +#  else
 +#    echo "Ref $ref received. Doing nothing: only the ${BRANCH} branch may be deployed on this server."​
 +#  fi
 +done
 +</​code>​
 +
 +die Befehle zum kompilieren ließen sich natürlich in eine separate Datei auslagern, die im Git selbst liegt...auch die Bedingung, welche Branches gebaut werden sollen...ich wollte es aber einfach halten ;)
 +
 +das wichtigste, was fehlt ist eine Warteschlange,​ falls der build-prozess noch läuft. hier kann man sich entweder über eine run-datei helfen oder man schaut, ob der langlaufende Prozess noch läuft
 +
 +  if [[ "​$(pidof make)" != ""​ ]]; then echo "build running";​ fi
 +  if [[ "​$(pidof tar)" != ""​ ]]; then echo "pack running";​ fi
 +
 +für beide Fälle müsste der build-Prozess geparkt werden
 ====== webbasierte Git-Tools ====== ====== webbasierte Git-Tools ======
 ===== GITList ===== ===== GITList =====
programming/git/start.1591004462.txt.gz · Zuletzt geändert: 2020/06/01 11:41 von frank