Skip to content

feat(fe/themes): Add premium flag and pro icon #380

feat(fe/themes): Add premium flag and pro icon

feat(fe/themes): Add premium flag and pro icon #380

Workflow file for this run

name: Frontend
on:
workflow_dispatch:
push:
branches:
- master
- sandbox
paths:
- '.github/workflows/frontend.yml'
- 'shared/**'
- 'frontend/config/**'
- 'frontend/apps/crates/components/**'
- 'frontend/apps/crates/utils/**'
- 'frontend/apps/crates/entry/admin/**'
- 'frontend/apps/crates/entry/home/**'
- 'frontend/apps/crates/entry/asset/**'
- 'frontend/apps/crates/entry/user/**'
- 'frontend/apps/crates/entry/community/**'
- 'frontend/apps/crates/entry/kids/**'
- 'frontend/apps/crates/entry/module/**'
- 'frontend/ts-utils/**'
- 'frontend/elements/**'
- 'frontend/apps/static/**'
jobs:
prepare:
name: Prepare
runs-on: ubuntu-22.04
outputs:
branch: "${{ steps.branch.outputs.value }}"
steps:
- name: Get branch from ref
id: branch
run: echo "value=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT
check:
needs: [prepare]
name: "[${{ needs.prepare.outputs.branch }}] Check"
runs-on: ubuntu-latest
env:
RUSTFLAGS: -D warnings
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@master
with:
# toolchain: nightly
toolchain: nightly-2023-06-08
components: rustfmt
- run: cargo check --all --manifest-path frontend/apps/Cargo.toml
- run: cargo fmt --all --manifest-path frontend/apps/Cargo.toml --check
build-app:
needs: [prepare]
name: "[${{ needs.prepare.outputs.branch }}] Build - App (${{matrix.app}})"
runs-on: ubuntu-latest
strategy:
matrix:
app: [admin, home, asset/edit, asset/play, community, user, kids]
steps:
- name: "Set environment"
env:
BRANCH: ${{ needs.prepare.outputs.branch }}
run: |
if [[ ${BRANCH} == 'master' ]]; then
echo "ENVIRONMENT=release" >> $GITHUB_ENV
echo "MIXPANEL_PROJECT_TOKEN=${{ secrets.MIXPANEL_PROJECT_TOKEN_RELEASE }}" >> $GITHUB_ENV
echo "GOOGLE_CLOUD_SERVICE_ACCOUNT_KEY=${{ secrets.GOOGLE_CLOUD_SERVICE_ACCOUNT_JSON_KEY }}" >> $GITHUB_ENV
echo "STORAGE_BUCKET=ji-cloud-frontend-origin-eu-001" >> $GITHUB_ENV
else
echo "ENVIRONMENT=sandbox" >> $GITHUB_ENV
echo "MIXPANEL_PROJECT_TOKEN=${{ secrets.MIXPANEL_PROJECT_TOKEN_SANDBOX }}" >> $GITHUB_ENV
echo "GOOGLE_CLOUD_SERVICE_ACCOUNT_KEY=${{ secrets.GOOGLE_CLOUD_SERVICE_ACCOUNT_JSON_KEY_SANDBOX }}" >> $GITHUB_ENV
echo "STORAGE_BUCKET=ji-cloud-sandbox-frontend-origin-eu-001" >> $GITHUB_ENV
fi
- uses: actions/checkout@v3
- name: Extract label
shell: bash
run: echo "value=\"[${{needs.prepare.outputs.branch}} - module/${{ matrix.app }} - app]\"" >> $GITHUB_OUTPUT
id: extract_label
- name: Notify slack
uses: pullreminders/slack-action@master
with:
args: '{\"channel\":\"CFYR62BRC\",\"text\":\"${{steps.extract_label.outputs.value}} starting...\"}'
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
- uses: dtolnay/rust-toolchain@master
with:
# toolchain: nightly
toolchain: nightly-2023-06-08
- uses: davidB/rust-cargo-make@master
- name: install node
uses: actions/setup-node@v3
with:
node-version: '16'
- name: install npm deps
run: npm ci
working-directory: "./frontend/apps"
- name: install npm deps (build-utils)
run: npm ci
working-directory: "./frontend/build-utils"
- name: build
run: cargo make ${{ env.ENVIRONMENT }} "${{ matrix.app }}"
working-directory: "./frontend/apps"
env:
LOCAL_CDN_FRONTEND_DIR: ${{ github.workspace }}/frontend
MIXPANEL_PROJECT_TOKEN: ${{ env.MIXPANEL_PROJECT_TOKEN }}
- id: 'auth'
uses: 'google-github-actions/auth@v1'
with:
credentials_json: '${{ env.GOOGLE_CLOUD_SERVICE_ACCOUNT_KEY }}'
- name: install google cloud sdk
uses: google-github-actions/setup-gcloud@v1
- name: deploy to google cloud
# run: gsutil -m rsync -d -r frontend/apps/dist/${{ matrix.app }}/js gs://${{ env.STORAGE_BUCKET }}/${{ matrix.app }}/js
run: gsutil -m cp -Z -r frontend/apps/dist/${{ matrix.app }}/js gs://${{ env.STORAGE_BUCKET }}/${{ matrix.app }}
- name: Notify slack of all status
uses: pullreminders/slack-action@master
with:
args: '{\"channel\":\"CFYR62BRC\",\"text\":\"${{steps.extract_label.outputs.value}} ${{job.status}}\"}'
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
if: always()
build-module:
needs: [prepare]
name: "[${{ needs.prepare.outputs.branch }}] Build - Module (${{matrix.app}}, ${{matrix.mode}})"
runs-on: ubuntu-latest
strategy:
matrix:
app: [poster, video, embed, tapping-board, drag-drop, memory, matching, flashcards, card-quiz, cover, resource-cover, legacy, find-answer]
mode: [edit, play]
steps:
- name: "Set environment"
env:
BRANCH: ${{ needs.prepare.outputs.branch }}
run: |
if [[ ${BRANCH} == 'master' ]]; then
echo "ENVIRONMENT=release" >> $GITHUB_ENV
echo "MIXPANEL_PROJECT_TOKEN=${{ secrets.MIXPANEL_PROJECT_TOKEN_RELEASE }}" >> $GITHUB_ENV
echo "GOOGLE_CLOUD_SERVICE_ACCOUNT_KEY=${{ secrets.GOOGLE_CLOUD_SERVICE_ACCOUNT_JSON_KEY }}" >> $GITHUB_ENV
echo "STORAGE_BUCKET=ji-cloud-frontend-origin-eu-001" >> $GITHUB_ENV
else
echo "ENVIRONMENT=sandbox" >> $GITHUB_ENV
echo "MIXPANEL_PROJECT_TOKEN=${{ secrets.MIXPANEL_PROJECT_TOKEN_SANDBOX }}" >> $GITHUB_ENV
echo "GOOGLE_CLOUD_SERVICE_ACCOUNT_KEY=${{ secrets.GOOGLE_CLOUD_SERVICE_ACCOUNT_JSON_KEY_SANDBOX }}" >> $GITHUB_ENV
echo "STORAGE_BUCKET=ji-cloud-sandbox-frontend-origin-eu-001" >> $GITHUB_ENV
fi
- uses: actions/checkout@v3
- name: Extract label
shell: bash
run: echo "value=\"[${{needs.prepare.outputs.branch}} - module/${{ matrix.app }}/${{ matrix.mode }} - app]\"" >> $GITHUB_OUTPUT
id: extract_label
- name: Notify slack
uses: pullreminders/slack-action@master
with:
args: '{\"channel\":\"CFYR62BRC\",\"text\":\"${{steps.extract_label.outputs.value}} starting...\"}'
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
- uses: dtolnay/rust-toolchain@master
with:
# toolchain: nightly
toolchain: nightly-2023-06-08
- uses: davidB/rust-cargo-make@master
- name: install node
uses: actions/setup-node@v3
with:
node-version: '16'
- name: install npm deps
run: npm ci
working-directory: "./frontend/apps"
- name: install npm deps (build-utils)
run: npm ci
working-directory: "./frontend/build-utils"
- name: build
run: cargo make ${{ env.ENVIRONMENT }} "module/${{ matrix.app }}/${{ matrix.mode }}"
working-directory: "./frontend/apps"
env:
LOCAL_CDN_FRONTEND_DIR: ${{ github.workspace }}/frontend
MIXPANEL_PROJECT_TOKEN: ${{ env.MIXPANEL_PROJECT_TOKEN }}
- id: 'auth'
uses: 'google-github-actions/auth@v1'
with:
credentials_json: '${{ env.GOOGLE_CLOUD_SERVICE_ACCOUNT_KEY }}'
- name: install google cloud sdk
uses: google-github-actions/setup-gcloud@v1
- name: deploy to google cloud
run: gsutil -m rsync -d -r frontend/apps/dist/module/${{ matrix.app }}/${{ matrix.mode }}/js gs://${{ env.STORAGE_BUCKET }}/module/${{ matrix.app }}/${{ matrix.mode }}/js
- name: Notify slack of all status
uses: pullreminders/slack-action@master
with:
args: '{\"channel\":\"CFYR62BRC\",\"text\":\"${{steps.extract_label.outputs.value}} ${{job.status}}\"}'
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
if: always()
copy-static:
needs: [prepare]
name: "[${{ needs.prepare.outputs.branch }}] Copy static files"
runs-on: ubuntu-latest
steps:
- name: "Set environment"
env:
BRANCH: ${{ needs.prepare.outputs.branch }}
run: |
if [[ ${BRANCH} == 'master' ]]; then
echo "ENVIRONMENT=release" >> $GITHUB_ENV
echo "MIXPANEL_PROJECT_TOKEN=${{ secrets.MIXPANEL_PROJECT_TOKEN_RELEASE }}" >> $GITHUB_ENV
echo "GOOGLE_CLOUD_SERVICE_ACCOUNT_KEY=${{ secrets.GOOGLE_CLOUD_SERVICE_ACCOUNT_JSON_KEY }}" >> $GITHUB_ENV
echo "STORAGE_BUCKET=ji-cloud-frontend-origin-eu-001" >> $GITHUB_ENV
else
echo "ENVIRONMENT=sandbox" >> $GITHUB_ENV
echo "MIXPANEL_PROJECT_TOKEN=${{ secrets.MIXPANEL_PROJECT_TOKEN_SANDBOX }}" >> $GITHUB_ENV
echo "GOOGLE_CLOUD_SERVICE_ACCOUNT_KEY=${{ secrets.GOOGLE_CLOUD_SERVICE_ACCOUNT_JSON_KEY_SANDBOX }}" >> $GITHUB_ENV
echo "STORAGE_BUCKET=ji-cloud-sandbox-frontend-origin-eu-001" >> $GITHUB_ENV
fi
- uses: actions/checkout@v3
- name: Extract label
shell: bash
run: echo "value=\"[${{needs.prepare.outputs.branch}} - copy-static]\"" >> $GITHUB_OUTPUT
id: extract_label
- name: Notify slack
uses: pullreminders/slack-action@master
with:
args: '{\"channel\":\"CFYR62BRC\",\"text\":\"${{steps.extract_label.outputs.value}} starting...\"}'
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
- id: 'auth'
uses: 'google-github-actions/auth@v1'
with:
credentials_json: '${{ env.GOOGLE_CLOUD_SERVICE_ACCOUNT_KEY }}'
- name: install google cloud sdk
uses: google-github-actions/setup-gcloud@v1
- name: deploy to google cloud
run: gsutil -m rsync -d -r frontend/apps/static gs://${{ env.STORAGE_BUCKET }}/static
- name: Notify slack of all status
uses: pullreminders/slack-action@master
with:
args: '{\"channel\":\"CFYR62BRC\",\"text\":\"${{steps.extract_label.outputs.value}} ${{job.status}}\"}'
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
if: always()
test:
needs: [prepare]
name: "[${{ needs.prepare.outputs.branch }}] Test"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Extract label
shell: bash
run: echo "value=\"[${{needs.prepare.outputs.branch}} - test - elements]\"" >> $GITHUB_OUTPUT
id: extract_label
- name: Notify slack
uses: pullreminders/slack-action@master
with:
args: '{\"channel\":\"CFYR62BRC\",\"text\":\"${{steps.extract_label.outputs.value}} starting...\"}'
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
- name: install node
uses: actions/setup-node@v3
with:
node-version: '16'
- name: install npm deps
run: npm ci
working-directory: "./frontend/elements"
env:
FONTAWESOME_NPM_AUTH_TOKEN: ${{ secrets.FONTAWESOME_NPM_AUTH_TOKEN }}
- name: test elements
run: npm run test
working-directory: "./frontend/elements"
env:
FONTAWESOME_NPM_AUTH_TOKEN: ${{ secrets.FONTAWESOME_NPM_AUTH_TOKEN }}
- name: Notify slack of all status
uses: pullreminders/slack-action@master
with:
args: '{\"channel\":\"CFYR62BRC\",\"text\":\"${{steps.extract_label.outputs.value}} ${{job.status}}\"}'
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
if: always()
build-module-elements:
runs-on: ubuntu-latest
name: "[${{ needs.prepare.outputs.branch }}] Build - Module - Elements (${{matrix.app}}, ${{matrix.mode}})"
needs: [prepare, test]
strategy:
matrix:
app: [poster, video, embed, tapping-board, drag-drop, memory, matching, flashcards, card-quiz, cover, resource-cover, find-answer, legacy]
mode: [edit, play]
steps:
- name: "Set environment"
env:
BRANCH: ${{ needs.prepare.outputs.branch }}
run: |
if [[ ${BRANCH} == 'master' ]]; then
echo "ENVIRONMENT=release" >> $GITHUB_ENV
echo "GOOGLE_CLOUD_SERVICE_ACCOUNT_KEY=${{ secrets.GOOGLE_CLOUD_SERVICE_ACCOUNT_JSON_KEY }}" >> $GITHUB_ENV
echo "STORAGE_BUCKET=ji-cloud-frontend-origin-eu-001" >> $GITHUB_ENV
else
echo "ENVIRONMENT=sandbox" >> $GITHUB_ENV
echo "GOOGLE_CLOUD_SERVICE_ACCOUNT_KEY=${{ secrets.GOOGLE_CLOUD_SERVICE_ACCOUNT_JSON_KEY_SANDBOX }}" >> $GITHUB_ENV
echo "STORAGE_BUCKET=ji-cloud-sandbox-frontend-origin-eu-001" >> $GITHUB_ENV
fi
- uses: actions/checkout@v3
- name: Extract label
shell: bash
run: echo "value=\"[${{needs.prepare.outputs.branch}} - module/${{ matrix.app }}/${{ matrix.mode }} - elements]\"" >> $GITHUB_OUTPUT
id: extract_label
- name: Notify slack
uses: pullreminders/slack-action@master
with:
args: '{\"channel\":\"CFYR62BRC\",\"text\":\"${{steps.extract_label.outputs.value}} starting...\"}'
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
- name: install node
uses: actions/setup-node@v3
with:
node-version: '16'
- name: install npm deps
run: npm ci
working-directory: "./frontend/elements"
env:
FONTAWESOME_NPM_AUTH_TOKEN: ${{ secrets.FONTAWESOME_NPM_AUTH_TOKEN }}
- name: build elements
run: npm run build:${{ env.ENVIRONMENT }}
working-directory: "./frontend/elements"
env:
APP_NAME: "module/${{ matrix.app }}/${{ matrix.mode }}"
FONTAWESOME_NPM_AUTH_TOKEN: ${{ secrets.FONTAWESOME_NPM_AUTH_TOKEN }}
- id: 'auth'
uses: 'google-github-actions/auth@v1'
with:
credentials_json: '${{ env.GOOGLE_CLOUD_SERVICE_ACCOUNT_KEY }}'
- name: install google cloud sdk
uses: google-github-actions/setup-gcloud@v1
- name: deploy to google cloud
run: gsutil -m rsync -d -r frontend/elements/dist/module/${{ matrix.app }}/${{ matrix.mode }} gs://${{ env.STORAGE_BUCKET }}/module/${{ matrix.app }}/${{ matrix.mode }}/elements
- name: Notify slack of all status
uses: pullreminders/slack-action@master
with:
args: '{\"channel\":\"CFYR62BRC\",\"text\":\"${{steps.extract_label.outputs.value}} ${{job.status}}\"}'
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
if: always()
build-entry-elements:
needs: [prepare, test]
name: "[${{ needs.prepare.outputs.branch }}] Build - Entry - Elements (${{matrix.app}})"
runs-on: ubuntu-latest
strategy:
matrix:
app: [admin, home, asset/edit, asset/play, community, user, kids]
steps:
- name: "Set environment"
env:
BRANCH: ${{ needs.prepare.outputs.branch }}
run: |
if [[ ${BRANCH} == 'master' ]]; then
echo "ENVIRONMENT=release" >> $GITHUB_ENV
echo "GOOGLE_CLOUD_SERVICE_ACCOUNT_KEY=${{ secrets.GOOGLE_CLOUD_SERVICE_ACCOUNT_JSON_KEY }}" >> $GITHUB_ENV
echo "STORAGE_BUCKET=ji-cloud-frontend-origin-eu-001" >> $GITHUB_ENV
else
echo "ENVIRONMENT=sandbox" >> $GITHUB_ENV
echo "GOOGLE_CLOUD_SERVICE_ACCOUNT_KEY=${{ secrets.GOOGLE_CLOUD_SERVICE_ACCOUNT_JSON_KEY_SANDBOX }}" >> $GITHUB_ENV
echo "STORAGE_BUCKET=ji-cloud-sandbox-frontend-origin-eu-001" >> $GITHUB_ENV
fi
- uses: actions/checkout@v3
- name: Extract label
shell: bash
run: echo "value=\"[${{needs.prepare.outputs.branch}} - module/${{ matrix.app }} - elements]\"" >> $GITHUB_OUTPUT
id: extract_label
- name: Notify slack
uses: pullreminders/slack-action@master
with:
args: '{\"channel\":\"CFYR62BRC\",\"text\":\"${{steps.extract_label.outputs.value}} starting...\"}'
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
- name: install node
uses: actions/setup-node@v3
with:
node-version: '16'
- name: install npm deps
run: npm ci
working-directory: "./frontend/elements"
env:
FONTAWESOME_NPM_AUTH_TOKEN: ${{ secrets.FONTAWESOME_NPM_AUTH_TOKEN }}
- name: build elements
run: npm run build:${{ env.ENVIRONMENT }}
working-directory: "./frontend/elements"
env:
APP_NAME: "${{ matrix.app }}"
FONTAWESOME_NPM_AUTH_TOKEN: ${{ secrets.FONTAWESOME_NPM_AUTH_TOKEN }}
- id: 'auth'
uses: 'google-github-actions/auth@v1'
with:
credentials_json: '${{ env.GOOGLE_CLOUD_SERVICE_ACCOUNT_KEY }}'
- name: install google cloud sdk
uses: google-github-actions/setup-gcloud@v1
- name: deploy to google cloud
run: gsutil -m rsync -d -r frontend/elements/dist/${{ matrix.app }} gs://${{ env.STORAGE_BUCKET }}/${{ matrix.app }}/elements
- name: Notify slack of all status
uses: pullreminders/slack-action@master
with:
args: '{\"channel\":\"CFYR62BRC\",\"text\":\"${{steps.extract_label.outputs.value}} ${{job.status}}\"}'
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
if: always()