Uruchamianie Linkscannera na Gitlabie to kolejny wpis w którym chcemy Wam pokazać możliwości różnych narzędzi i wykorzystania ich w codziennej pracy. Jest to kolejny z wpisów w którym przedstawiamy Wam możliwość integracji kolejnego narzędzia z Gitlabem.
Czym jest Linkscanner
Linkscanner to biblioteka dostępna na platformie npmjs, która pozwala na skanowanie linków i sprawdzanie ich poprawności. Dzięki temu narzędziu programiści mogą w prosty i efektywny sposób zapewnić, że ich aplikacje lub strony internetowe są wolne od uszkodzonych, niebezpiecznych lub potencjalnie złośliwych linków. Linkscanner oferuje wiele funkcji, takich jak automatyczne wykrywanie i usuwanie niebezpiecznych linków, monitorowanie zmian w linkach oraz generowanie raportów zawierających wyniki skanowania. W tym artykule przedstawimy, jak działa Linkscanner, jak go zainstalować i jakie funkcje oferuje. Przedstawimy również, jak można zintegrować Linkscanner z innymi narzędziami, aby zwiększyć bezpieczeństwo aplikacji i stron internetowych.
Pierwsze uruchomienie
Jeżeli chcesz uruchomić pierwsze skany wystarczy prosta komenda
linkscanner -r https://www.example-page.pl/
Możecie też rozbudować i np. wyeliminować niektóre kolumny które są pokazywane:
linkscanner https://www.example-page.pl/ | awk '{ print $3,$1 }'
Tworzenie gitlab-ci.yml
Chcąc uruchamiać testy z poziomu gitlaba nasze testy będą opierać się o stworzenie pliku gitlab-ci.yml, który będzie naszym centrum dowodzenia i zarządzania. Do uruchomienia naszych testów konieczne będzie:
- runner na gitlabie, na podstawie którego testy będą uruchamiane (pytaj Devopsów o tag)
- obraz dockerowy node:14
I. Najprostsza wersja
W naszym projekcie testowym tworzymy plik gitlab-ci.yml a następnie uzupełniamy go w najprostszy sposób:
image: node:14
variables:
URL: https://www.example-url.com/
scan_links:
script:
- npm install linkscanner
- echo -e "\033[31mStarting scan...\033[0m"
- echo " "
- npx linkscanner -v --timeout 25000 $URL | awk '$1 >= 400 {printf "%-5s %-60s %-5s\n", $1, $3, $5}' | tee report.json
- if grep -E '4[0-9][0-9]|5[0-9][0-9]' report.json; then exit 1; fi
artifacts:
paths:
- report.json
II. Tworzenie stage
W ramach naszych testów może zachodzić konieczność tworzenia faz egzekucji testów.
stages:
- test
- test2
III. Raporty i artefakty
Jeżeli chcesz możesz generować i potem zapisywać swój raport. Dzięki temu będziesz mógł analizować dokładniej wyniki, lub przedstawiać je innym.
artifacts:
paths:
- report.json
Ważne jest, że samo narzędzie nie posiada możliwości generowania raportów, zatem my przenosimy swoje informacje do pliku report.json.
- npx linkscanner -v --timeout 25000 $URL | awk '$1 >= 400 {printf "%-5s %-60s %-5s\n", $1, $3, $5}' | tee report.json
- if grep -E '4[0-9][0-9]|5[0-9][0-9]' report.json; then exit 1; fi
Schedule
Jeżeli chcemy tak przygotowane testy w ramach naszego repozytorium, możemy uruchamiać cyklicznie. Z pomocą przychodzi nam Gitlab i zakładka CI/CD – Schedules:
Rozwiązanie to jest korzystne, gdyż dzięki niemu możemy wykorzystywać możliwości narzędzia bez naszego ręcznego uruchamiania.
Command line do wykorzystania:
Scans a web page for broken links
Options:
--help Show help [boolean]
--version Show version number [boolean]
--followRedirects, -L Follow 301 & 302 redirects to their destination and
report that result [boolean]
--debug, -d Print additional debug logging to stderr [boolean]
--verbose, -v Print more information in the output results
(formatter dependent) [boolean]
--recursive, -r Recursively crawl all links on the same host [boolean]
--exclude-external, -e Do not test links that point to other hosts [boolean]
--formatter, -f Choose the output formatter
[choices: "table", "console"]
--include, -i CSS Selector for which HTML elements that should be
scanned
[array] [choices: "a", "link", "img", "script", "form", "iframe", "all"]
Pełna informacja znajduje się tutaj.
Podsumowanie
Uruchamianie Linkscannera na Gitlabie to kolejny wpis w ramach którego prezentujemy Wam możliwości integracji narzędzi z Gitlabem. Ponadto wpis ten tworzony jest w ramach szerzenia wiedzy z zakresu testów. Zapraszamy na inne wpisy związane z narzędziami.