Jak zautomatyzowałem codzienny wkład w GitHub za pomocą GitHub Actions

May 04 2023
Wykres wkładów GitHub to podstawowa funkcja, która śledzi dzienny wkład programistów. Ta funkcja motywuje programistów do regularnego wnoszenia wkładu w projekty open source.

Wykres wkładów GitHub to podstawowa funkcja, która śledzi dzienny wkład programistów. Ta funkcja motywuje programistów do regularnego wnoszenia wkładu w projekty open source. Istnieje jednak kilka powodów, dla których programiści mogą nie być w stanie wnosić codziennych wkładów

  • Być może większość twojego kodowania dzieje się na innym hoście kontroli wersji, takim jak GitLab lub Bitbucket.
  • Być może Twoja firma korzysta z GitHub Enterprise, ale nie włączyła ujednoliconego wkładu .
  • Być może szukasz nowej pracy jako programista i martwisz się, że rekruterzy będą Cię przesądzać na podstawie wykresu niskiego wkładu.
  • A może masz inne powody .

Utwórz folder w swoim repozytorium GitHub, .github/workfloww którym utworzymy zadanie dla przepływu pracyjob.yaml

name: Daily Contributions

on:
  schedule:
    - cron: '0 0 * * 1-5'

jobs:
  make-contribution:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
        with:
          # Checkout with full commit history
          fetch-depth: 0
      - name: Make daily contribution
        run: |
          # Replace this command with your own command or script that makes the changes
          echo "Making daily contribution"
          echo "$(date)" >> README.md
      - name: Commit changes
        uses: EndBug/add-and-commit@v7
        with:
          author_name: "GitHub Actions"
          author_email: "[email protected]"
          message: "Daily contribution"
          # Set the files to commit - replace this with your own file paths
          add: "README.md"
      - name: Push changes
        uses: ad-m/github-push-action@master
        with:
          branch: daily-contribution
          # Set the Git credentials - replace this with your own secrets
          github_token: ${{ secrets.GITHUB_TOKEN }}
      - name: Open pull request
        uses: peter-evans/create-pull-request@v3
        with:
          title: "Daily Contribution"
          commit-message: "Daily contribution"
          branch: daily-contribution
          base: main
          # Set the pull request body - replace this with your own content
          body: "This pull request was created automatically by a GitHub Actions workflow to make a daily contribution."
          # Set the Git credentials - replace this with your own secrets
          token: ${{ secrets.GITHUB_TOKEN }}

Pierwszy wiersz fragmentu kodu to nazwa przepływu pracy GitHub Actions. W tym przypadku przepływ pracy nosi nazwę „Dzienny wkład”. Następna sekcja określa, kiedy przepływ pracy powinien zostać uruchomiony. W tym przypadku jest ustawiony na uruchamianie zgodnie z harmonogramem przy użyciu składni cron. Składnia crona umożliwia skonfigurowanie przepływu pracy w określonych porach dnia lub tygodnia. Ustawiłem mój na działanie od poniedziałku do piątku o północy UTC.

W sekcji „prace” zdefiniowano tylko jedną pracę, zwaną „make-contribution”. To zadanie jest uruchamiane na komputerze z systemem Ubuntu z zainstalowaną najnowszą wersją systemu Ubuntu.

Sekcja „kroki” zawiera zadania, które zadanie wykona. Pierwszym krokiem jest pobranie kodu z repozytorium GitHub za pomocą akcjiactions/ checkout@v2 . Ta akcja pobiera kod z repozytorium i konfiguruje środowisko dla kolejnych kroków.

Drugim krokiem jest codzienna wpłata. Tutaj możesz dodać własne polecenie lub skrypt, aby wprowadzić zmiany w kodzie. W takim przypadku skrypt po prostu dodaje bieżącą datę do pliku README.md.

Trzecim krokiem jest zatwierdzenie zmian w repozytorium. Ten krok wykorzystuje akcję EndBug/ add-and-commit@v7 w celu zatwierdzenia zmian. Nazwa i adres e-mail autora są ustawione na „GitHub Actions” i „ [email protected] ”, które ustawiłem odpowiednio na moją nazwę i adres e-mail GitHub.

Pliki do zatwierdzenia są określane za pomocą parametru „add”. W tym przypadku jest ustawiony na „README.md”.

Czwartym krokiem jest przekazanie zmian do repozytorium za pomocą akcji ad-m/ github-push-action@master . Nazwa oddziału jest ustawiona na „codzienny wkład”, a poświadczenia Git są ustawiane za pomocą secrets.GITHUB_TOKENzmiennej środowiskowej.

Na koniec piątym krokiem jest otwarcie żądania ściągnięcia za pomocą akcji peter-evans/ create-pull-request@v3 . Tytuł i komunikat o zatwierdzeniu są ustawione na „Codzienny wkład”, a treść żądania ściągnięcia jest ustawiona na „To żądanie ściągnięcia zostało utworzone automatycznie przez przepływ pracy GitHub Actions, aby wnieść codzienny wkład”. Parametry oddziału i podstawowe są ustawione odpowiednio na „dzienny - wkład” i „główny”. Poświadczenia Git są ponownie ustawiane przy użyciu secrets.GITHUB_TOKENzmiennej środowiskowej.

Jeśli wystąpią błędy 403, upewnij się, że token ma uprawnienia do zapisu w contentszakresie .

Możesz alternatywnie ustawić to jako wartość domyślną na poziomie repo, w Settingsramach Actions:

Podsumowując, używając GitHub Actions, możemy zautomatyzować proces codziennego dodawania wkładów do naszego repozytorium, co może pomóc nam w aktualizowaniu wykresu wkładów. Dzięki dostarczonemu plikowi przepływu pracy możemy łatwo dostosować proces do naszych potrzeb, modyfikując polecenia lub skrypt, który wprowadza zmiany.