Skip to content

Commit

Permalink
Create Tech Radar
Browse files Browse the repository at this point in the history
  • Loading branch information
MGaetan89 committed Feb 28, 2024
1 parent 82cf41c commit 03fda9c
Show file tree
Hide file tree
Showing 5 changed files with 19,096 additions and 0 deletions.
130 changes: 130 additions & 0 deletions .github/workflows/tech_radar.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
name: Update Tech Radar

on:
push:
schedule:
- cron: '0 0 * * *'

jobs:
update_tech_radar:
runs-on: ubuntu-latest
name: Update Tech Radar
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install gomplate
run: npm install -g gomplate

- name: Get the list of repositories
id: repository_list
env:
GH_TOKEN: ${{ github.token }}
run: >
echo repository_list_json=$(
gh repo list ${{ github.repository_owner }}
--limit 1000
--source
--no-archived
--visibility public
--json name,nameWithOwner,primaryLanguage,url
--jq '. | tostring'
) >> $GITHUB_OUTPUT
- name: Update the list of used languages
run: >
echo ${{ toJSON(steps.repository_list.outputs.repository_list_json) }}
| jq '. | reduce .[] as { $name, $primaryLanguage, $url } ( {}; .[ $primaryLanguage.name | tostring ][$name] = $url )'
| gomplate -d repositories=stdin:///in.json -f techRadar/used_languages.tmpl -o public/techRadar/used_languages.md
- name: Update the list of used dependencies
env:
GH_TOKEN: ${{ github.token }}
run: |
repository_names=$(
echo ${{ toJSON(steps.repository_list.outputs.repository_list_json) }} \
| jq -r '.[] | .nameWithOwner'
)
# Folder where temporary data will be stored
mkdir -p .packageManagers
# Load all the dependencies data
for name in $repository_names; do
# Get the list of dependencies by package manager
echo -e "Extracting the dependencies of $name."
dependencies=$(
gh api \
-H 'Accept: application/vnd.github+json' \
-H 'X-GitHub-Api-Version: 2022-11-28' \
/repos/$name/dependency-graph/sbom \
--jq '[ .sbom.packages.[] | { name: .name | sub("[a-zA-Z.]+[:/](?<package>.*)"; "\(.package)"), packageManager: .name | capture("(?<packageManager>[a-zA-Z.]+)[:/]").packageManager, version: .versionInfo } ] | reduce .[] as { $name, $packageManager, $version } ( {}; .[ $packageManager ] += [ $name + " v" + $version ] )' \
2>/dev/null
)
if [ $? -ne 0 ]; then
echo -e "$name doesn't have Dependency Graph enabled."
echo $name >> .packageManagers/unknown
continue
fi
# Extract the list of package managers
packageManagers=$(
echo $dependencies \
| jq -r '. | keys[]'
)
# Store the dependencies by package manager in specific files
for packageManager in $packageManagers; do
echo $dependencies \
| jq -r ".$packageManager[]" \
>> .packageManagers/$packageManager
done
done
# Filter the resulting dependencies
for file in $(ls .packageManagers); do
if [[ -s .packageManagers/$file ]]; then
cat .packageManagers/$file | sort | uniq > .packageManagers/${file}_sorted
mv .packageManagers/${file}_sorted .packageManagers/$file
else
rm .packageManagers/$file
fi
done
# Update the Markdown file with the extracted data
markdown_file="public/techRadar/used_dependencies.md"
echo -e "# Used dependencies\n" > $markdown_file
for file in $(ls .packageManagers); do
echo -e "## $file\n" >> $markdown_file
if [[ $file == "unknown" ]]; then
echo -e "> [!WARNING]" >> $markdown_file
echo -e "> The following repositories didn't enable Dependency Graph." >> $markdown_file
echo -e "> It can be enabled by clicking on the corresponding link below.\n" >> $markdown_file
fi
while read -r line; do
if [[ $file == "unknown" ]]; then
echo -e "- [$line](https://github.com/$line) ([enable Dependency Graph](https://github.com/$line/network/dependencies))" >> $markdown_file
else
echo -e "- $line" >> $markdown_file
fi
done < .packageManagers/$file
echo -e "" >> $markdown_file
done
- name: Commit the list of changes
run: |
if [ `git ls-files -m | wc -l` -gt 0 ]; then
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add public/techRadar/used_languages.md
git add public/techRadar/used_dependencies.md
git commit -m "Update Tech Radar"
git push
fi
5 changes: 5 additions & 0 deletions public/_sidebar.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,8 @@
* [Understanding Licenses](/guides/LICENSE_GUIDE.md)
* [Contributor's Handbook](/guides/CONTRIBUTING_GUIDE.md)
* [Code of Conduct Guidelines](/guides/CODE_OF_CONDUCT_GUIDE.md)

**Tech Radar**

* [Used languages](/techRadar/used_languages.md)
* [Used dependencies](/techRadar/used_dependencies.md)
Loading

0 comments on commit 03fda9c

Please sign in to comment.