Add Cloud Native Catalog Items #20
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>>./err.txt) | |
if [[ "$(<err.txt)" != "" ]]; then | |
>&2 echo "Error fetching User details" | |
>&2 echo "$(<err.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 | |
- name: Pull changes from remote | |
run: git pull origin master | |
- 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' | |
- name: Send Email on Workflow Failure | |
if: ${{ failure() }} | |
uses: dawidd6/[email protected] | |
with: | |
server_address: smtp.gmail.com | |
server_port: 465 | |
username: ${{ secrets.MAIL_USERNAME }} | |
password: ${{ secrets.MAIL_PASSWORD }} | |
subject: GitHub Actions - Workflow Failure | |
from: | | |
"Catalog Update Workflow" <[email protected]> | |
to: [email protected] | |
body: | | |
Meshery's Add Cloud Native Catalog Items <a href="https://github.com/meshery/meshery.io/actions/workflows/add-catalog.yml">workflow</a> encountered error(s). Refer to the attached error log for details or review the [results of the failed workflow](https://github.com/meshery/meshery.io/actions/runs/${{ github.run_id }}). | |
attachments: err.txt |