Skip to content

Add Cloud Native Catalog Items #39

Add Cloud Native Catalog Items

Add Cloud Native Catalog Items #39

Workflow file for this run

name: Add Cloud Native Catalog Items
on:
schedule:
- cron: "0 0 * * *"
workflow_dispatch:
repository_dispatch:
types: [add_catalog]
jobs:
UpdateCloudNativeCatalog:
runs-on: ubuntu-22.04
steps:
- name: Checkout Code
uses: actions/checkout@v3.5.2
with:
token: ${{ secrets.GH_ACCESS_TOKEN }}
- name: Set env
run : |
echo "MESHERY_CLOUD_BASE_URL=https://meshery.layer5.io" >> $GITHUB_ENV
echo "MESHERY_CATALOG_FILES_DIR=catalog" >> $GITHUB_ENV
- name: Cleanup
run: |
find $MESHERY_CATALOG_FILES_DIR ! -name 'index.html' -maxdepth 1 -type f -delete
cd ./collections/_catalog
for dir in */; do find $dir -maxdepth 1 -type f -delete; done
cd ../../
- name: Update Catalog Patterns
if: ${{ success() }}
run: |
catalogPatterns=$(curl -sS "$MESHERY_CLOUD_BASE_URL/api/catalog/content/pattern" 2>./err.txt)
if [[ "$(<err.txt)" != "" ]]; then
>&2 echo "Error connecting to Meshery Cloud"
>&2 echo "$(<err.txt)"
fi
echo "$catalogPatterns" | jq -r '.patterns' > temp.json
patternCount=$(echo "$catalogPatterns" | jq '.total_count')
echo "Found $patternCount catalog patterns"
for (( idx=0; idx<$patternCount; idx++ ))
do
designId=$(jq -r .[$idx].id temp.json)
patternInfo="$(jq -r .[$idx].catalog_data.pattern_info temp.json)"
patternCaveats="$(jq -r .[$idx].catalog_data.pattern_caveats temp.json)"
patternType="$(jq -r .[$idx].catalog_data.type temp.json)"
patternName="$(jq -r .[$idx].name temp.json)"
compatibility=""
if [[ $patternInfo == "null" ]]; then
patternInfo="\"\""
fi
if [[ $patternCaveats == "null" ]]; then
patternCaveats="\"\""
fi
if [[ $patternType == "null" ]]; then
patternType="Deployment"
fi
compatLength=$(jq -r ".[$idx].catalog_data.compatibility | length" temp.json)
for (( compatIdx=0; compatIdx<$compatLength; compatIdx++ ))
do
compatibility+="
"
compatibility+=" - $(jq -r ".[$idx].catalog_data.compatibility[$compatIdx]" temp.json)"
done
patternFile="$(jq -r .[$idx].pattern_file temp.json)"
echo "$patternFile" > $MESHERY_CATALOG_FILES_DIR/$designId.yaml
userId=$(jq -r .[$idx].user_id temp.json)
userInfo=$(curl -sS "$MESHERY_CLOUD_BASE_URL/api/identity/users/profile/$userId" 2>./err1.txt)
if [[ "$(<err1.txt)" != "" ]]; then
>&2 echo "Error fetching User details"
>&2 echo "$(<err1.txt)"
fi
echo "$userInfo" > info.json
userFullName="$(jq -r .first_name info.json) $(jq -r .last_name info.json)"
userAvatarURL="$(jq -r .avatar_url info.json)"
echo "---
layout: item
name: $patternName
userId: $userId
userName: $userFullName
userAvatarURL: $userAvatarURL
type: $patternType
compatibility: $compatibility
patternId: $designId
image: /assets/images/patterns/service-mesh.svg
patternInfo: |
$patternInfo
patternCaveats: |
$patternCaveats
URL: 'https://raw.githubusercontent.com/meshery/meshery.io/master/$MESHERY_CATALOG_FILES_DIR/$designId.yaml'
downloadLink: $designId.yaml
---" > ./collections/_catalog/"$(echo $patternType | tr '[:upper:]' '[:lower:]')"/$designId.md
done
rm temp.json
rm err.txt
rm info.json
rm err1.txt
- name: Update Catalog Filters
if: ${{ success() }}
run: |
catalogFilters=$(curl -sS "$MESHERY_CLOUD_BASE_URL/api/catalog/content/filter" 2>./err.txt)
if [[ "$(<err.txt)" != "" ]]; then
>&2 echo "Error connecting to Meshery Cloud"
>&2 echo "$(<err.txt)"
fi
echo "$catalogFilters" | jq -r '.filters' > temp.json
filterCount=$(echo "$catalogFilters" | jq '.total_count')
echo "Found $filterCount catalog filters"
echo "Found $filterCount catalog filters"
for (( idx=0; idx<$filterCount; idx++ ))
do
filterId=$(jq -r .[$idx].id temp.json)
filterInfo="$(jq -r .[$idx].catalog_data.filter_info temp.json)"
filterCaveats="$(jq -r .[$idx].catalog_data.filter_caveats temp.json)"
filterType="$(jq -r .[$idx].catalog_data.type temp.json)"
filterName="$(jq -r .[$idx].name temp.json)"
compatibility=""
if [[ $filterInfo == "null" ]]; then
filterInfo="\"\""
fi
if [[ $filterCaveats == "null" ]]; then
filterCaveats="\"\""
fi
if [[ $filterType == "null" ]]; then
patternType="wasm filter"
fi
compatLength=$(jq -r ".[$idx].catalog_data.compatibility | length" temp.json)
for (( compatIdx=0; compatIdx<$compatLength; compatIdx++ ))
do
compatibility+="
"
compatibility+=" - $(jq -r ".[$idx].catalog_data.compatibility[$compatIdx]" temp.json)"
done
filterFile="$(jq -r .[$idx].filter_file temp.json)"
echo "$filterFile" > $MESHERY_CATALOG_FILES_DIR/$filterId.yaml
userId=$(jq -r .[$idx].user_id temp.json)
userInfo=$(curl -sS "$MESHERY_CLOUD_BASE_URL/api/identity/users/profile/$userId" 2>./err1.txt)
if [[ "$(<err1.txt)" != "" ]]; then
>&2 echo "Error fetching User details"
>&2 echo "$(<err1.txt)"
fi
echo "$userInfo" > info.json
userFullName="$(jq -r .first_name info.json) $(jq -r .last_name info.json)"
userAvatarURL="$(jq -r .avatar_url info.json)"
echo "---
layout: item
name: $filterName
userId: $userId
userName: $userFullName
userAvatarURL: $userAvatarURL
type: $filterType
compatibility: $compatibility
patternId: $filterId
image: /assets/images/webassembly_logo.svg
filterInfo: |
$filterInfo
filterCaveats: |
$filterCaveats
URL: 'https://raw.githubusercontent.com/meshery/meshery.io/master/$MESHERY_CATALOG_FILES_DIR/$filterId.yaml'
downloadLink: $filterId.yaml
---" > ./collections/_catalog/"$(echo $filterType | tr '[:upper:]' '[:lower:]')"/$filterId.md
done
rm temp.json
rm err.txt
- name: Commit
uses: stefanzweifel/git-auto-commit-action@v4
with:
file_pattern: catalog/* collections/_catalog/*
commit_user_name: l5io
commit_user_email: ci@layer5.io
commit_author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com>
commit_options: '--signoff'
commit_message: '[Catalog] Update Catalog items'