Wie kann man einschränken, wer in einem Github-Repo zum Master zusammengeführt werden kann?

Lesezeit: 4 Minuten

Ich habe auf meinem Github-Repo eine Branch-Schutzregel für den Master-Branch eingerichtet, die Folgendes überprüft (aktiviert):

  • Fordern Sie vor dem Zusammenführen Pull-Request-Überprüfungen an
  • Erforderliche Gutachter: 1
  • Administratoren einbeziehen
  • Schränken Sie ein, wer auf passende Branches pushen kann

Ich bin dann in einer Situation, in der mindestens einer aus dem Team einen PR genehmigen muss, bevor jemand seinen eigenen Dev-Zweig mit dem Master zusammenführen kann.

Abgesehen von dem oben Gesagten möchte ich auch nur einige Personen auswählen, die die Erlaubnis haben, die überprüften und genehmigten PR zusammenzuführen. Nicht jeder hat Zugriff auf das Repo.

Kann man das einstellen?

  • docs.github.com/en/github/administration-a-repository/… Was fehlt in der Doku?

    – Ôrel

    6. Juli 2020 um 15:53 ​​Uhr

  • Ich habe das gelesen und es ist nicht so explizit … Vielleicht bedeutet “Einschränken, wer auf übereinstimmende Zweige pushen kann” auch einschränken, wer mit übereinstimmendem Zweig zusammenführen kann? Und wenn ich diese Leute aktiviere, können sie ohne PR direkt zum Master pushen?

    – Koalak

    6. Juli 2020 um 16:01 Uhr

  • docs.github.com/en/github/administration-a-repository/… um einen minimalen Validator hinzuzufügen und Pull-Request-Überprüfungen vor dem Zusammenführen erforderlich festzulegen.

    – Ôrel

    6. Juli 2020 um 16:04 Uhr

Nein, GitHub lässt Sie nicht einschränken, wer eine Zusammenführung durchführen kann. Wenn Sie jedoch verlangen möchten, dass eine bestimmte Gruppe von Personen einen PR vor der Zusammenführung genehmigt, verwenden Sie die CODEOWNERS Datei und erfordern eine Genehmigung eines Codebesitzers, bevor sie in den Zweigschutzeinstellungen zusammengeführt werden.

Wenn Sie beispielsweise möchten, dass alle Änderungen vom Kernteam überprüft werden, können Sie dies in Ihrer verwenden CODEOWNERS Datei:

*  @my-org/core

  • aber dies führt dazu, dass jeder neue Zweig, der danach erstellt wird, eine Überprüfung vom Codebesitzer anfordert, obwohl der Basiszweig nicht der Master ist

    – Teju Amirthi

    23. März 2022 um 17:10 Uhr

Benutzeravatar von irous
ärgerlich

Ich habe auch die Anforderung wie Sie, dass nur bestimmte Personen (nicht alle Mitarbeiter) Änderungen am Hauptzweig genehmigen dürfen. Und ich tat wie folgt für Github Free public repository:

  • Schreib ein Github Actions Datei, die den Namen der Person überprüft, die sie ausführt. Wenn dies der Name eines mächtigen Kollaborateurs ist, werden die Aktionen erfolgreich sein.

name: actions_on_main_branch
on: 
  pull_request_target:
    types:
      - opened
      - synchronize
      - reopened
    branches:    
      - 'main'

jobs:
  job1:
    name: check_adminA
    runs-on: ubuntu-latest
    env:
      NAME_ADMIN: adminA
    steps:
      - name: st1
        if: ${{ github.actor != env.NAME_ADMIN }}
        run: exit 1
      - name: st2
        if: ${{ github.actor == env.NAME_ADMIN }}
        run: echo "ok"

  • Fügen Sie in den Repo-Einstellungen eine Regel hinzu, um den Hauptzweig zu schützen. Wählen Sie in dieser Regel aus 'Require status checks to pass before merging' und auswählen jobs die Sie zuvor in der Github-Aktionsdatei angegeben haben. (Wenn Jobs nicht angezeigt werden, versuchen Sie, eine Pull-Anforderung zu erstellen, die diese Github-Aktionen auslöst, danach werden Jobs in der Suchleiste gefunden) (Sie können auch auswählen 'Include administrators')

    Geben Sie hier die Bildbeschreibung ein

