Skip to content

Commit 4774fbe

Browse files
authored
Merge branch 'staging' into feat/byok
2 parents 2a0bd5f + 56d815e commit 4774fbe

19 files changed

Lines changed: 415 additions & 383 deletions
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
name: Build and deploy backend
2+
3+
on:
4+
workflow_call:
5+
inputs:
6+
environment:
7+
required: true
8+
type: string # dev, stg, prd
9+
ref:
10+
required: true
11+
type: string # development, staging, main
12+
version_tag:
13+
required: true
14+
type: string # e.g. "development" or "v2.1.3"
15+
16+
jobs:
17+
build-backend-and-push:
18+
runs-on: ubuntu-latest
19+
permissions:
20+
contents: read
21+
packages: write
22+
outputs:
23+
IMAGE_TAG: ${{ steps.output.outputs.IMAGE_TAG }}
24+
PAPERDEBUGGER_IMAGE: ${{ steps.output.outputs.PAPERDEBUGGER_IMAGE }}
25+
steps:
26+
- name: Checkout repository
27+
uses: actions/checkout@v4
28+
with:
29+
ref: ${{ inputs.ref }}
30+
- name: Setup env
31+
run: |
32+
echo "MONOREPO_REVISION=$(git rev-parse HEAD | cut -c1-6)" >> $GITHUB_ENV
33+
echo "BRANCH_NAME=${{ inputs.version_tag }}" >> $GITHUB_ENV
34+
echo "VERSION=${{ inputs.version_tag }}" >> $GITHUB_ENV
35+
- name: Log in to the container registry
36+
uses: docker/login-action@v3
37+
with:
38+
registry: ghcr.io
39+
username: ${{ github.actor }}
40+
password: ${{ secrets.GITHUB_TOKEN }}
41+
- name: Build and push docker image
42+
run: |
43+
make all
44+
- id: output
45+
name: Output image tag
46+
run: |
47+
export IMAGE_TAG=${BRANCH_NAME}-${MONOREPO_REVISION}
48+
echo "IMAGE_TAG=${IMAGE_TAG}" >> $GITHUB_OUTPUT
49+
echo "PAPERDEBUGGER_IMAGE=ghcr.io/paperdebugger/sharelatex-paperdebugger:${IMAGE_TAG}" >> $GITHUB_OUTPUT
50+
51+
deploy-backend:
52+
needs: build-backend-and-push
53+
runs-on: ubuntu-latest
54+
permissions:
55+
contents: write
56+
steps:
57+
- name: Checkout repository
58+
uses: actions/checkout@v4
59+
with:
60+
ref: ${{ inputs.ref }}
61+
- name: Clone deploy repo
62+
run: |
63+
git clone https://${{ secrets.GH_PAT }}@github.com/paperdebugger/deploy.git ../deploy
64+
- name: Generate kubernetes manifests
65+
env:
66+
OPENAI_BASE_URL: ${{ inputs.environment == 'dev' && secrets.OPENAI_BASE_URL_DEV || inputs.environment == 'stg' && secrets.OPENAI_BASE_URL_STG || secrets.OPENAI_BASE_URL_PRD }}
67+
OPENAI_API_KEY: ${{ inputs.environment == 'dev' && secrets.OPENAI_API_KEY_DEV || inputs.environment == 'stg' && secrets.OPENAI_API_KEY_STG || secrets.OPENAI_API_KEY_PRD }}
68+
INFERENCE_BASE_URL: ${{ inputs.environment == 'dev' && secrets.INFERENCE_BASE_URL_DEV || inputs.environment == 'stg' && secrets.INFERENCE_BASE_URL_STG || secrets.INFERENCE_BASE_URL_PRD }}
69+
INFERENCE_API_KEY: ${{ inputs.environment == 'dev' && secrets.INFERENCE_API_KEY_DEV || inputs.environment == 'stg' && secrets.INFERENCE_API_KEY_STG || secrets.INFERENCE_API_KEY_PRD }}
70+
MCP_BASIC_KEY: ${{ inputs.environment == 'dev' && secrets.MCP_BASIC_KEY_DEV || inputs.environment == 'stg' && secrets.MCP_BASIC_KEY_STG || secrets.MCP_BASIC_KEY_PRD }}
71+
MCP_PAPERSCORE_KEY: ${{ inputs.environment == 'dev' && secrets.MCP_PAPERSCORE_KEY_DEV || inputs.environment == 'stg' && secrets.MCP_PAPERSCORE_KEY_STG || secrets.MCP_PAPERSCORE_KEY_PRD }}
72+
XTRAMCP_OPENAI_BASE_URL: ${{ inputs.environment == 'dev' && secrets.XTRAMCP_OPENAI_BASE_URL_DEV || inputs.environment == 'stg' && secrets.XTRAMCP_OPENAI_BASE_URL_STG || secrets.XTRAMCP_OPENAI_BASE_URL_PRD }}
73+
XTRAMCP_OPENAI_API_KEY: ${{ inputs.environment == 'dev' && secrets.XTRAMCP_OPENAI_API_KEY_DEV || inputs.environment == 'stg' && secrets.XTRAMCP_OPENAI_API_KEY_STG || secrets.XTRAMCP_OPENAI_API_KEY_PRD }}
74+
XTRAMCP_OPENREVIEW_BASE_URL: ${{ inputs.environment == 'dev' && secrets.XTRAMCP_OPENREVIEW_BASE_URL_DEV || inputs.environment == 'stg' && secrets.XTRAMCP_OPENREVIEW_BASE_URL_STG || secrets.XTRAMCP_OPENREVIEW_BASE_URL_PRD }}
75+
XTRAMCP_OPENREVIEW_USERNAME: ${{ inputs.environment == 'dev' && secrets.XTRAMCP_OPENREVIEW_USERNAME_DEV || inputs.environment == 'stg' && secrets.XTRAMCP_OPENREVIEW_USERNAME_STG || secrets.XTRAMCP_OPENREVIEW_USERNAME_PRD }}
76+
XTRAMCP_OPENREVIEW_PASSWORD: ${{ inputs.environment == 'dev' && secrets.XTRAMCP_OPENREVIEW_PASSWORD_DEV || inputs.environment == 'stg' && secrets.XTRAMCP_OPENREVIEW_PASSWORD_STG || secrets.XTRAMCP_OPENREVIEW_PASSWORD_PRD }}
77+
XTRAMCP_CROSSREF_EMAIL_ADDRESS: ${{ inputs.environment == 'dev' && secrets.XTRAMCP_CROSSREF_EMAIL_ADDRESS_DEV || inputs.environment == 'stg' && secrets.XTRAMCP_CROSSREF_EMAIL_ADDRESS_STG || secrets.XTRAMCP_CROSSREF_EMAIL_ADDRESS_PRD }}
78+
XTRAMCP_DOI_EMAIL_ADDRESS: ${{ inputs.environment == 'dev' && secrets.XTRAMCP_DOI_EMAIL_ADDRESS_DEV || inputs.environment == 'stg' && secrets.XTRAMCP_DOI_EMAIL_ADDRESS_STG || secrets.XTRAMCP_DOI_EMAIL_ADDRESS_PRD }}
79+
XTRAMCP_ACL_METADATA_DB_URL: ${{ inputs.environment == 'dev' && secrets.XTRAMCP_ACL_METADATA_DB_URL_DEV || inputs.environment == 'stg' && secrets.XTRAMCP_ACL_METADATA_DB_URL_STG || secrets.XTRAMCP_ACL_METADATA_DB_URL_PRD }}
80+
XTRAMCP_ARXIV_METADATA_DB_URL: ${{ inputs.environment == 'dev' && secrets.XTRAMCP_ARXIV_METADATA_DB_URL_DEV || inputs.environment == 'stg' && secrets.XTRAMCP_ARXIV_METADATA_DB_URL_STG || secrets.XTRAMCP_ARXIV_METADATA_DB_URL_PRD }}
81+
XTRAMCP_MONGO_URI: ${{ inputs.environment == 'dev' && secrets.XTRAMCP_MONGO_URI_DEV || inputs.environment == 'stg' && secrets.XTRAMCP_MONGO_URI_STG || secrets.XTRAMCP_MONGO_URI_PRD }}
82+
MONGO_URI: ${{ inputs.environment == 'dev' && secrets.MONGO_URI_DEV || inputs.environment == 'stg' && secrets.MONGO_URI_STG || secrets.MONGO_URI_PRD }}
83+
GHCR_DOCKER_CONFIG: ${{ inputs.environment == 'dev' && secrets.GHCR_DOCKER_CONFIG_DEV || inputs.environment == 'stg' && secrets.GHCR_DOCKER_CONFIG_STG || secrets.GHCR_DOCKER_CONFIG_PRD }}
84+
CLOUDFLARE_TUNNEL_TOKEN: ${{ inputs.environment == 'dev' && secrets.CLOUDFLARE_TUNNEL_TOKEN_DEV || inputs.environment == 'stg' && secrets.CLOUDFLARE_TUNNEL_TOKEN_STG || secrets.CLOUDFLARE_TUNNEL_TOKEN_PRD }}
85+
run: |
86+
export PAPERDEBUGGER_IMAGE=${{ needs.build-backend-and-push.outputs.PAPERDEBUGGER_IMAGE }}
87+
mkdir -p ../deploy/${{ inputs.environment }}
88+
./hack/${{ inputs.environment }}.sh > ../deploy/${{ inputs.environment }}/paperdebugger.yaml
89+
- name: Push changes to deploy repo
90+
run: |
91+
export IMAGE_TAG=${{ needs.build-backend-and-push.outputs.IMAGE_TAG }}
92+
cd ../deploy
93+
git config --global user.name "github-actions[bot]"
94+
git config --global user.email "github-actions[bot]@users.noreply.github.com"
95+
git add ${{ inputs.environment }}/paperdebugger.yaml
96+
git diff --staged --quiet || git commit -m "chore: update paperdebugger ${{ inputs.environment }}, revision ${IMAGE_TAG}"
97+
git push

