Uruchamianie Linkscannera na Gitlabie

Inne narzędzia

Loading

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
 
1. Pierwszy element to nazwa testu
2. image – nazwy dockerowych obrazów z których skorzystamy
3. skrypt – polecenie którym uruchamiamy testy (sprawdzenie wersji oraz polecenie do uruchomienia)
 
 
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