Jak usługa GitHub Actions automatyzuje zadania programistyczne?

Ukończone

W tym miejscu przedstawimy funkcję GitHub Actions i przepływy pracy. Poznasz typy akcji, których można użyć, i gdzie je znaleźć. Przyjrzymy się również przykładom tych typów akcji i sposobom ich dopasowania do przepływu pracy.

Usługa GitHub skraca czas od pomysłu do wdrożenia

Usługa GitHub jest przeznaczona do szybkiego tworzenia i wdrażania aplikacji przez zespoły deweloperów i inżynierów DevOps. W usłudze GitHub istnieje wiele funkcji, które to umożliwiają, ale zazwyczaj należą one do jednej z dwóch kategorii:

  • Komunikacja: Rozważ wszystkie sposoby, w jakie usługa GitHub ułatwia zespołowi deweloperów komunikowanie się z projektem tworzenia oprogramowania: przeglądy kodu w żądaniach ściągnięcia, problemy z usługą GitHub, tablice projektów, witryny typu wiki, powiadomienia itd.
  • Automatyzacja: funkcja GitHub Actions umożliwia zespołowi automatyzowanie przepływów pracy na każdym etapie procesu tworzenia oprogramowania— od integracji po dostarczanie do wdrożenia. Pozwala nawet zautomatyzować dodawanie etykiet do żądań ściągnięcia i sprawdzanie nieaktualnych problemów i żądań ściągnięcia.

W połączeniu te funkcje umożliwiły tysiącom zespołów programistycznych efektywne skrócenie czasu od ich początkowego pomysłu do wdrożenia.

Użyj automatyzacji przepływu pracy, aby skrócić czas programowania

Skupimy się na automatyzacji w tym module, więc pośmińmy chwilę, aby zrozumieć, jak zespoły mogą używać automatyzacji, aby skrócić czas potrzebny na ukończenie typowego przepływu pracy programowania i wdrażania.

Należy wziąć pod uwagę wszystkie zadania, które muszą zostać wykonane po napisaniu kodu, ale zanim będzie można niezawodnie użyć kodu do zamierzonego celu. W zależności od celów organizacji prawdopodobnie trzeba wykonać co najmniej jedno z następujących zadań:

  • Upewnij się, że kod przechodzi wszystkie testy jednostkowe
  • Przeprowadzanie kontroli jakości kodu i zgodności w celu upewnienia się, że kod źródłowy spełnia standardy organizacji
  • Sprawdź kod i jego zależności pod kątem znanych problemów z zabezpieczeniami
  • Tworzenie kodu integrującego nowe źródło z (potencjalnie) wielu współautorów
  • Upewnij się, że oprogramowanie przechodzi testy integracji
  • Wersja nowej kompilacji
  • Dostarczanie nowych plików binarnych do odpowiedniej lokalizacji systemu plików
  • Wdrażanie nowych plików binarnych na co najmniej jednym serwerze
  • Jeśli którekolwiek z tych zadań nie zostanie przekazane, zgłoś problem właściwej osobie lub zespołowi w celu rozwiązania problemu

Wyzwaniem jest niezawodne, spójne i trwałe wykonywanie tych zadań. Jest to idealne zadanie automatyzacji przepływu pracy. Jeśli korzystasz już z usługi GitHub, prawdopodobnie chcesz skonfigurować automatyzację przepływu pracy przy użyciu funkcji GitHub Actions.

Co to jest funkcja GitHub Actions?

Funkcja GitHub Actions to spakowane skrypty do automatyzowania zadań w przepływie pracy tworzenia oprogramowania w usłudze GitHub. Możesz skonfigurować funkcję GitHub Actions, aby wyzwalać złożone przepływy pracy spełniające potrzeby organizacji; za każdym razem, gdy deweloperzy sprawdzają nowy kod źródłowy w określonej gałęzi, w określonych interwałach lub ręcznie. Wynikiem jest niezawodny i zrównoważony zautomatyzowany przepływ pracy, który prowadzi do znacznego zmniejszenia czasu programowania.