.github/workflows/_build-ext.yml

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
name: Build and publish Chrome extension
2+
3+
on:
4+
workflow_call:
5+
inputs:
6+
environment:
7+
required: true
8+
type: string # stg, prd
9+
ref:
10+
required: true
11+
type: string # staging, main
12+
extension_id:
13+
required: true
14+
type: string
15+
16+
jobs:
17+
build-chrome-extension:
18+
runs-on: ubuntu-latest
19+
steps:
20+
- name: Checkout code
21+
uses: actions/checkout@v4
22+
with:
23+
ref: ${{ inputs.ref }}
24+
fetch-depth: 0
25+
26+
- name: Setup node
27+
uses: actions/setup-node@v4
28+
with:
29+
node-version: lts/*
30+
31+
- name: Build
32+
run: |
33+
export GRAFANA_API_KEY=${{ secrets.GRAFANA_API_KEY }}
34+
cd webapp/_webapp
35+
npm install
36+
npm run build:${{ inputs.environment }}:chrome
37+
38+
- name: Upload artifacts
39+
uses: actions/upload-artifact@v4
40+
with:
41+
name: paperdebugger-chrome-extension-${{ inputs.environment }}
42+
path: webapp/_webapp/dist
43+
44+
push-to-chrome-web-store:
45+
runs-on: ubuntu-latest
46+
needs: build-chrome-extension
47+
steps:
48+
- name: Install zip
49+
run: |
50+
sudo apt-get update && sudo apt-get install -y zip
51+
52+
- name: Download artifacts
53+
uses: actions/download-artifact@v4
54+
with:
55+
name: paperdebugger-chrome-extension-${{ inputs.environment }}
56+
path: dist
57+
58+
- name: Zip extension files
59+
run: |
60+
zip -r dist.zip dist/*
61+
62+
- name: Upload to Chrome Web Store (upload only)
63+
uses: mobilefirstllc/cws-publish@latest
64+
with:
65+
action: 'upload'
66+
client_id: ${{ secrets.CHROME_EXT_CLIENT_ID }}
67+
client_secret: ${{ secrets.CHROME_EXT_CLIENT_SECRET }}
68+
refresh_token: ${{ secrets.CHROME_EXT_REFRESH_TOKEN }}
69+
extension_id: ${{ inputs.extension_id }}
70+
zip_file: 'dist.zip'

.github/workflows/build-backend-dev.yml

Lines changed: 11 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -4,84 +4,15 @@ on:
44
branches:
55
- development
66

7-
jobs:
8-
build-backend-and-push:
9-
runs-on: ubuntu-latest
10-
permissions:
11-
contents: read
12-
packages: write
13-
outputs:
14-
IMAGE_TAG: ${{ steps.output.outputs.IMAGE_TAG }}
15-
PAPERDEBUGGER_IMAGE: ${{ steps.output.outputs.PAPERDEBUGGER_IMAGE }}
16-
steps:
17-
- name: Checkout repository
18-
uses: actions/checkout@v4
19-
with:
20-
ref: development
21-
- name: Setup env
22-
run: |
23-
echo "MONOREPO_REVISION=$(git rev-parse HEAD | cut -c1-6)" >> $GITHUB_ENV
24-
echo "BRANCH_NAME=development" >> $GITHUB_ENV
25-
echo "VERSION=development" >> $GITHUB_ENV
26-
- name: Log in to the container registry
27-
uses: docker/login-action@v3
28-
with:
29-
registry: ghcr.io
30-
username: ${{ github.actor }}
31-
password: ${{ secrets.GITHUB_TOKEN }}
32-
- name: Build and push docker image
33-
run: |
34-
make all
35-
- id: output
36-
name: Output image tag
37-
run: |
38-
export IMAGE_TAG=${BRANCH_NAME}-${MONOREPO_REVISION}
39-
echo "IMAGE_TAG=${IMAGE_TAG}" >> $GITHUB_OUTPUT
40-
echo "PAPERDEBUGGER_IMAGE=ghcr.io/paperdebugger/sharelatex-paperdebugger:${IMAGE_TAG}" >> $GITHUB_OUTPUT
7+
permissions:
8+
contents: write
9+
packages: write
4110

42-
deploy-backend:
43-
needs: build-backend-and-push
44-
runs-on: ubuntu-latest
45-
permissions:
46-
contents: write
47-
steps:
48-
- name: Checkout repository
49-
uses: actions/checkout@v4
50-
with:
51-
ref: development
52-
- name: Clone deploy repo
53-
run: |
54-
git clone https://${{ secrets.GH_PAT }}@github.com/paperdebugger/deploy.git ../deploy
55-
- name: Generate kubernetes manifests
56-
env:
57-
OPENAI_BASE_URL: ${{ secrets.OPENAI_BASE_URL_DEV }}
58-
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY_DEV }}
59-
INFERENCE_BASE_URL: ${{ secrets.INFERENCE_BASE_URL_DEV }}
60-
INFERENCE_API_KEY: ${{ secrets.INFERENCE_API_KEY_DEV }}
61-
MCP_BASIC_KEY: ${{ secrets.MCP_BASIC_KEY_DEV }}
62-
MCP_PAPERSCORE_KEY: ${{ secrets.MCP_PAPERSCORE_KEY_DEV }}
63-
XTRAMCP_OPENAI_BASE_URL: ${{ secrets.XTRAMCP_OPENAI_BASE_URL_DEV }}
64-
XTRAMCP_OPENAI_API_KEY: ${{ secrets.XTRAMCP_OPENAI_API_KEY_DEV }}
65-
XTRAMCP_OPENREVIEW_BASE_URL: ${{ secrets.XTRAMCP_OPENREVIEW_BASE_URL_DEV }}
66-
XTRAMCP_OPENREVIEW_USERNAME: ${{ secrets.XTRAMCP_OPENREVIEW_USERNAME_DEV }}
67-
XTRAMCP_OPENREVIEW_PASSWORD: ${{ secrets.XTRAMCP_OPENREVIEW_PASSWORD_DEV }}
68-
XTRAMCP_CROSSREF_EMAIL_ADDRESS: ${{ secrets.XTRAMCP_CROSSREF_EMAIL_ADDRESS_DEV }}
69-
XTRAMCP_DOI_EMAIL_ADDRESS: ${{ secrets.XTRAMCP_DOI_EMAIL_ADDRESS_DEV }}
70-
XTRAMCP_ARXIV_METADATA_DB_URL: ${{ secrets.XTRAMCP_ARXIV_METADATA_DB_URL_DEV }}
71-
XTRAMCP_MONGO_URI: ${{ secrets.XTRAMCP_MONGO_URI_DEV }}
72-
MONGO_URI: ${{ secrets.MONGO_URI_DEV }}
73-
GHCR_DOCKER_CONFIG: ${{ secrets.GHCR_DOCKER_CONFIG_DEV }}
74-
CLOUDFLARE_TUNNEL_TOKEN: ${{ secrets.CLOUDFLARE_TUNNEL_TOKEN_DEV }}
75-
run: |
76-
export PAPERDEBUGGER_IMAGE=${{ needs.build-backend-and-push.outputs.PAPERDEBUGGER_IMAGE }}
77-
mkdir -p ../deploy/dev
78-
./hack/dev.sh > ../deploy/dev/paperdebugger.yaml
79-
- name: Push changes to deploy repo
80-
run: |
81-
export IMAGE_TAG=${{ needs.build-backend-and-push.outputs.IMAGE_TAG }}
82-
cd ../deploy
83-
git config --global user.name "github-actions[bot]"
84-
git config --global user.email "github-actions[bot]@users.noreply.github.com"
85-
git add dev/paperdebugger.yaml
86-
git diff --staged --quiet || git commit -m "chore: update paperdebugger dev, revision ${IMAGE_TAG}"
87-
git push
11+
jobs:
12+
build-and-deploy:
13+
uses: ./.github/workflows/_build-backend.yml
14+
secrets: inherit
15+
with:
16+
environment: dev
17+
ref: development
18+
version_tag: development
Lines changed: 11 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -1,90 +1,17 @@
11
name: build backend for prd
22
on:
3-
push:
4-
tags:
5-
- 'v*'
63
repository_dispatch:
74
types: [prd]
85

9-
jobs:
10-
build-backend-and-push:
11-
runs-on: ubuntu-latest
12-
permissions:
13-
contents: read
14-
packages: write
15-
outputs:
16-
IMAGE_TAG: ${{ steps.output.outputs.IMAGE_TAG }}
17-
PAPERDEBUGGER_IMAGE: ${{ steps.output.outputs.PAPERDEBUGGER_IMAGE }}
18-
steps:
19-
- name: Checkout repository
20-
uses: actions/checkout@v4
21-
with:
22-
ref: main
23-
- name: Setup env
24-
run: |
25-
echo "MONOREPO_REVISION=$(git rev-parse HEAD | cut -c1-6)" >> $GITHUB_ENV
26-
echo "BRANCH_NAME=${{ github.event.client_payload.tag }}" >> $GITHUB_ENV
27-
echo "VERSION=${{ github.event.client_payload.tag }}" >> $GITHUB_ENV
28-
- name: Log in to the container registry
29-
uses: docker/login-action@v3
30-
with:
31-
registry: ghcr.io
32-
username: ${{ github.actor }}
33-
password: ${{ secrets.GITHUB_TOKEN }}
34-
- name: Build and push docker image
35-
run: |
36-
make all
37-
- id: output
38-
name: Output image tag
39-
run: |
40-
export IMAGE_TAG=${BRANCH_NAME}-${MONOREPO_REVISION}
41-
echo "IMAGE_TAG=${IMAGE_TAG}" >> $GITHUB_OUTPUT
42-
echo "PAPERDEBUGGER_IMAGE=ghcr.io/paperdebugger/sharelatex-paperdebugger:${IMAGE_TAG}" >> $GITHUB_OUTPUT
6+
permissions:
7+
contents: write
8+
packages: write
439

44-
deploy-backend:
45-
needs: build-backend-and-push
46-
runs-on: ubuntu-latest
47-
permissions:
48-
contents: write
49-
steps:
50-
- name: Checkout repository
51-
uses: actions/checkout@v4
52-
with:
53-
ref: main
54-
- name: Clone deploy repo
55-
run: |
56-
git clone https://${{ secrets.GH_PAT }}@github.com/paperdebugger/deploy.git ../deploy
57-
- name: Generate kubernetes manifests
58-
env:
59-
OPENAI_BASE_URL: ${{ secrets.OPENAI_BASE_URL_PRD }}
60-
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY_PRD }}
61-
INFERENCE_BASE_URL: ${{ secrets.INFERENCE_BASE_URL_PRD }}
62-
INFERENCE_API_KEY: ${{ secrets.INFERENCE_API_KEY_PRD }}
63-
MCP_BASIC_KEY: ${{ secrets.MCP_BASIC_KEY_PRD }}
64-
MCP_PAPERSCORE_KEY: ${{ secrets.MCP_PAPERSCORE_KEY_PRD }}
65-
XTRAMCP_OPENAI_BASE_URL: ${{ secrets.XTRAMCP_OPENAI_BASE_URL_PRD }}
66-
XTRAMCP_OPENAI_API_KEY: ${{ secrets.XTRAMCP_OPENAI_API_KEY_PRD }}
67-
XTRAMCP_OPENREVIEW_BASE_URL: ${{ secrets.XTRAMCP_OPENREVIEW_BASE_URL_PRD }}
68-
XTRAMCP_OPENREVIEW_USERNAME: ${{ secrets.XTRAMCP_OPENREVIEW_USERNAME_PRD }}
69-
XTRAMCP_OPENREVIEW_PASSWORD: ${{ secrets.XTRAMCP_OPENREVIEW_PASSWORD_PRD }}
70-
XTRAMCP_CROSSREF_EMAIL_ADDRESS: ${{ secrets.XTRAMCP_CROSSREF_EMAIL_ADDRESS_PRD }}
71-
XTRAMCP_DOI_EMAIL_ADDRESS: ${{ secrets.XTRAMCP_DOI_EMAIL_ADDRESS_PRD }}
72-
XTRAMCP_ACL_METADATA_DB_URL: ${{ secrets.XTRAMCP_ACL_METADATA_DB_URL_PRD }}
73-
XTRAMCP_ARXIV_METADATA_DB_URL: ${{ secrets.XTRAMCP_ARXIV_METADATA_DB_URL_PRD }}
74-
XTRAMCP_MONGO_URI: ${{ secrets.XTRAMCP_MONGO_URI_PRD }}
75-
MONGO_URI: ${{ secrets.MONGO_URI_PRD }}
76-
GHCR_DOCKER_CONFIG: ${{ secrets.GHCR_DOCKER_CONFIG_PRD }}
77-
CLOUDFLARE_TUNNEL_TOKEN: ${{ secrets.CLOUDFLARE_TUNNEL_TOKEN_PRD }}
78-
run: |
79-
export PAPERDEBUGGER_IMAGE=${{ needs.build-backend-and-push.outputs.PAPERDEBUGGER_IMAGE }}
80-
mkdir -p ../deploy/prd
81-
./hack/prd.sh > ../deploy/prd/paperdebugger.yaml
82-
- name: Push changes to deploy repo
83-
run: |
84-
export IMAGE_TAG=${{ needs.build-backend-and-push.outputs.IMAGE_TAG }}
85-
cd ../deploy
86-
git config --global user.name "github-actions[bot]"
87-
git config --global user.email "github-actions[bot]@users.noreply.github.com"
88-
git add prd/paperdebugger.yaml
89-
git diff --staged --quiet || git commit -m "chore: update paperdebugger prd, revision ${IMAGE_TAG}"
90-
git push
10+
jobs:
11+
build-and-deploy:
12+
uses: ./.github/workflows/_build-backend.yml
13+
secrets: inherit
14+
with:
15+
environment: prd
16+
ref: main
17+
version_tag: ${{ github.event.client_payload.tag }}

0 commit comments

Comments
 (0)