Skip to content

fix(deps): update dependency @sinclair/typebox to ^0.34.4 #913

fix(deps): update dependency @sinclair/typebox to ^0.34.4

fix(deps): update dependency @sinclair/typebox to ^0.34.4 #913

name: PR-preview
# This action creates and updates an instance on Clever Cloud for all PRs that
# have the "cc-preview" label
on:
pull_request:
workflow_dispatch:
inputs:
restartApp:
description: "Restart the application"
required: false
default: "no"
env:
CLEVER_TOKEN: ${{ secrets.CLEVER_TOKEN }}
CLEVER_SECRET: ${{ secrets.CLEVER_SECRET }}
jobs:
app:
if:
contains(github.event.pull_request.labels.*.name, 'cc-preview') ||
github.event_name == 'workflow_dispatch'
environment: cc-preview
runs-on: ubuntu-latest
name: Create the app name and check of app already exists
outputs:
name: ${{ steps.name.outputs.name }}
exists: ${{ steps.exists.outputs.exists }}
steps:
- uses: actions/checkout@v3
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: "16.x"
- name: Keep npm cache around to speed up installs
uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.OS }}-build-${{ hashFiles('**/package-lock.json') }}
- name: Install NPM packages
run: npm ci
- name: Set app name
id: name
run:
echo "::set-output name=name::needs-assessment-storage-pr${{
github.event.pull_request.number }}"
- name: Check if preview exists
id: exists
run: |
npx clever link -o ${{ secrets.CLEVER_ORG }} ${{ steps.name.outputs.name }} \
&& echo "::set-output name=exists::true" \
|| echo "::set-output name=exists::false"
create:
if:
github.event.action != 'closed' &&
contains(github.event.pull_request.labels.*.name, 'cc-preview') &&
needs.app.outputs.exists == 'false'
runs-on: ubuntu-latest
environment: cc-preview
name: Create preview instance
needs:
- app
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0 # Needed for deploy
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: "16.x"
- name: Keep npm cache around to speed up installs
uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.OS }}-build-${{ hashFiles('**/package-lock.json') }}
- name: Install NPM packages
run: npm ci
- name: Create the application
run:
npx clever create -t node -o ${{ secrets.CLEVER_ORG }} ${{
needs.app.outputs.name }}
- name: Link application
run:
npx clever link -o ${{ secrets.CLEVER_ORG }} ${{
needs.app.outputs.name }}
- name: Enable dedicated build instance
run: npx clever scale --build-flavor M
- name: Force HTTPs
run: npx clever config set force-https true
- name: Determine endpoint
run:
echo "ENDPOINT=https://`npx clever domain | tr -d ' \n'`" >>
$GITHUB_ENV
- name: Configure Node.js application settings
run: |
npx clever env set CC_NODE_DEV_DEPENDENCIES install
npx clever env set CC_RUN_COMMAND 'npm run prod'
npx clever env set NODE_ENV production
npx clever env set ENDPOINT ${{ env.ENDPOINT }}
# Assume website is served from same URL
npx clever env set ORIGIN ${{ env.ENDPOINT }}
- name: Configure email settings
run: |
npx clever env set SMTP_FROM ${{ secrets.SMTP_FROM }} # e.g. [email protected]
npx clever env set SMTP_USER ${{ secrets.SMTP_USER }}
npx clever env set SMTP_PASSWORD ${{ secrets.SMTP_PASSWORD }}
npx clever env set SMTP_PORT ${{ secrets.SMTP_PORT }} # e.g. 587
npx clever env set SMTP_SECURE ${{ secrets.SMTP_SECURE }} # e.g. false
npx clever env set SMTP_SERVER ${{ secrets.SMTP_SERVER }} # e.g. relay-de.smtp.net
- name: Configure storage
run: |
npx clever env set CC_FS_BUCKET /storage:${{ secrets.STORAGE_BUCKET }}
- name: Deploy the application
run: npx clever deploy
- name: Add comment with preview URL to PR
run: |
curl \
-X POST \
${{ github.event.pull_request.comments_url }} \
-H "Content-Type: application/json" \
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
--data '{ "body": "Preview available on ${{ env.ENDPOINT }}" }'
update:
if:
github.event.action != 'closed' &&
contains(github.event.pull_request.labels.*.name, 'cc-preview') &&
needs.app.outputs.exists == 'true' || github.event_name ==
'workflow_dispatch'
runs-on: ubuntu-latest
environment: cc-preview
name: Update preview instance
needs:
- app
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0 # Needed for deploy
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: "16.x"
- name: Keep npm cache around to speed up installs
uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.OS }}-build-${{ hashFiles('**/package-lock.json') }}
- name: Install NPM packages
run: npm ci
- name: Link application
run:
npx clever link -o ${{ secrets.CLEVER_ORG }} ${{
needs.app.outputs.name }}
- name: Deploy the application
if: github.event.inputs.restartApp != 'yes'
run: npx clever deploy -f
- name: Restart the application
if: github.event.inputs.restartApp == 'yes'
run: npx clever restart
- name: Determine endpoint
run:
echo "ENDPOINT=https://`npx clever domain | tr -d ' \n'`" >>
$GITHUB_ENV
- name: Add comment with preview URL to PR
run: |
curl \
-X POST \
${{ github.event.pull_request.comments_url }} \
-H "Content-Type: application/json" \
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
--data '{ "body": "Preview updated on ${{ env.ENDPOINT }}" }'
delete:
if:
github.event.action == 'closed' &&
contains(github.event.pull_request.labels.*.name, 'cc-preview') &&
needs.app.outputs.exists == 'true'
runs-on: ubuntu-latest
environment: cc-preview
name: Delete preview instance
needs:
- app
steps:
- uses: actions/checkout@v3
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: "16.x"
- name: Keep npm cache around to speed up installs
uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.OS }}-build-${{ hashFiles('**/package-lock.json') }}
- name: Install NPM packages
run: npm ci
- name: Link application
run:
npx clever link -o ${{ secrets.CLEVER_ORG }} ${{
needs.app.outputs.name }}
- name: Delete application
run: npx clever delete -a ${{ needs.app.outputs.name }}
- name: Add comment with preview URL to PR
run: |
curl \
-X POST \
${{ github.event.pull_request.comments_url }} \
-H "Content-Type: application/json" \
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
--data '{ "body": "Preview instance deleted" }'