Add Cloud Native Catalog Items #105
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 | |
outputs: | |
contentID: ${{ steps.update_catalog_patterns.outputs.contentID }} | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
with: | |
token: ${{ secrets.GH_ACCESS_TOKEN }} | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.21' | |
- 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' ! -name 'artifacthub-repo.yml' -maxdepth 1 -type f -delete | |
cd ./collections/_catalog | |
for dir in */; do find $dir -maxdepth 1 -type f -delete; done | |
cd ../../ | |
- id: update_catalog_patterns | |
name: Update Catalog Patterns in Go | |
run: | | |
cd assets/artifact-hub-pkg | |
go run package.go | |
env: | |
GH_ACCESS_TOKEN: ${{ secrets.GH_ACCESS_TOKEN }} | |
- 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)" | |
filterImageURL="$(jq -r .[$idx].catalog_data.imageURL temp.json)" | |
compatibility="" | |
echo "contentID=$designId" >> $GITHUB_OUTPUT | |
# check if directory doesn't exists; then create it | |
if [ ! -d "./collections/_catalog/"$(echo $filterType | tr '[:upper:]' '[:lower:]')"" ]; then | |
echo "$(echo $filterType | tr '[:upper:]' '[:lower:]') doesn't exist." | |
echo "Creating directory...$(echo $filterType | tr '[:upper:]' '[:lower:]')" | |
mkdir "./collections/_catalog/"$(echo $filterType | tr '[:upper:]' '[:lower:]')"" | |
fi | |
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' |