Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IC: Caelum-rc4+dev29 #616

Merged
merged 5 commits into from
Nov 17, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .github/codeql/jpl-misra.qls
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@
- cpp/jsf/av-rule-168
# MISRA 6-2-2
- cpp/jsf/av-rule-202
# MISRA Rule 9-5-1
- cpp/jsf/av-rule-153
# JPL Rules
- /cpp/jpl-c/*/
# Exclude queries with too many results
Expand All @@ -28,3 +26,6 @@
# JPL 24
- cpp/jpl-c/multiple-stmts-per-line
- cpp/jpl-c/multiple-var-decls-per-line
# Excluded since cFS use unions judiciously
# MISRA Rule 9-5-1
- cpp/jsf/av-rule-153
69 changes: 69 additions & 0 deletions .github/scripts/create_ccb_agenda.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import subprocess
import json
import sys
import time
import os

# extract pull request data from GitHub
repos = ['cFS', 'cFE', 'osal', 'psp', 'sch_lab', 'ci_lab', 'to_lab', 'sample_app', 'sample_lib', 'elf2cfetbl', 'tblcrctool','cFS-GroundSystem', 'CF', 'CS', 'DS','FM', 'HK', 'HS', 'LC', 'MD', 'MM', 'SC']

for repo in repos:
subprocess.Popen('gh pr list --repo nasa/' + str(repo) + ' --search "draft:false" --json number,author,title,url,additions,deletions,labels | jq -c ' + '\'reduce range(0, length) as $index (.; (.[$index].author=.[$index].author.login | .[$index].number=(.[$index].number|"\'' + str(repo) + '\' PR #\(.)") )) | .[]\' ' + '>> temp.json', shell=True)

time.sleep(5)
subprocess.Popen('jq -s . temp.json > prs.json', shell=True)
time.sleep(5)

# load a list of pull requests as python dictionaries
with open ('prs.json') as prs_file:
prs = json.load(prs_file)

PrData = dict() # {author: [pr1, pr2, pr3, ...]}
AuthorPrChanges = dict() # {author: #TotalChanges}

for pr in prs:
ignore = False
for label in pr['labels']:
if label['name'] == 'CCB:Ignore' or label['name'] == 'CCB:Approved':
ignore = True
break
if ignore == False:
if pr['author'] not in PrData:
PrData[pr['author']] = [pr]
AuthorPrChanges[pr['author']] = pr['additions'] + pr['deletions']
else:
PrData[pr['author']].append(pr)
AuthorPrChanges[pr['author']] += pr['additions'] + pr['deletions']

# no prs to write, exit program
if len(PrData) == 0:
print("Failed to find relevant Pull Requests for the agenda. Exiting...\n")
sys.exit()

# re-order dict according to sum(additions, deletions) of each pr for each author
AuthorPrChanges = {k: v for k, v in sorted(AuthorPrChanges.items(), key=lambda item: item[1])}

# write to markdown
CCBfilename = "CCBAgenda.md"
with open(CCBfilename, 'w') as f:
f.write("## Items for Discussion\n\n")
for author in AuthorPrChanges.keys():
f.write("### @" + author + "\n\n")
for pr_auth in PrData[author]:
if (author == pr_auth['author']):
f.write("[" + pr_auth['number'] + "](" + pr_auth['url'].replace("pull", "issues") + ") " + pr_auth['title'] + "\n\n")

# close files
f.close()
prs_file.close()
time.sleep(5)
try:
os.remove("prs.json")
os.remove("temp.json")
except OSError:
pass

time.sleep(5)

if (os.stat(CCBfilename).st_size != 0):
print("CCB markdown has been successfully created")
32 changes: 32 additions & 0 deletions .github/workflows/cfs-wiki.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: Update wiki

on:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

# Force bash to apply pipefail option so pipeline failures aren't masked
defaults:
run:
shell: bash

jobs:
build:
runs-on: ubuntu-latest

steps:
# Checks out a copy of your repository on the ubuntu-latest machine
- name: Checkout code
uses: actions/checkout@v2
with:
submodules: true

- name: create CCB agenda
run: python3 .github/scripts/create_ccb_agenda.py
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Archive CCB agenda artifact
uses: actions/upload-artifact@v3
with:
name: ccb-agenda
path: ./CCBAgenda.md