Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/main' into fixHyerlinksCuzrsor
Browse files Browse the repository at this point in the history
* upstream/main: (31 commits)
  chore: add progress bar to journal data update script (#2182)
  chore: Bump pinia from 2.1.4 to 2.1.6 (#2153)
  chore: Bump concurrently from 8.2.0 to 8.2.1 (#2200)
  chore: Bump the vue group with 7 updates (#2212)
  chore: Bump @yaireo/tagify and @types/yaireo__tagify (#2195)
  chore: Bump the eslint group with 3 updates (#2218)
  chore: replace last patch-package patch by yarn patch (#2224)
  chore: split deploy workflow (#2223)
  chore: enable organize-imports prettier plugin (#2220)
  chore: extend nuxt dependabot group by zod and ufo (#2221)
  chore: Bump the vitest group with 3 updates (#2210)
  chore: Bump autoprefixer from 10.4.14 to 10.4.15 (#2198)
  chore: Bump the prisma group with 2 updates (#2190)
  chore: Bump the prettier group with 2 updates (#2206)
  chore: Bump redis from 4.6.7 to 4.6.8 (#2191)
  chore: Bump typescript from 5.1.6 to 5.2.2 (#2197)
  chore: Bump the graphql group with 9 updates (#2217)
  chore: Bump the types group with 3 updates (#2213)
  chore: Bump actions/checkout from 3.5.3 to 3.6.0 (#2186)
  chore: fix version regex (#2216)
  ...

# Conflicts:
#	.github/workflows/deploy.yml
  • Loading branch information
Siedlerchr committed Sep 4, 2023
2 parents 00e7c05 + f4fa6ea commit 2afc46c
Show file tree
Hide file tree
Showing 48 changed files with 1,606 additions and 1,121 deletions.
26 changes: 20 additions & 6 deletions .eslintrc.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ module.exports = {
},
extends: [
'@nuxtjs/eslint-config-typescript',
// Enable typescript-specific recommended rules
'plugin:@typescript-eslint/recommended',
'plugin:nuxt/recommended',
// Turns off all rules that are unnecessary or might conflict with Prettier (needs to be last)
'prettier',
Expand Down Expand Up @@ -81,19 +79,35 @@ module.exports = {
parser: '@typescript-eslint/parser',
// Correct root
tsconfigRootDir: __dirname,
// Path to tsconfig to enable rules that require type information
project: './tsconfig.json',
// Enable rules that require type information
project: true,
// Correctly handle vue files
extraFileExtensions: ['.vue'],
},
extends: [
// Enable recommended rules for typescript that use typing information (may be CPU intensive)
'plugin:@typescript-eslint/recommended-requiring-type-checking',
// Enable typescript-specific stylistic rules
'plugin:@typescript-eslint/stylistic-type-checked',
// Enable strict rules for typescript that use typing information (may be CPU intensive)
'plugin:@typescript-eslint/strict-type-checked',
],
rules: {
// The graphql processor disables the vue processor, so some rules need to be disenabled
// TODO: Remove this once https://github.com/eslint/eslint/issues/14745 is fixed and we can use multiple processors
'vue/comment-directive': 'off',
// Allow any type (for now)
'@typescript-eslint/no-explicit-any': 'warn',
// TODO: Remove this once all errors are fixed
'@typescript-eslint/no-unsafe-call': 'warn',
// TODO: Remove this once all errors are fixed
'@typescript-eslint/no-unsafe-member-access': 'warn',
// TODO: Remove this once all errors are fixed
'@typescript-eslint/no-unsafe-argument': 'warn',
// TODO: Remove this once all errors are fixed
'@typescript-eslint/no-unsafe-return': 'warn',
// TODO: Remove this once all errors are fixed
'@typescript-eslint/no-unsafe-assignment': 'warn',
// TODO: Remove this once all errors are fixed
'@typescript-eslint/no-redundant-type-constituents': 'warn',
},
},
{
Expand Down
16 changes: 16 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,18 +38,34 @@ updates:
patterns:
- 'storybook'
- '@storybook/*'
- 'chromatic'
nuxt:
patterns:
- 'nuxt'
- 'nuxt-*'
- '@nuxt/*'
- '@nuxtjs/*'
- 'pinia'
- '@pinia/nuxt'
- '@bg-dev/nuxt-naiveui'
- 'vee-validate'
- '@vee-validate/nuxt'
- '@vee-validate/zod'
- 'zod'
- 'ufo'
vue:
patterns:
- 'vue'
- '@vue/*'
- 'vue-*'
- 'unplugin-vue-components'
- '@vueuse/core'
- '@he-tree/vue'
- '@tailwindcss/forms'
prisma:
patterns:
- 'prisma'
- '@prisma/*'
types:
patterns:
- '@types/*'
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v3.5.3
uses: actions/checkout@v3.6.0
with:
fetch-depth: 0

- name: Setup Node.js
uses: actions/setup-node@v3.7.0
uses: actions/setup-node@v3.8.1
with:
node-version: 16
cache: 'yarn'
Expand Down Expand Up @@ -82,12 +82,12 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v3.5.3
uses: actions/checkout@v3.6.0
with:
fetch-depth: 0

- name: Setup Node.js
uses: actions/setup-node@v3.7.0
uses: actions/setup-node@v3.8.1
with:
node-version: ${{ matrix.node }}
cache: 'yarn'
Expand Down
37 changes: 37 additions & 0 deletions .github/workflows/deploy-preview-close.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: CD Azure (close preview)

on:
pull_request_target:
types: [closed]
branches:
- main

permissions:
pull-requests: write
id-token: write

jobs:
close_pr_preview:
name: Close PR preview

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
137 changes: 137 additions & 0 deletions .github/workflows/deploy-preview.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
name: CD Azure (preview)

on:
pull_request_target:
types: [opened, synchronize, reopened, labeled]
branches:
- main
workflow_dispatch:
inputs:
preview_name:
description: 'Name of the deployment environment'
type: string
required: true

permissions:
pull-requests: write
id-token: write

jobs:
preview:
name: Build & Deploy to preview

runs-on: windows-latest

env:
PREVIEW_NAME: ${{ github.event.pull_request.number || github.event.inputs.preview_name }}
GITHUB_REPO_TOKEN: ${{ secrets.GITHUBS_REPO_TOKEN }}

steps:
# We could also add these checks to a job-wide 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: "github.event_name != 'workflow_dispatch' && !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 || github.ref }}

- 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 $env:PREVIEW_NAME --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 $env:PREVIEW_NAME --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_$env:PREVIEW_NAME"
$pwd = az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken
# az postgres flexible-server db create --server-name jabrefdb --resource-group JabRefOnline --database-name $name --charset utf8 --collation en_US.utf8
# For some reason the public schema is not created automatically or without the default permissions, so we need to do it manually
# TODO: Remove this workaround once https://github.com/Azure/azure-cli/issues/26772 is fixed
# 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 "ALTER DATABASE $name OWNER TO azure_pg_admin; create schema public;" --output table
# az postgres flexible-server execute --name jabrefdb -u "Github" -p "$pwd" --database-name $name -q "grant usage on schema public to public; grant create on schema public to public;" --output table
# az postgres flexible-server execute --name jabrefdb -u "Github" -p "$pwd" --database-name $name -q "SELECT schema_name FROM information_schema.schemata;" --output table
# Login to the database using the Github user
$connection_string = "postgresql://Github:$pwd@$($env:DB_NAME).postgres.database.azure.com:5432/$($name)?sslmode=require"
echo "::add-mask::$connection_string"
echo "DATABASE_URL=$connection_string" >> $env:GITHUB_ENV
$Env:DATABASE_URL = $connection_string
# Finally, run the migrations (this also creates the db)
yarn prisma:migrate:reset --force
env:
DB_NAME: ${{ secrets.AZURE_DATABASE_NAME }}

- 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 $env:PREVIEW_NAME
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-$env:PREVIEW_NAME --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
if: github.event_name == 'pull_request_target'
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 }}
Loading

0 comments on commit 2afc46c

Please sign in to comment.