Skip to content

Refactor workflow file #77

Refactor workflow file

Refactor workflow file #77

Workflow file for this run

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 /repos/$name/dependency-graph/sbom 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