chore: improve cors handling using new h3 util (#2238) #11183
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: CD Azure | |
on: | |
push: | |
branches: | |
- main | |
permissions: | |
pull-requests: write | |
id-token: write | |
jobs: | |
build_and_deploy: | |
name: Build & Deploy to ${{ matrix.environment }} | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- environment: Test | |
url: https://dev.www.jabref.org | |
deployment_environment: dev | |
- environment: Staging | |
url: https://staging.www.jabref.org | |
deployment_environment: staging | |
- environment: Production | |
url: https://www.jabref.org | |
deployment_environment: default | |
environment: | |
name: ${{ matrix.environment }} | |
url: ${{ matrix.url }} | |
env: | |
DATABASE_URL: ${{ matrix.environment == 'Test' && secrets.AZURE_TEST_DATABASE_URL || secrets.AZURE_DATABASE_URL }} | |
GITHUB_REPO_TOKEN: ${{ secrets.GITHUBS_REPO_TOKEN }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3.6.0 | |
- name: Setup Node.js | |
uses: actions/setup-node@v3.8.1 | |
with: | |
node-version: 20 | |
cache: 'yarn' | |
- name: Install dependencies | |
run: yarn install | |
- name: Reset Test database on Azure | |
if: matrix.environment == 'Test' | |
run: yarn prisma:migrate:reset --force | |
- name: Update Production database on Azure | |
if: matrix.environment == 'Staging' | |
run: yarn prisma:migrate:deploy | |
- name: Build | |
run: yarn build:azure | |
- name: Login to Azure | |
uses: Azure/login@v1 | |
with: | |
client-id: ${{ secrets.AZURE_CLIENT_ID }} | |
tenant-id: ${{ secrets.AZURE_TENANT_ID }} | |
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} | |
- name: Deploy Web App | |
run: | | |
# Delete old deployment (otherwise we get a spawn EBUSY error when running the workflow again) | |
az staticwebapp environment delete --name jabref-online --environment-name ${{ matrix.deployment_environment }} --yes || true | |
yarn swa deploy .output\public --env ${{ matrix.deployment_environment }} | |
env: | |
SWA_CLI_DEPLOYMENT_TOKEN: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_MANGO_PEBBLE_0224C3803 }} | |
- name: Install Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' | |
- name: Create & Link Function App | |
run: | | |
pip install azure-identity azure-mgmt-web azure-mgmt-storage azure-mgmt-applicationinsights azure-mgmt-redis azure-mgmt-communication | |
python .github\scripts\deploy.py --env ${{ matrix.deployment_environment }} | |
env: | |
SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }} | |
AZURE_SESSION_SECRET: ${{ secrets.AZURE_SESSION_SECRET }} | |
- name: Deploy Function App | |
run: | | |
Compress-Archive -Path .output\server\* -DestinationPath .output\server.zip | |
az functionapp deployment source config-zip -g JabRefOnline -n jabref-function-${{ matrix.deployment_environment }} --src .output\server.zip | |
- name: Check HTTP status | |
run: | | |
Start-Sleep -Seconds 30 | |
curl -s -w 'Establish Connection: %{time_connect}s\nTTFB: %{time_starttransfer}s\nTotal: %{time_total}s\n' ${{ matrix.url }} || true | |
curl -s -w 'Establish Connection: %{time_connect}s\nTTFB: %{time_starttransfer}s\nTotal: %{time_total}s\n' ${{ matrix.url }}/api || true | |
# The api returns 400 status code for some reason | |
# with: | |
# url: ${{ matrix.url }}/api | |
# code: 200 | |
# timeout: 300 # initial warm up can take quite some time | |
# interval: 30 | |
- name: Run API tests | |
run: yarn test:api | |
env: | |
TEST_URL: ${{ matrix.url }} |