Auf diese Weise müssen Änderungen am „Hauptzweig“ eine Pull-Anforderung durchlaufen, und diese Überprüfungen werden ausgeführt und schlagen fehl und verhindern eine Zusammenführung. Bis die mächtigen Kollaborateure (adminA, adminB) zu dieser Pull-Anforderung gehen und sie erneut ausführen, sind diese Prüfungen erfolgreich und ermöglichen das Zusammenführen.
(Der pull_request_target Ereignis macht Github-actions im Kontext des Basiszweigs anstelle des Merging-Zweigs ausgeführt werden. Sie müssen sich also keine Sorgen machen, dass die github-actions-Datei so bearbeitet wird, dass sie leicht von außen weitergegeben werden kann.)

Ich erinnere mich, dass sich mindestens die Hälfte dieser Funktionen in den Einstellungen von GitHub befinden. In Ihrem Fall sollten nur genehmigende Personen als “Mitarbeiter” hinzugefügt werden, da dies möglich ist push. Andere Benutzer müssen a öffnen pull request irgendeine Änderung vorzunehmen.

Beim Zusammenführen von Pull-Anforderungen wird die Zweigschutzregel des Zielzweigs berücksichtigt. Fügen Sie also die Personen hinzu, die in die Schutzregel aufgenommen werden dürfen, und Sie können loslegen.Geben Sie hier die Bildbeschreibung ein

Benutzeravatar von Luigi B
Luigi B

Es ist möglich durch ‘Branch Protection Rules’:

Zweigschutzregeln Abschnitt

Sie müssen den Zweig auswählen, den Sie schützen möchten, und die Personen auswählen, die in dieser Option zusammengeführt werden dürfen:

Abschnitt zum Hinzufügen von Personen, die Pull-Requests genehmigen können

  • Sie können in Ihrem Screenshot deutlich sehen, dass diese Funktion steuern soll, wer zu übereinstimmenden Zweigen pushen kann, und nichts damit zu tun hat, zu steuern, wer zusammenführen kann.

    – Sam

    16. November 2022 um 21:42 Uhr

Benutzeravatar von Pensec
Pensec

@irous Ich bin Ihrer Antwort gefolgt und es funktioniert für einen einzelnen Benutzer, aber wenn Sie versuchen, für mehr als einen Benutzer anzugeben, müssen die beiden angegebenen Mitarbeiter vor einer PR-Zusammenführung bestehen. Unten ist das hinzugefügte Skript:

  job1:
name: check_adminA
runs-on: ubuntu-latest
env:
  NAME_ADMIN1: pracin
steps:
  - name: st1
    if: ${{ github.actor != env.NAME_ADMIN1 }}
    run: exit 1
  - name: st2
    if: ${{ github.actor == env.NAME_ADMIN1 }}
    run: echo "ok"
job2:
name: check_adminB
runs-on: ubuntu-latest
env:
  NAME_ADMIN2: stephus
steps:
  - name: st1
    if: ${{ github.actor != env.NAME_ADMIN2 }}
    run: exit 1
  - name: st2
    if: ${{ github.actor == env.NAME_ADMIN2 }}
    run: echo "ok"

  • Sie können in Ihrem Screenshot deutlich sehen, dass diese Funktion steuern soll, wer zu übereinstimmenden Zweigen pushen kann, und nichts damit zu tun hat, zu steuern, wer zusammenführen kann.

    – Sam

    16. November 2022 um 21:42 Uhr

1445800cookie-checkWie kann man einschränken, wer in einem Github-Repo zum Master zusammengeführt werden kann?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy