Add Cloud Native Catalog Items #5
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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/[email protected] | |
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: [email protected] | |
commit_author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com> | |
commit_options: '--signoff' | |
commit_message: '[Catalog] Update Catalog items' |