Git-ftp

Iš Žinynas.
Jump to navigation Jump to search

Straipsnis skirtas git-ftp irankio panaudojimui production aplinkose. Irankis skirtas deti naujausias ar tam tikras git revizijas i nurodyta ftp

Idiegiam[keisti]

apt-get install python-setuptools 
git clone https://github.com/ezyang/git-ftp.git
cd git-ftp
make&&make install

Paruosiam repozitoriu[keisti]

git clone https://repozitoriaus.url.lt/repozitorius.git 
cd repozitorius
mkdir .git
nano .git/ftpdata

Sudedam ftp prisijungimo informacija

[master]
username=ftpuser
password=ftppass 
hostname=hostname.lt
remotepath=/public_html
ssl=no

Dabar galima daryti upload i serveri

git-ftp[keisti]

git-ftp # pirma karta suuploadina visus failus, antra karta tik failu pakeitimus
git-ftp -f # bet kokiu atveju paleidziamas totalus failu uploadas
git-ftp -r revision_nr # sudedamas tiktai nurodytas revision numeris

Pagalbinis scriptukas[keisti]

Jeigu scriptui nepateiktas revisionas tuomet jis deda paskutiniojo pakeitimus.

 #!/bin/sh
 export GIT_SSL_NO_VERIFY=1
 data=`date`
 # visada buna pirmas kartas
 #git clone https://repozitoriaushostas.lt/repozitorius.git
 # vaziaujam toliau
 echo "Atnaujinimo da: $data"
 git pull https://repozitoriaushostas.lt/repozitorius.git
 # pries tai pasiredaguojam .git/ftpdata current repozitoriaus directorijoje
 if [ "$1" != "" ]; then
 echo "Nustatom pagal revisiona: $1"
 git-ftp -r "$1"
 else 
 echo "Nustatom naujausia revisiona"
 git-ftp -f
 fi

Pagalbininkas scriptas v2[keisti]

Tai scriptas kuris leis pasirinkti ftp serveri, toliau paruos config faila ftp-git'ui, kad galetume daryti git-ftp commitus. Pries tai tiesiog reiktu pasiruosti ftp sarasa ~/.git-ftpadr. Sarasas atrodytu mazdaug taip:

hostas1::username::pass::/dir 
hostas2::username2::pass2::/dir2
hostas3::username3::pass3::/dir3

Tuomet sudeti pati scripta i /usr/local/bin/git-up ir padaryti ji paleidziamuoju chmod +x /usr/local/bin/git-up. Scripta reiktu leisti is repozitoriaus direktorijos kur norime sukurti .git/ftpdata faila. Pats /usr/local/bin/git-up scriptas:

#!/usr/bin/perl
# git-up uploadas pagal jau paruostus sablonus is failo ~/.git-ftpadr paruosia git-ftp prisijungimo duomenis
# scripta reiktu leisti is repozitoriaus direktorijos, kur turetu egzistuoti .git/ftpdata failas
# v1.2 - su spalvomis :-)
use strict;
use warnings;
my $filename = glob('~/.git-ftpadr');
my $eilute = 1;
if (open(my $fh, '<:encoding(UTF-8)', $filename)) {
printf "\e[31mGalimi serveriu pasirinkimai: \e[0m\n";
  while (my $row = <$fh>) {
    chomp $row;
    my ($host, $user, $pass) = split("::",$row);
    printf "\e[34m[$eilute] \e[35m- \e[1;33mHost: $host, User: $user\e[0m\n";
    $eilute++;
  }
    printf "\e[37mKuri eilute: \e[0m";
    my $input = <STDIN>;
    open my $fh, '<', $filename or die "\e[31mNegalima atidaryti failo '$filename' $!\e[0m";
    my $line;
    while( <$fh> ) {
    if( $. == $input ) {
        $line = $_;
        last;
        }
    }
    my ($host, $user, $pass, $dir) = split("::",$line);
    printf "\e[30mJusu pasirinkimas: $host, $user\e[0m\n";
open (my $fa, ">", ".git/ftpdata");
my $exclaim = $!;
if (tell $fa ){
die "\e[31mNeimanoma atidaryti failo - $exclaim\e[0m";
}
chomp($dir);
print $fa "[master]\nusername=$user\npassword=$pass\nhostname=$host\nremotepath=$dir\nssl=no\n";
close($fa);
    printf "\e[34mDabar drasiai galite leisti git-ftp\e[0m\n";
} else {
  warn "\e[31mNegalima atidaryti failo '$filename' $!\e[0m";
}

Patobulintas fetch scriptukas dirbti su siuo nauju navarotu. Jeigu paduosime parametra 1 duos uzklausa su ftp sarasu

#!/bin/sh
export GIT_SSL_NO_VERIFY=1
data=`date`
# visada buna pirmas kartas
#git clone https://git_repozitorius.lt/repozitorius.git
# vaziaujam toliau
echo "Atnaujinimo da: $data"
git pull https://git_repozitorius.lt/repozitorius.git
# pries tai pasiredaguojam .git/ftpdata current repozitoriaus directorijoje
if [ "$2" != "" ] || [ "$1" -eq "1" ]; then
git-up
fi
if [ "$1" != "" ] && [ "$1" -ne "1" ]; then
echo "Nustatom pagal revisiona: $1"
git-ftp -r "$1"
else 
echo "Nustatom naujausia revisiona"
git-ftp -f
fi