Gdzie można znaleźć funkcję GitHub Actions?

Funkcja GitHub Actions to skrypty zgodne z formatem danych yml. Każde repozytorium ma kartę Akcje , która zapewnia szybki i łatwy sposób na rozpoczęcie konfigurowania pierwszego skryptu. Jeśli widzisz przepływ pracy, który może być doskonałym punktem wyjścia, po prostu wybierz przycisk Konfiguruj , aby dodać skrypt i rozpocząć edytowanie źródłowego kodu yml.

Screenshot of the *Actions tab* in GitHub Actions displaying a simple workflow and a button to set up this workflow.

Jednak poza tymi funkcjami GitHub Actions polecanymi na karcie Akcje można wykonywać następujące czynności:

  • Wyszukaj funkcję GitHub Actions w witrynie GitHub Marketplace. Witryna GitHub Marketplace umożliwia odnajdywanie i kupowanie narzędzi rozszerzających przepływ pracy.
  • Wyszukaj projekty open source. Na przykład organizacja funkcji GitHub Actions zawiera wiele popularnych repozytoriów typu open source zawierających funkcję GitHub Actions, których można użyć.
  • Napisz własne akcje GitHub Actions od podstaw. Ponadto, jeśli chcesz, możesz utworzyć je jako open source, a nawet opublikować je w witrynie GitHub Marketplace.

Korzystanie z funkcji GitHub Actions typu open source

Wiele funkcji GitHub Actions jest typu open source i jest dostępnych dla każdego, kto chce ich używać. Jednak podobnie jak w przypadku dowolnego oprogramowania typu open source należy je dokładnie sprawdzić przed użyciem ich w projekcie. Podobnie jak w przypadku zalecanych standardów społeczności z oprogramowaniem typu open source, takich jak README, kodeks postępowania, współtworzenia plików i szablonów problemów, możesz po prostu wymienić kilka — możesz postępować zgodnie z tymi zaleceniami w przypadku korzystania z funkcji GitHub Actions:

  • Przejrzyj plik akcji action.yml pod kątem danych wejściowych, wyjściowych i upewnij się, że kod robi to, co robi.
  • Sprawdź, czy akcja znajduje się w witrynie GitHub Marketplace. Jest to dobra kontrola, nawet jeśli akcja nie musi znajdować się w witrynie GitHub Marketplace, aby być prawidłowa.
  • Sprawdź, czy akcja została zweryfikowana w witrynie GitHub Marketplace. Oznacza to, że usługa GitHub zatwierdziła użycie tej akcji. Należy jednak przejrzeć go przed jego użyciem.
  • Uwzględnij wersję używanej akcji, określając identyfikator ref, sha lub tag usługi Git.

Typy akcji usługi GitHub

Istnieją trzy typy akcji usługi GitHub: akcje kontenera, akcje języka JavaScript i akcje złożone.

W przypadku akcji kontenera środowisko jest częścią kodu akcji. Te akcje można uruchamiać tylko w środowisku systemu Linux hostowym przez usługę GitHub. Akcje kontenera obsługują wiele różnych języków.

Akcje języka JavaScript nie obejmują środowiska w kodzie. Musisz określić środowisko, aby wykonać te akcje. Te akcje można uruchamiać na maszynie wirtualnej w chmurze lub lokalnie. Akcje języka JavaScript obsługują środowiska systemów Linux, macOS i Windows.

Akcje złożone umożliwiają łączenie wielu kroków przepływu pracy w ramach jednej akcji. Można na przykład użyć tej funkcji do łączenia wielu poleceń uruchamiania w akcję, a następnie mieć przepływ pracy, który wykonuje powiązane polecenia jako jeden krok przy użyciu tej akcji.

Anatomia akcji usługi GitHub

