chore: Bump the graphql group with 7 updates #10776
Workflow file for this run
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 | |
pull_request_target: | |
types: [opened, synchronize, reopened, closed, labeled] | |
branches: | |
- main | |
permissions: | |
pull-requests: write | |
id-token: write | |
jobs: | |
pr_preview: | |
name: Build & Deploy to PR preview | |
runs-on: windows-latest | |
if: github.event_name == 'pull_request_target' && github.event.action != 'closed' | |
env: | |
DATABASE_URL: ${{ format(secrets.AZURE_PR_DATABASE_URL, github.event.pull_request.number) }} | |
GITHUB_REPO_TOKEN: ${{ secrets.GITHUBS_REPO_TOKEN }} | |
steps: | |
# We could also add these checks to the above if condition, to skip the workflow if its unsecure to run. | |
# However, Github views skipped workflows as "successful" and thus one could merge a PR without running this workflow first. | |
- name: Fail if unsecure | |
if: "!contains(github.event.pull_request.labels.*.name, 'status: safe to test') && github.actor != 'tobiasdiez'" | |
run: exit 1 | |
- name: Checkout | |
uses: actions/[email protected] | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Setup Node.js | |
uses: actions/[email protected] | |
with: | |
node-version: 18 | |
cache: 'yarn' | |
- name: Build | |
run: | | |
yarn install | |
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 | |
id: deploy_web | |
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 ${{ github.event.pull_request.number }} --yes || true | |
# Workaround for https://github.com/Azure/static-web-apps-cli/issues/557 and https://github.com/Azure/static-web-apps-cli/issues/565 | |
$output = yarn swa deploy .output\public --env ${{ github.event.pull_request.number }} --verbose=silly 2>&1 | Out-String | |
Write-Host $output | |
$match = $output | Select-String -Pattern 'Project deployed to (?<url>.*) ' | |
if ($match -eq $null) { exit 1 } | |
$url = $match.Matches[0].Groups['url'].Value | |
echo "url=$url" >> $env:GITHUB_OUTPUT | |
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 test database on Azure | |
run: | | |
$name = "postgres_test_${{ github.event.pull_request.number }}" | |
az postgres flexible-server db create --server-name jabrefdb --resource-group JabRefOnline --database-name $name --charset utf8 --collation en_US.utf8 | |
$pwd = az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken | |
# For some reason the public schema is not created automatically, so we need to do it manually | |
# We also need to manually install an old version of rdbms due to https://github.com/Azure/azure-cli/issues/25067 | |
az extension add --name rdbms-connect --version 1.0.3 --debug | |
az postgres flexible-server execute --name jabrefdb -u "Github" -p "$pwd" --database-name $name -q "GRANT CREATE ON DATABASE $name TO azure_pg_admin; create schema public;" --output table | |
yarn prisma:migrate:reset --force | |
- 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 ${{ github.event.pull_request.number }} | |
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-${{ github.event.pull_request.number }} --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' ${{ steps.deploy_web.outputs.url }} || true | |
curl -s -w 'Establish Connection: %{time_connect}s\nTTFB: %{time_starttransfer}s\nTotal: %{time_total}s\n' ${{ steps.deploy_web.outputs.url }}/api || true | |
# The api returns 400 status code for some reason | |
# uses: gerdemann/[email protected] | |
# with: | |
# url: ${{ steps.deploy_web.outputs.url }}/api | |
# code: 200 | |
# timeout: 300 # initial warm up can take quite some time | |
# interval: 30 | |
- name: Report URL as PR comment | |
uses: marocchino/sticky-pull-request-comment@v2 | |
with: | |
message: | | |
Deployed ${{ github.sha }} to ${{ steps.deploy_web.outputs.url }} | |
- name: Run API tests | |
run: yarn test:api | |
env: | |
TEST_URL: ${{ steps.deploy_web.outputs.url }} | |
build_and_deploy: | |
name: Build & Deploy to ${{ matrix.environment }} | |
runs-on: windows-latest | |
if: github.event_name == 'push' | |
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/[email protected] | |
- name: Setup Node.js | |
uses: actions/[email protected] | |
with: | |
node-version: 18 | |
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 }} | |
close_pr_preview: | |
name: Close PR preview | |
if: github.event_name == 'pull_request_target' && github.event.action == 'closed' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Delete WebApp environment | |
uses: Azure/static-web-apps-deploy@v1 | |
with: | |
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_MANGO_PEBBLE_0224C3803 }} | |
action: 'close' | |
- 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: Delete Function App | |
run: az functionapp delete --name jabref-function-${{ github.event.pull_request.number }} --resource-group JabRefOnline | |
- name: Delete test database | |
run: az postgres flexible-server db delete --server-name jabrefdb --resource-group JabRefOnline --database-name postgres_test_${{ github.event.pull_request.number }} -y |