summaryrefslogtreecommitdiffstats
path: root/.github
diff options
context:
space:
mode:
Diffstat (limited to '.github')
-rw-r--r--.github/ISSUE_TEMPLATE/bug_report.md97
-rw-r--r--.github/PULL_REQUEST_TEMPLATE/pr.md8
-rw-r--r--.github/commitlint.config.js46
-rw-r--r--.github/workflows/base-branch-label.yml20
-rw-r--r--.github/workflows/behind-base.yml28
-rw-r--r--.github/workflows/commitlint.yml30
-rw-r--r--.github/workflows/conflicts.yml22
-rw-r--r--.github/workflows/docker-daily-master.yml53
-rw-r--r--.github/workflows/freeze.yml17
-rw-r--r--.github/workflows/mergifyio_backport.yml22
-rw-r--r--.github/workflows/size-label.yml26
-rw-r--r--.github/workflows/stale.yml29
12 files changed, 398 insertions, 0 deletions
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000..895e8ad
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,97 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: triage
+assignees: ''
+
+---
+
+<!--
+
+*** ATTENTION ***
+
+YOU MUST READ THIS TO HAVE YOUR ISSUE ADDRESSED
+
+PLEASE READ AND FILL OUT THIS TEMPLATE
+
+NEGLECTING TO PROVIDE INFORMATION REQUESTED HERE WILL RESULT IN
+SIGNIFICANT DELAYS ADDRESSING YOUR ISSUE
+
+ALWAYS PROVIDE:
+- FRR VERSION
+- OPERATING SYSTEM VERSION
+- KERNEL VERSION
+
+FAILURE TO PROVIDE THIS MAY RESULT IN YOUR ISSUE BEING IGNORED
+
+FOLLOW THESE GUIDELINES:
+
+- When reporting a crash, provide a backtrace
+- When pasting configs, logs, shell output, backtraces, and other large chunks
+ of text, surround this text with triple backtics
+
+ ```
+ like this
+ ```
+
+- Include the FRR version; if you built from Git, please provide the commit
+ hash
+- Write your issue in English
+
+-->
+
+---------------
+
+**Describe the bug**
+<!--
+A clear and concise description of what the bug is.
+
+Put "x" in "[ ]" if you already tried following:
+-->
+
+- [ ] Did you check if this is a duplicate issue?
+- [ ] Did you test it on the latest FRRouting/frr master branch?
+
+
+**To Reproduce**
+<!--
+Describe the steps to reproduce the behavior.
+Be as descriptive as possible.
+
+For example:
+
+1. Go to '...'
+2. Click on '....'
+3. Scroll down to '....'
+4. See error
+-->
+
+**Expected behavior**
+<!--
+Write here a clear and concise description of what you expected to happen when
+using the reproduction steps you provided above
+-->
+
+**Screenshots**
+<!--
+If applicable, add screenshots to help explain your problem.
+-->
+
+**Versions**
+<!--
+Include your operating system type and version here
+
+FAILURE TO PROVIDE THIS MAY RESULT IN YOUR ISSUE BEING IGNORED
+-->
+<!-- e.g. Fedora 24, Debian 10] -->
+ - OS Version:
+<!-- [e.g. Linux 5.4, OpenBSD 6.6] -->
+ - Kernel:
+<!-- e.g. 6.0, 7.4 -->
+ - FRR Version:
+
+**Additional context**
+<!--
+Add any other context about the problem here.
+-->
diff --git a/.github/PULL_REQUEST_TEMPLATE/pr.md b/.github/PULL_REQUEST_TEMPLATE/pr.md
new file mode 100644
index 0000000..9f44f71
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE/pr.md
@@ -0,0 +1,8 @@
+### Summary
+[fill here]
+
+### Related Issue
+[fill here if applicable]
+
+### Components
+[bgpd, build, doc, ripd, ospfd, eigrpd, isisd, etc. etc.]
diff --git a/.github/commitlint.config.js b/.github/commitlint.config.js
new file mode 100644
index 0000000..2b420b6
--- /dev/null
+++ b/.github/commitlint.config.js
@@ -0,0 +1,46 @@
+module.exports = {
+ rules: {
+ 'header-max-length': [2, 'always', 72],
+ 'type-case': [2, 'always', 'lower-case'],
+ 'type-empty': [2, 'never'],
+ 'type-enum': [
+ 2,
+ 'always',
+ [
+ 'babeld',
+ 'bfdd',
+ 'bgpd',
+ 'build',
+ 'doc',
+ 'docker',
+ 'eigrpd',
+ 'fpm',
+ 'isisd',
+ 'ldpd',
+ 'lib',
+ 'mgmtd',
+ 'multi',
+ 'nhrpd',
+ 'ospf6d',
+ 'ospfd',
+ 'pathd',
+ 'pbrd',
+ 'pimd',
+ 'pim6d',
+ 'ripd',
+ 'ripngd',
+ 'sharpd',
+ 'staticd',
+ 'tests',
+ 'tools',
+ 'vtysh',
+ 'vrrpd',
+ 'yang',
+ 'zebra',
+ 'all',
+ ],
+ ],
+ 'subject-empty': [2, 'never'],
+ 'subject-full-stop': [2, 'never', '.'],
+ },
+};
diff --git a/.github/workflows/base-branch-label.yml b/.github/workflows/base-branch-label.yml
new file mode 100644
index 0000000..5c5d829
--- /dev/null
+++ b/.github/workflows/base-branch-label.yml
@@ -0,0 +1,20 @@
+name: Add base branch label
+
+on:
+ pull_request_target:
+ types:
+ - opened
+ - reopened
+
+jobs:
+ label:
+ if: github.repository == 'frrouting/frr'
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ pull-requests: write
+ steps:
+ - uses: actions-ecosystem/action-add-labels@v1
+ with:
+ labels: |
+ ${{ github.event.pull_request.base.ref }}
diff --git a/.github/workflows/behind-base.yml b/.github/workflows/behind-base.yml
new file mode 100644
index 0000000..16b6434
--- /dev/null
+++ b/.github/workflows/behind-base.yml
@@ -0,0 +1,28 @@
+name: Add rebase label if the branch is > 50 commits behind
+
+on:
+ pull_request_target:
+ types: [synchronize, opened, reopened, labeled, unlabeled]
+
+jobs:
+ behind:
+ if: github.repository == 'frrouting/frr'
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ pull-requests: write
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+ with:
+ ref: ${{ github.event.pull_request.head.sha }}
+ fetch-depth: 0
+ - name: Set custom variables
+ id: vars
+ run: |
+ echo "behind_by=$(git log --oneline origin/${{ github.base_ref }} ^${{ github.event.pull_request.head.sha }} | wc -l)" >> $GITHUB_OUTPUT
+ - name: Add rebase label if needed
+ if: ${{ steps.vars.outputs.behind_by > 50 }}
+ uses: actions-ecosystem/action-add-labels@v1
+ with:
+ labels: rebase
diff --git a/.github/workflows/commitlint.yml b/.github/workflows/commitlint.yml
new file mode 100644
index 0000000..96cd118
--- /dev/null
+++ b/.github/workflows/commitlint.yml
@@ -0,0 +1,30 @@
+name: commitlint
+
+on:
+ pull_request:
+ types:
+ - opened
+ - reopened
+ - synchronize
+ - labeled
+ - unlabeled
+
+jobs:
+ commitlint:
+ if: ${{ github.repository == 'frrouting/frr' }} && ${{ github.base_ref == 'refs/heads/master' }}
+ name: Check if the commits meet the requirements of the guidelines
+ permissions:
+ contents: read
+ pull-requests: read
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+
+ - name: Check Commit
+ uses: wagoid/commitlint-github-action@v5
+ with:
+ configFile: .github/commitlint.config.js
+ helpURL: 'https://docs.frrouting.org/projects/dev-guide/en/latest/workflow.html#submitting-patches-and-enhancements'
diff --git a/.github/workflows/conflicts.yml b/.github/workflows/conflicts.yml
new file mode 100644
index 0000000..100f557
--- /dev/null
+++ b/.github/workflows/conflicts.yml
@@ -0,0 +1,22 @@
+name: Add a conflict label if PR needs to rebase
+
+on:
+ push:
+ pull_request_target:
+ types: [synchronize]
+
+jobs:
+ conflicts:
+ if: github.repository == 'frrouting/frr'
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ pull-requests: write
+ steps:
+ - name: Check if PRs need a rebase (have some conflicts)
+ uses: eps1lon/actions-label-merge-conflict@releases/2.x
+ with:
+ dirtyLabel: "conflicts"
+ removeOnDirtyLabel: "no_conflicts"
+ repoToken: "${{ secrets.GITHUB_TOKEN }}"
+ commentOnDirty: "This pull request has conflicts, please resolve those before we can evaluate the pull request."
diff --git a/.github/workflows/docker-daily-master.yml b/.github/workflows/docker-daily-master.yml
new file mode 100644
index 0000000..59787b4
--- /dev/null
+++ b/.github/workflows/docker-daily-master.yml
@@ -0,0 +1,53 @@
+name: Build daily 'master' images for Docker
+
+on:
+ schedule:
+ - cron: '59 23 * * *'
+
+concurrency:
+ group: ${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ docker_daily_master:
+ if: github.repository == 'frrouting/frr'
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ steps:
+ - name: Custom variables
+ id: vars
+ run: |
+ # To package a specific git commit, the date of the commit gets
+ # appended to the latest release, e.g. 1.0.0_git20180204.
+ # This is the requirement by APKBUILD (abuild).
+ # More details: https://wiki.alpinelinux.org/wiki/APKBUILD_Reference.
+ echo ::set-output name=date::$(date +'%Y%m%d')
+
+ - name: Checkout
+ uses: actions/checkout@v3
+ with:
+ ref: master
+
+ - name: Set up QEMU
+ uses: docker/setup-qemu-action@v2
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v2
+
+ - name: Login to Docker Hub
+ uses: docker/login-action@v2
+ with:
+ registry: quay.io
+ username: ${{ secrets.QUAY_USERNAME }}
+ password: ${{ secrets.QUAY_ROBOT_TOKEN }}
+
+ - name: Build and push
+ uses: docker/build-push-action@v3
+ with:
+ context: .
+ file: ./docker/alpine/Dockerfile
+ push: true
+ tags: quay.io/frrouting/frr:master
+ build-args: PKGVER=${{ steps.vars.outputs.date }}
+ platforms: linux/amd64,linux/arm64,linux/arm/v7
diff --git a/.github/workflows/freeze.yml b/.github/workflows/freeze.yml
new file mode 100644
index 0000000..f3506d0
--- /dev/null
+++ b/.github/workflows/freeze.yml
@@ -0,0 +1,17 @@
+name: Warn before merging if a "freeze" label exists
+
+on:
+ pull_request_target:
+ types: [synchronize, opened, reopened, labeled, unlabeled]
+
+jobs:
+ freeze_warning:
+ if: ${{ contains(github.event.*.labels.*.name, 'freeze') }}
+ name: Warn before merging if a "freeze" label exists
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check for "freeze" label
+ run: |
+ echo "Pull request is labeled as 'freeze'"
+ echo "This workflow fails so that the pull request cannot be merged."
+ exit 1
diff --git a/.github/workflows/mergifyio_backport.yml b/.github/workflows/mergifyio_backport.yml
new file mode 100644
index 0000000..455dcbe
--- /dev/null
+++ b/.github/workflows/mergifyio_backport.yml
@@ -0,0 +1,22 @@
+name: Mergifyio backport
+
+on: [issue_comment]
+
+jobs:
+ mergifyio_backport:
+ if: github.repository == 'frrouting/frr'
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+
+ - uses: actions-ecosystem/action-regex-match@v2
+ id: regex-match
+ with:
+ text: ${{ github.event.comment.body }}
+ regex: '[Mm]ergifyio backport '
+
+ - uses: actions-ecosystem/action-add-labels@v1
+ if: ${{ steps.regex-match.outputs.match != '' }}
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ labels: backport
diff --git a/.github/workflows/size-label.yml b/.github/workflows/size-label.yml
new file mode 100644
index 0000000..1ce0786
--- /dev/null
+++ b/.github/workflows/size-label.yml
@@ -0,0 +1,26 @@
+name: Add PRs size label
+
+on: pull_request_target
+
+jobs:
+ size-label:
+ if: github.repository == 'frrouting/frr'
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ pull-requests: write
+ steps:
+ - name: size-label
+ uses: "pascalgn/size-label-action@v0.4.2"
+ env:
+ GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
+ with:
+ sizes: >
+ {
+ "0": "XS",
+ "20": "S",
+ "50": "M",
+ "200": "L",
+ "800": "XL",
+ "2000": "XXL"
+ }
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
new file mode 100644
index 0000000..cd1365b
--- /dev/null
+++ b/.github/workflows/stale.yml
@@ -0,0 +1,29 @@
+name: Mark stale issues
+
+on:
+ workflow_dispatch:
+ schedule:
+ - cron: "30 1 * * *"
+
+permissions:
+ contents: read
+
+jobs:
+ stale:
+ if: github.repository == 'frrouting/frr'
+ permissions:
+ issues: write
+ pull-requests: write
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/stale@v5
+ with:
+ repo-token: ${{ secrets.GITHUB_TOKEN }}
+ stale-issue-message: 'This issue is stale because it has been open 180 days with no activity. Comment or remove the `autoclose` label in order to avoid having this issue closed.'
+ stale-issue-label: autoclose
+ stale-pr-message: 'This PR is stale because it has been open 180 days with no activity. Comment or remove the `autoclose` label in order to avoid having this PR closed.'
+ stale-pr-label: autoclose
+ days-before-stale: 180
+ days-before-close: 194
+ days-before-pr-stale: 180
+ days-before-pr-close: 194