Oto przykład akcji, która wykonuje wyewidencjonowania repozytorium git. Ta akcja, akcje/checkout@v1, jest częścią kroku w przepływie pracy. Ten krok kompiluje również wyewidencjonowany kod Node.js. Omówimy przepływy pracy, zadania i kroki w następnej sekcji.

steps:
  - uses: actions/checkout@v1
  - name: npm install and build webpack
    run: |
      npm install
      npm run build

Załóżmy, że chcesz użyć akcji kontenera do uruchomienia konteneryzowanego kodu. Twoja akcja może wyglądać następująco:

name: "Hello Actions"
description: "Greet someone"
author: "octocat@github.com"

inputs:
    MY_NAME:
      description: "Who to greet"
      required: true
      default: "World"

runs:
    uses: "docker"
    image: "Dockerfile"

branding:
    icon: "mic"
    color: "purple"

Zwróć uwagę na sekcję inputs . W tym miejscu otrzymujesz wartość zmiennej o nazwie MY_NAME. Ta zmienna zostanie ustawiona w przepływie pracy, który uruchamia tę akcję.

W sekcji zwróć uwagę, że w atrybucie runs określono platformę uses Docker. W tym celu należy podać ścieżkę do pliku obrazu platformy Docker. W tym miejscu jest to plik Dockerfile. Nie znajdziemy tutaj szczegółowych informacji na temat platformy Docker, ale jeśli chcesz uzyskać więcej informacji, zapoznaj się z modułem Introduction to Docker Containers (Wprowadzenie do kontenerów platformy Docker).

Ostatnia sekcja, znakowanie, personalizuje akcję w witrynie GitHub Marketplace, jeśli zdecydujesz się ją opublikować.

Pełną listę metadanych akcji można znaleźć na stronie Składnia metadanych dla funkcji GitHub Actions.

Co to jest przepływ pracy funkcji GitHub Actions?

Przepływ pracy funkcji GitHub Actions to proces skonfigurowany w repozytorium w celu zautomatyzowania zadań cyklu życia tworzenia oprogramowania, w tym funkcji GitHub Actions. Za pomocą przepływu pracy można tworzyć, testować, pakować, zwalniać i wdrażać dowolny projekt w usłudze GitHub.

Aby utworzyć przepływ pracy, należy dodać akcje do pliku yml w .github/workflows katalogu w repozytorium GitHub.

W nadchodzącym ćwiczeniu plik przepływu pracy main.yml będzie wyglądać następująco:

name: A workflow for my Hello World file
on: push
jobs:
  build:
    name: Hello world action
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - uses: ./action-a
      with:
        MY_NAME: "Mona"

Zwróć uwagę na on: atrybut . Jest to wyzwalacz określający, kiedy ten przepływ pracy zostanie uruchomiony. W tym miejscu wyzwala przebieg po wystąpieniu zdarzenia wypychania do repozytorium. Można określić pojedyncze zdarzenia, takie jak on: push, tablica zdarzeń, takich jak on: [push, pull_request], lub mapa konfiguracji zdarzeń, która planuje przepływ pracy lub ogranicza wykonywanie przepływu pracy do określonych plików, tagów lub zmian gałęzi. Mapa może wyglądać mniej więcej tak:

on:
  # Trigger the workflow on push or pull request,
  # but only for the main branch
  push:
    branches:
      - main
  pull_request:
    branches:
      - main
  # Also trigger on page_build, as well as release created events
  page_build:
  release:
    types: # This configuration does not affect the page_build event above
      - created

Zdarzenie będzie wyzwalane dla wszystkich typów działań dla zdarzenia, chyba że określisz typ lub typy. Aby uzyskać pełną listę zdarzeń i ich typów działań, zobacz Zdarzenia wyzwalające przepływy pracy w dokumentacji usługi GitHub.

