Każda osoba, której praca na co dzień związana jest nowoczesnymi technologiami zdaje sobie świetnie sprawę, jak ważne jest dbanie o szeroko rozumiane bezpieczeństwo systemów IT. Jednym z elementów dbania o to bezpieczeństwo jest pilnowanie, aby wykorzystywane oprogramowanie zawsze posiadało zainstalowany najnowszy pakiet poprawek.
W przypadku aplikacji JSowych, które bardzo często wspierane są przez wiele zewnętrznych skryptów i bibliotek dociąganych za pomocą managera paczek, kluczowym jest zadbanie o aktualizacje tych zależności.
Poniżej znajduje się Github workflow, który w cron’ie raz na określony czas sprawdza aktualność zależności znajdujących się w pliku package.json i na podstawie podanej konfiguracji tworzy Pull Request z aktualizacją. Workflow ten wykorzystuje zewnętrzne narzędzie npm-check-updates.
name: Package updater
on:
schedule:
- cron: '0 4 * * 0'
jobs:
autoupdate:
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v2
- name: Install lib
run: |
mv package.json package.tmp
rm package-lock.json
npm install npm-check-updates@12.1.0 --no-package-lock --no-save
mv package.tmp package.json
- name: Run update script
run: |
npx ncu --target minor --timeout 3000000 -u
npm install --package-lock-only
- name: Create Pull Request
uses: peter-evans/create-pull-request@v3
with:
token: ${{ secrets.PERSONAL_ACCESS_TOKEN_AUTOUPDATE }}
commit-message: AutoUpdate NPM dependencies
committer: GitHub <noreply@github.com>
author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com>
signoff: false
branch: autoupdate-dependencies
delete-branch: true
title: 'AutoUpdate NPM dependencies'
body: AutoUpdate NPM dependencies
Workflow jest uruchamiany przez cron o godzinie czwartej rano pierwszego dnia tygodnia.
Job działa na ubuntu-latest, wykonując kolejno:
- Checkout Repo – pobranie plików z gałęzi master aby były dostępne dla kolejnych kroków.
- Install lib – instalacja biblioteki npm-check-updates.
- Run update script – uruchomienie narzędzia sprawdzającego aktualność zależności, działającego na podstawie podanego targetu: latest, minor, patch (tutaj więcej szczegółów).
- Create Pull Request – tworzy Pull Request jeżeli są jakieś zmiany.