Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Zautomatyzowany start

Taskfile

Powyższe zadania mogą być zautomatyzowane poprzez wykorzystanie programu Taskfile.

Instalacja

Instalacja Mac OS X

brew install go-task

Instalacja Windows

winget install Task.Task

Instalacja Linux/WSL

sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b ~/.local/bin

Sprawdzenie poprawności instalacji

Po instalacji programu użytkownik powinien upewnić się czy program został aby na pewno poprawnie zainstalowany. Przykładowo uruchomienie terminala i wpisanie komendy task --version powinno pokazać obecną wersję programu:

❯ task --version
3.43.3

Jeżeli program nie został odnaleziony tj. wystąpiła sytuacja poniżej:

<nazwa_powloki>: command not found: task

Oznacza to, że powłoka nie jest w stanie znaleźć programu task i należy dodać go do zmiennej środowiskowej PATH.

export PATH="./local/bin/:$PATH" >> <plik_konfiguracyjny_powloki>

Gdzie plikiem konfiguracyjnym powłoki może być:

  • ~/.zshrc
  • ~/.bashrc

Wprowadzenie zmian umożliwi komenda

Struktura pliku Taskfile.yml

Katalog główny projektu zawiera plik Taskfile.yml, który to z kolei zawiera definicje zadań jakie mogą zostać wykonane. Przyjrzyjmy się jednemu z tych zadań:

tasks:
    default:
       cmds:
           - task: run:dev

Powyższe zadanie jest zadaniem głównym tzn. uruchamia się ono po wpisaniu komendy task składa się z innego zadania run:dev, rzućmy na nie okiem.

Upewniwszy się, że jesteśmy w katalogu głównym aplikacji lub też w dowolnym katalogu 'dziecku' projektu. Spróbujmy uruchomić główne zadanie.

❯ task
Script require root access in order to append hosts to /ect/hosts
Backup is created in same directory just in case if something bad happened!
127.0.0.1 aplikacje121.local was not found in your /etc/hosts
::1 aplikacje121.local was not found in your /etc/hosts
127.0.0.1 wysylki121.local was not found in your /etc/hosts
::1 wysylki121.local was not found in your /etc/hosts
127.0.0.1 wysylki121test.local was not found in your /etc/hosts
::1 wysylki121test.local was not found in your /etc/hosts
127.0.0.1 eventyb.local was not found in your /etc/hosts
::1 eventyb.local was not found in your /etc/hosts
127.0.0.1 filesbat.local was not found in your /etc/hosts
::1 filesbat.local was not found in your /etc/hosts
127.0.0.1 rekrutacje121.local was not found in your /etc/hosts
::1 rekrutacje121.local was not found in your /etc/hosts
127.0.0.1 rozliczeniabat.local was not found in your /etc/hosts
::1 rozliczeniabat.local was not found in your /etc/hosts
.
.
.
task: [run:dev] docker compose up -d
[+] Running 12/12
 ✔ Network cursor_default                 Created                                                                                                                     0.0s
 ✔ Container cursor-web-1                 Started                                                                                                                     0.5s
 ✔ Container cursor-rozliczenia_db-1      Started                                                                                                                     0.3s
 ✔ Container cursor-files_bat_db-1        Started                                                                                                                     0.5s
 ✔ Container cursor-magazyn_db-1          Started                                                                                                                     0.5s
 ✔ Container cursor-eventy_db-1           Started                                                                                                                     0.6s
 ✔ Container cursor-rekrutacja_db-1       Started                                                                                                                     0.3s
 ✔ Container cursor-sso_db-1              Started                                                                                                                     0.3s
 ✔ Container cursor-horeca_db-1           Started                                                                                                                     0.6s
 ✔ Container cursor-mailcrab-1            Started                                                                                                                     0.6s
 ✔ Container cursor-rekrutacja_test_db-1  Started                                                                                                                     0.5s
 ✔ Container cursor-magazyn_test_db-1     Started                                                                                                                     0.3s

Zadanie wpierw uruchamia skrypt dodający fałszywe domeny na sam koniec powinien powiadomić nas o uruchomieniu komendy.

Nazwy hostów znajdują się w pliku taskfile spróbuj udać się na jedną ze stron znajdujących się w pliku taskfile.

# Taskfile.yaml
HOSTS: [
    aplikacje121.local,
    wysylki121.local,
    wysylki121test.local,
    eventyb.local,
    filesbat.local,
    rekrutacje121.local,
    rozliczeniabat.local,
    rozliczeniatest.local,
    zamowieniabat.local,
    zamowieniabattest.local,
]

Poprzez wpisanie jednego z adresów np. http://rozliczeniabat.local

Uruchamianie aplikacji w trybie deweloperskim

definicja run:dev zawiera:

  • opis zadania: Uruchamianie kontenerów dla trybu deweloperskiego
  • 2 zadania configure:hosts:dev do usuwania hostów i ich dodawania
  • komende docker compose uruchamiającą kontenery w trybie detached czyli kontenery nie będą pracować w głównej sesji powłoki (prościej mówiąc nie ujrzymy domyślnie ich logów).
# Definicja uruchamiania aplikacji w trybie deweloperskim
run:dev:
  desc: Runs containers for development
  aliases: [rd]
  cmds:
    - task: configure:hosts:dev:delete
    - task: configure:hosts:dev:add
    - docker compose up -d {{.CLI_ARGS}}

Trzy komendy uruchamiające aplikację w trybie deweloperskim:

task
task run:dev
task rd

Zatrzymywanie aplikacji w trybie deweloperskim

definicja stop:dev zawiera:

  • opis zadania: Zatrzymywanie kontenerów pracujących w trybie deweloperskim
  • zadanie configure:hosts:dev:delete do usuwania hostów
  • komende docker compose down zatrzymującą kontenery
stop:dev:
    desc: Stops containers for development if they are already running
    aliases: [sd]
    vars:
      CONTAINER: 'cursor-web-1'
    preconditions:
      - docker ps --filter "name={{.CONTAINER}}" | grep {{.CONTAINER}}
    cmds:
      - task: configure:hosts:dev:delete
      - docker compose down
# Zatrzymywanie kontenerów
task stop:dev
# Można także użyć skrótu (alias)
task sd

Przebudowywanie kontenerów

Jeżeli do pliku Dockerfile naniesiono jakieś zmiany, należy dokonać przebudowy obrazu. Aby uruchomić aplikację wraz z przebudową obrazu użyj poniższej komendy:

# Forwardowanie flag do komendy '{{.CLI_ARGS}}'
task rd -- --build
# albo
task run:dev -- --build