Przepływ pracy musi mieć co najmniej jedno zadanie. Zadanie to sekcja przepływu pracy skojarzona z modułem uruchamiającym. Moduł uruchamiający może być hostowany w usłudze GitHub lub hostowany samodzielnie, a zadanie może być uruchamiane na maszynie lub w kontenerze. Określisz moduł uruchamiający z atrybutem runs-on: . W tym miejscu informujesz przepływ pracy o uruchomieniu tego zadania w systemie ubuntu-latest.

Każde zadanie będzie zawierać kroki do wykonania. W naszym przykładzie krok używa akcji/checkout@v1 do wyewidencjonowania repozytorium. Co ciekawe jest wartością uses: ./action-a , czyli ścieżką do akcji kontenera, którą tworzysz w pliku action.yml . W sekcji Co to jest funkcja GitHub Actions, zapoznaliśmy się z zawartością pliku action.yml.

Ostatnia część tego pliku przepływu pracy ustawia wartość zmiennej MY_NAME dla tego przepływu pracy. Przypomnij sobie, że akcja kontenera wykonała dane wejściowe o nazwie MY_NAME.

Aby uzyskać więcej informacji na temat składni przepływu pracy, zobacz Składnia przepływu pracy dla funkcji GitHub Actions

Usługa GitHub hostowana w porównaniu z własnymi modułami uruchamiającym moduły uruchamiane

Krótko wspomnieliśmy o biegaczy jako powiązanych z zadaniem. Moduł uruchamiający to po prostu serwer z zainstalowaną aplikacją modułu uruchamiającego akcje GitHub Actions. W poprzednim przykładzie przepływu pracy był runs-on: ubuntu-latest atrybut w bloku zadań, który powiedział przepływowi pracy, że zadanie zostanie uruchomione przy użyciu modułu uruchamianego w usłudze GitHub hostowanego w ubuntu-latest środowisku.

Jeśli chodzi o moduły uruchamiającego, dostępne są dwie opcje, z których należy wybrać: moduły uruchamiane w usłudze GitHub lub własne moduły uruchamiającego. Jeśli używasz modułu uruchamiającego hostowanego w usłudze GitHub, każde zadanie jest uruchamiane w nowym wystąpieniu środowiska wirtualnego określonego przez zdefiniowany typ modułu uruchamiającego hostowany w usłudze GitHub. runs-on: {operating system-version} W przypadku własnych modułów uruchamianych należy zastosować etykietę self-hosted, jej system operacyjny i architekturę systemu. Na przykład moduł uruchamiający samodzielnie z systemem operacyjnym Linux i architekturą ARM32 wygląda następująco: runs-on: [self-hosted, linux, ARM32].

Każdy typ modułu uruchamiającego ma swoje zalety, ale moduły uruchamiane w usłudze GitHub oferują szybszy, prostszy sposób uruchamiania przepływów pracy, choć z ograniczonymi opcjami. Moduły uruchamiane samodzielnie to wysoce konfigurowalny sposób uruchamiania przepływów pracy we własnym niestandardowym środowisku lokalnym. Możesz uruchamiać własne moduły uruchamiane lokalnie lub w chmurze. Możesz również użyć modułów uruchamianych samodzielnie, aby utworzyć niestandardową konfigurację sprzętu z większą mocą obliczeniową lub pamięcią w celu uruchamiania większych zadań, instalowania oprogramowania dostępnego w sieci lokalnej i wybierania systemu operacyjnego, który nie jest oferowany przez moduły uruchamiane przez moduły uruchamiane przez usługę GitHub.

Funkcja GitHub Actions może mieć limity użycia

Funkcja GitHub Actions ma pewne limity użycia, w zależności od planu usługi GitHub i tego, czy moduł uruchamiający jest hostowany w usłudze GitHub, czy jest hostowany samodzielnie. Aby uzyskać więcej informacji na temat limitów użycia, zapoznaj się z tematem Limity użycia, rozliczenia i administracja w dokumentacji usługi GitHub.