Projekt trwa cztery tygodnie od 18.11 do 16.12. W czasie W3 (16.12) ma miejsce sprawdzanie i ocenianie zgodnie ze szczegółami opisanymi w treści.
Kod źródłowy do oceny powinien zostać umieszczony na serwerze podobnie jak na laboratoriach - ścieżka do projektu to p1pl. Należy mieć na uwadze pewne ograniczenia techniczne:
- Niestety serwer jest włączany tylko dwa razy w tygodniu - w poniedziałki w godzinach 20:15-23:00 oraz we wtorki 14:15-17:00. Tylko wtedy jest możliwe spushowanie swojego rozwiązania
- Serwer jest dostępny tylko z sieci wydziałowej. Żeby wypchnąć swoje rozwiązanie spoza niej można skorzystać z dwóch możliwości:
- przekopiować je na serwer ssh (scp na ssh.mini.pw.edu.pl) i stamtąd wykonać push jak na laboratorium
- użyć tunelowania ssh (uwaga - trzeba wtedy też zmienić/dodać
remotew repozytorium)
Serwer wykonuje wstępne sprawdzenie, podobnie jak na laboratorium, a w przypadku błędu może odrzucić rozwiązanie. Jednak, ponieważ projekt wymaga napisania większej ilości kodu niż na zwyczajnym laboratorium, zasady są nieco luźniejsze. Dopuszczalne (i rekomendowane) jest tworzenie i modyfikacja nowych plików .c i .h. Nie można jedynie modyfikować startowego Makefile oraz .clang-format. Jak zawsze pliki źródłowe powinny być sformatowane a program kompilować się bez błędów i ostrzeżeń.
Treść zadania znajduje się tutaj
W razie wątpliwości zapraszamy do zadawania pytań po zajęciach/drogą mailową.
Użycie tunelu ssh #
Tunel ssh pozwala połączyć się z serwerem, do którego nie mamy bezpośredniego dostępu, za pośrednictwem serwera dostępowego. W naszym przypadku serwer przedmiotu (vl01) jest w sieci lokalnej wydziału - nie ma do niego dostępu z zewnątrz. Jednak możemy z zewnątrz zalogować się na wydziałowy serwer ssh (ssh.mini.pw.edu.pl), który z kolei ma dostęp do sieci lokalnej.
Aby móc wypchnąć zmiany na serwer spoza wydziału należy wykonać następujące kroki:
Upewnić się, że mamy poprawnie skonfigurowane klucze ssh - tak jak na laboratoriach, trzeba je ściągnąć z LeONa
Potwierdzić, że możemy się zalogować na serwer ssh -
ssh <login>@ssh.mini.pw.edu.pl(używamy loginu i hasła wydziałowego, tj. takiego jak do komputerów w laboratorium)Oczywiście połączenie z serwerem
vl01jest możliwe tylko, gdy jest on włączony - kroki opisane niżej należy więc wykonywać w określonych porach opisanych wyżej.Tworzymy tunel:
ssh -L 22222:vl01:22 <login>@ssh.mini.pw.edu.pl
To polecenie sprawi, że ssh będzie kierować cały ruch sieciowy z portu 22222 na naszym komputerze przez wydziałowy serwer ssh na serwer vl01 port 22 - czyli port ssh. Nie zamykaj tego terminala ani programu ssh - to on realizuje przekierowanie. Kolejne kroki wykonaj w nowym oknie terminala.
Żeby zweryfikować, że mamy połączenie i dobrze skonfigurowane klucz możemy spróbować zalogować się na
vl01poprzez poleceniessh -p 22222 gitolite@localhost. Jeżeli wszystko jest poprawne powinniśmy zobaczyć krótki komunikat o poprawnym logowaniu. Powinno być też możliwe pobranie repozytorium używając nowego adresugit clone ssh://gitolite@localhost:22222/p1pl/<imię_nazwisko>Teraz musimy skonfigurować gita w naszym repozytorium, żeby łączył się przez nowy tunel. Ten krok nie jest niezbędny jeżeli właśnie pobrałeś repo z nowego adresu (przez
git clonej.w. i chcesz go używać). Będąc w repozytorium użyj polecenia:
git config url."ssh://gitolite@localhost:22222".insteadOf "ssh://gitolite@vl01"
W tym momencie polecenie
git remote -v
powinno zwrócić adres zaczynający się od ssh://gitolite@localhost:22222 a wszystkie polecenia gita w rodzaju fetch, push czy pull powinny działać normalnie.
Kopiowanie na serwer ssh #
Ta metoda nie jest tak elegancka jak tunel, ale jest bardzo prosta:
- Skopiuj swoje rozwiązanie na serwer ssh:
scp -r <katalog repozytorium> <login>@ssh.mini.pw.edu.pl:
- Zaloguj się na serwer ssh:
ssh <login>@ssh.mini.pw.edu.pl
- Na serwerze ssh wejdź do repozytorium i wykonaj
pushjak zwykle.