Build media for apphub image #405
This file contains hidden or 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
# This action will be trigger by docker.yml action | |
# docker.yml action download the artifact for build | |
name: Build media for apphub image | |
on: | |
workflow_dispatch: | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
env: | |
ACCESS_TOKEN: ${{ secrets.CONTENTFUL_GRAPHQLTOKEN }} | |
LOCALES: "en-US,zh-CN" | |
DATA_DIR: "json" | |
APPSTORE_LOGO_DIR: "logos" | |
SCREENSHOT_DIR: "screenshots" | |
LIMIT: 100 | |
CI: false | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install GNU Parallel | |
run: sudo apt-get install -y parallel | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.x' | |
- name: Install AWS CLI via pip | |
run: | | |
python -m pip install --upgrade pip | |
pip install awscli | |
- name: Fetch catalog data from contentful graphql | |
run: | | |
mkdir -p $DATA_DIR | |
IFS=',' read -ra LOCALE_ARRAY <<< "$LOCALES" | |
for LOCALE in "${LOCALE_ARRAY[@]}"; do | |
curl -X POST \ | |
-H "Content-Type: application/json" \ | |
-H "Authorization: Bearer $ACCESS_TOKEN" \ | |
-d '{"query":"query($locale: String){catalog(id: \"2Yp0TY3kBHgG6VDjsHZNpK\",locale:$locale) {linkedFrom(allowedLocales:[\"en-US\"]) {catalogCollection(limit:20) {items {key position title linkedFrom(allowedLocales:[\"en-US\"]) {catalogCollection(limit:20) {items {key title position}}}}}}}}","variables":{"locale":"'$LOCALE'"}}' \ | |
https://graphql.contentful.com/content/v1/spaces/ffrhttfighww | \ | |
jq '.data.catalog.linkedFrom.catalogCollection.items' > $DATA_DIR/catalog_${LOCALE:0:2}.json | |
done | |
- name: Fetch product data json and download screenshots | |
run: | | |
mkdir -p $SCREENSHOT_DIR && IFS=',' read -ra LOCALE_ARRAY <<< "$LOCALES" && for LOCALE in "${LOCALE_ARRAY[@]}"; do | |
SKIP=0 | |
TOTAL=0 | |
ITEMS=() | |
while [ $SKIP -le $TOTAL ]; do | |
RESPONSE=$(curl -X POST \ | |
-H "Content-Type: application/json" \ | |
-H "Authorization: Bearer $ACCESS_TOKEN" \ | |
-d '{"query":"query($locale: String,$skip: Int){productCollection(locale:$locale,where:{appStore:true,production:true},limit: '$LIMIT', skip: $skip) {total items {sys {id} key hot trademark summary overview websiteurl description screenshots distribution vcpu memory storage logo {imageurl} catalogCollection(limit:15) {items {key title catalogCollection(limit:5){items{key title position}}}}}}}", "variables":{"locale":"'$LOCALE'", "skip":'$SKIP'}}' \ | |
https://graphql.contentful.com/content/v1/spaces/ffrhttfighww) | |
ITEMS+=($(echo $RESPONSE | jq '.data.productCollection.items[]')) | |
TOTAL=$(echo $RESPONSE | jq '.data.productCollection.total') | |
SKIP=$((SKIP + LIMIT)) | |
done | |
echo ${ITEMS[@]} | jq -r '.screenshots[]?.value' | sed 's/"//g' | parallel -j 10 "wget -t 0 -N {} -P $SCREENSHOT_DIR/${LOCALE:0:2} || echo {} >> $SCREENSHOT_DIR/Error.log" | |
echo ${ITEMS[@]} | jq -s '.' > $DATA_DIR/product_${LOCALE:0:2}.json | |
done | |
- name: Download directory from Cloudflare R2 | |
env: | |
AWS_ACCESS_KEY_ID: ${{ secrets.CLOUDFLARE_R2_SECRET_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.CLOUDFLARE_R2_SECRET_KEY }} | |
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} | |
run: | | |
aws s3 sync s3://libs/Websoft9/logo/product $APPSTORE_LOGO_DIR --endpoint-url="https://$CLOUDFLARE_ACCOUNT_ID.r2.cloudflarestorage.com" | |
- name: Create Zip Archive | |
run: | | |
rsync -av json logos screenshots media | |
zip -r media.zip media/ | |
- name: Upload media.zip to artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: media | |
path: media.zip |