mirror of
https://github.com/vyos/vyos-build.git
synced 2025-10-01 20:28:40 +02:00
T6386: added caller workflows and codeowners (#634)
This commit is contained in:
parent
fad55b3e97
commit
e43017472c
2
.github/PULL_REQUEST_TEMPLATE.md
vendored
2
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -41,7 +41,7 @@ like this
|
|||||||
<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
|
<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
|
||||||
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
|
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
|
||||||
<!--- The entire development process is outlined here: https://docs.vyos.io/en/latest/contributing/development.html -->
|
<!--- The entire development process is outlined here: https://docs.vyos.io/en/latest/contributing/development.html -->
|
||||||
- [ ] I have read the [**CONTRIBUTING**](https://github.com/vyos/vyos-1x/blob/current/CONTRIBUTING.md) document
|
- [ ] I have read the [**CONTRIBUTING**](https://github.com/vyos/vyos-build/blob/current/CONTRIBUTING.md) document
|
||||||
- [ ] I have linked this PR to one or more Phabricator Task(s)
|
- [ ] I have linked this PR to one or more Phabricator Task(s)
|
||||||
- [ ] My commit headlines contain a valid Task id
|
- [ ] My commit headlines contain a valid Task id
|
||||||
- [ ] My change requires a change to the documentation
|
- [ ] My change requires a change to the documentation
|
||||||
|
|||||||
12
.github/labeler.yml
vendored
12
.github/labeler.yml
vendored
@ -1,12 +0,0 @@
|
|||||||
equuleus:
|
|
||||||
- any:
|
|
||||||
- base-branch: 'equuleus'
|
|
||||||
current:
|
|
||||||
- any:
|
|
||||||
- base-branch: 'current'
|
|
||||||
crux:
|
|
||||||
- any:
|
|
||||||
- base-branch: 'crux'
|
|
||||||
sagitta:
|
|
||||||
- any:
|
|
||||||
- base-branch: 'sagitta'
|
|
||||||
3
.github/reviewers.yml
vendored
3
.github/reviewers.yml
vendored
@ -1,3 +0,0 @@
|
|||||||
---
|
|
||||||
"**/*":
|
|
||||||
- team: reviewers
|
|
||||||
18
.github/workflows/add-pr-labels.yml
vendored
Normal file
18
.github/workflows/add-pr-labels.yml
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
name: Add pull request labels
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request_target:
|
||||||
|
branches:
|
||||||
|
- current
|
||||||
|
- equuleus
|
||||||
|
- sagitta
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
pull-requests: write
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
add-pr-label:
|
||||||
|
uses: vyos/.github/.github/workflows/add-pr-labels.yml@feature/T6349-reusable-workflows
|
||||||
|
secrets: inherit
|
||||||
21
.github/workflows/auto-author-assign.yml
vendored
21
.github/workflows/auto-author-assign.yml
vendored
@ -3,25 +3,12 @@ on:
|
|||||||
pull_request_target:
|
pull_request_target:
|
||||||
types: [opened, reopened, ready_for_review, locked]
|
types: [opened, reopened, ready_for_review, locked]
|
||||||
|
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
pull-requests: write
|
pull-requests: write
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
# https://github.com/marketplace/actions/auto-author-assign
|
|
||||||
assign-author:
|
assign-author:
|
||||||
runs-on: ubuntu-latest
|
uses: vyos/.github/.github/workflows/assign-author.yml@feature/T6349-reusable-workflows
|
||||||
steps:
|
secrets: inherit
|
||||||
- name: "Assign Author to PR"
|
|
||||||
uses: toshimaru/auto-author-assign@v1.3.5
|
|
||||||
with:
|
|
||||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
# https://github.com/shufo/auto-assign-reviewer-by-files
|
|
||||||
assign_reviewer:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Request review based on files changes and/or groups the author belongs to
|
|
||||||
uses: shufo/auto-assign-reviewer-by-files@v1.1.4
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.PR_ACTION_ASSIGN_REVIEWERS }}
|
|
||||||
config: .github/reviewers.yml
|
|
||||||
|
|||||||
18
.github/workflows/chceck-pr-message.yml
vendored
Normal file
18
.github/workflows/chceck-pr-message.yml
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
name: Check pull request message format
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- current
|
||||||
|
- sagitta
|
||||||
|
- equuleus
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
pull-requests: write
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check-pr-title:
|
||||||
|
uses: vyos/.github/.github/workflows/check-pr-message.yml@feature/T6349-reusable-workflows
|
||||||
|
secrets: inherit
|
||||||
14
.github/workflows/check-pr-conflicts.yml
vendored
Normal file
14
.github/workflows/check-pr-conflicts.yml
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
name: "PR Conflicts checker"
|
||||||
|
on:
|
||||||
|
pull_request_target:
|
||||||
|
types: [synchronize]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
pull-requests: write
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check-pr-conflict-call:
|
||||||
|
uses: vyos/.github/.github/workflows/check-pr-merge-conflict.yml@feature/T6349-reusable-workflows
|
||||||
|
secrets: inherit
|
||||||
14
.github/workflows/check-stale.yml
vendored
Normal file
14
.github/workflows/check-stale.yml
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
name: "Issue and PR stale management"
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: "0 0 * * *"
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
pull-requests: write
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
stale:
|
||||||
|
uses: vyos/.github/.github/workflows/check-stale.yml@feature/T6349-reusable-workflows
|
||||||
|
secrets: inherit
|
||||||
16
.github/workflows/check-unused-imports.yml
vendored
Normal file
16
.github/workflows/check-unused-imports.yml
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
name: Check for unused imports using Pylint
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- current
|
||||||
|
- sagitta
|
||||||
|
- equuleus
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check-unused-imports:
|
||||||
|
uses: vyos/.github/.github/workflows/check-unused-imports.yml@feature/T6349-reusable-workflows
|
||||||
|
secrets: inherit
|
||||||
23
.github/workflows/codeql.yml
vendored
Normal file
23
.github/workflows/codeql.yml
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
name: "Perform CodeQL Analysis"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ "current", "sagitta", "equuleus" ]
|
||||||
|
pull_request:
|
||||||
|
# The branches below must be a subset of the branches above
|
||||||
|
branches: [ "current" ]
|
||||||
|
schedule:
|
||||||
|
- cron: '22 10 * * 0'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
actions: read
|
||||||
|
contents: read
|
||||||
|
security-events: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
codeql-analysis-call:
|
||||||
|
uses: vyos/.github/.github/workflows/codeql-analysis.yml@feature/T6349-reusable-workflows
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
languages: "['python']"
|
||||||
12
.github/workflows/label-backport.yml
vendored
Normal file
12
.github/workflows/label-backport.yml
vendored
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
name: Mergifyio backport
|
||||||
|
|
||||||
|
on: [issue_comment]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
pull-requests: write
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
mergifyio-backport:
|
||||||
|
uses: vyos/.github/.github/workflows/label-backport.yml@feature/T6349-reusable-workflows
|
||||||
|
secrets: inherit
|
||||||
19
.github/workflows/linit-j2.yml
vendored
Normal file
19
.github/workflows/linit-j2.yml
vendored
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
name: J2 Lint
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- current
|
||||||
|
- sagitta
|
||||||
|
- equuleus
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
pull-requests: write
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
j2lint:
|
||||||
|
uses: vyos/.github/.github/workflows/lint-j2.yml@feature/T6349-reusable-workflows
|
||||||
|
secrets: inherit
|
||||||
22
.github/workflows/mergifyio_backport.yml
vendored
22
.github/workflows/mergifyio_backport.yml
vendored
@ -1,22 +0,0 @@
|
|||||||
name: Mergifyio backport
|
|
||||||
|
|
||||||
on: [issue_comment]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
mergifyio_backport:
|
|
||||||
if: github.repository == 'vyos/vyos-build'
|
|
||||||
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
|
|
||||||
18
.github/workflows/pr-conflicts.yml
vendored
18
.github/workflows/pr-conflicts.yml
vendored
@ -1,18 +0,0 @@
|
|||||||
name: "PR Conflicts checker"
|
|
||||||
on:
|
|
||||||
pull_request_target:
|
|
||||||
types: [synchronize]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
Conflict_Check:
|
|
||||||
name: 'Check PR status: conflicts and resolution'
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: check if PRs are dirty
|
|
||||||
uses: eps1lon/actions-label-merge-conflict@v3
|
|
||||||
with:
|
|
||||||
dirtyLabel: "state: conflict"
|
|
||||||
removeOnDirtyLabel: "state: conflict resolved"
|
|
||||||
repoToken: "${{ secrets.GITHUB_TOKEN }}"
|
|
||||||
commentOnDirty: "This pull request has conflicts, please resolve those before we can evaluate the pull request."
|
|
||||||
commentOnClean: "Conflicts have been resolved. A maintainer will review the pull request shortly."
|
|
||||||
20
.github/workflows/pull-request-labels.yml
vendored
20
.github/workflows/pull-request-labels.yml
vendored
@ -1,20 +0,0 @@
|
|||||||
---
|
|
||||||
name: Add pull request labels
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request_target:
|
|
||||||
branches:
|
|
||||||
- current
|
|
||||||
- crux
|
|
||||||
- equuleus
|
|
||||||
- sagitta
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
add-pr-label:
|
|
||||||
name: Add PR Labels
|
|
||||||
runs-on: ubuntu-20.04
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
pull-requests: write
|
|
||||||
steps:
|
|
||||||
- uses: actions/labeler@v5.0.0
|
|
||||||
23
.github/workflows/pull-request-message-check.yml
vendored
23
.github/workflows/pull-request-message-check.yml
vendored
@ -1,23 +0,0 @@
|
|||||||
---
|
|
||||||
name: Check pull request message format
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- current
|
|
||||||
- crux
|
|
||||||
- equuleus
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
check-pr-title:
|
|
||||||
name: Check pull request title
|
|
||||||
runs-on: ubuntu-20.04
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
timeout-minutes: 2
|
|
||||||
- name: Install the requests library
|
|
||||||
run: pip3 install requests
|
|
||||||
- name: Check the PR title
|
|
||||||
timeout-minutes: 2
|
|
||||||
run: |
|
|
||||||
./scripts/check-pr-title-and-commit-messages.py '${{ github.event.pull_request.url }}'
|
|
||||||
22
.github/workflows/stale.yml
vendored
22
.github/workflows/stale.yml
vendored
@ -1,22 +0,0 @@
|
|||||||
name: "Issue and PR stale management"
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: "0 0 * * *"
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
stale:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
if: github.repository == 'vyos/vyos-1x'
|
|
||||||
steps:
|
|
||||||
# Issue stale management
|
|
||||||
- uses: actions/stale@v6
|
|
||||||
with:
|
|
||||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
days-before-stale: 90
|
|
||||||
days-before-close: -1
|
|
||||||
stale-issue-message: 'This issue is stale because it has been open 90 days with no activity. The issue will be reviewed by a maintainer and may be closed'
|
|
||||||
stale-issue-label: 'state: stale'
|
|
||||||
exempt-issue-labels: 'state: accepted, state: in-progress'
|
|
||||||
stale-pr-message: 'This PR is stale because it has been open 30 days with no activity. The PR will be reviewed by a maintainer and may be closed'
|
|
||||||
stale-pr-label: 'state: stale'
|
|
||||||
exempt-pr-labels: 'state: accepted, state: in-progress'
|
|
||||||
1
CODEOWNERS
Normal file
1
CODEOWNERS
Normal file
@ -0,0 +1 @@
|
|||||||
|
* @kumvijaya
|
||||||
@ -1,54 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
|
|
||||||
import re
|
|
||||||
import sys
|
|
||||||
import time
|
|
||||||
|
|
||||||
import requests
|
|
||||||
|
|
||||||
# Use the same regex for PR title and commit messages for now
|
|
||||||
title_regex = r'^(([a-zA-Z\-_.]+:\s)?)T\d+:\s+[^\s]+.*'
|
|
||||||
commit_regex = title_regex
|
|
||||||
|
|
||||||
|
|
||||||
def check_pr_title(title):
|
|
||||||
if not re.match(title_regex, title):
|
|
||||||
print(f"PR title '{title}' does not match the required format!")
|
|
||||||
print("Valid title example: T99999: make IPsec secure")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
|
|
||||||
def check_commit_message(title):
|
|
||||||
if not re.match(commit_regex, title):
|
|
||||||
print(f"Commit title '{title}' does not match the required format!")
|
|
||||||
print("Valid title example: T99999: make IPsec secure")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
if len(sys.argv) < 2:
|
|
||||||
print("Please specify pull request URL!")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
# There seems to be a race condition that causes this scripts to receive
|
|
||||||
# an incomplete PR object that is missing certain fields,
|
|
||||||
# which causes temporary CI failures that require re-running the script
|
|
||||||
#
|
|
||||||
# It's probably better to add a small delay to prevent that
|
|
||||||
time.sleep(5)
|
|
||||||
|
|
||||||
# Get the pull request object
|
|
||||||
pr = requests.get(sys.argv[1]).json()
|
|
||||||
if "title" not in pr:
|
|
||||||
print("The PR object does not have a title field!")
|
|
||||||
print("Did not receive a valid pull request object, please check the URL!")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
check_pr_title(pr["title"])
|
|
||||||
|
|
||||||
# Get the list of commits
|
|
||||||
commits = requests.get(pr["commits_url"]).json()
|
|
||||||
for c in commits:
|
|
||||||
# Retrieve every individual commit and check its title
|
|
||||||
co = requests.get(c["url"]).json()
|
|
||||||
check_commit_message(co["commit"]["message"])
|
|
||||||
@ -18,7 +18,6 @@
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import shutil
|
import shutil
|
||||||
import traceback
|
|
||||||
|
|
||||||
import vyos.utils.process
|
import vyos.utils.process
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user