Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
0341f1f
🐛 Fix tooltip content adaptation, helper expansion and viewport bound…
F0urchette Sep 18, 2026
d69d6c9
✨ Add student repository navigation and tooltip feedback in students …
F0urchette Sep 18, 2026
7a52ae9
✨ Add collapsible animated search bar in assignment chooser
F0urchette Sep 18, 2026
2d4a0c9
✨ Add secure automatic GitLab OAuth token refresh with rotation and i…
F0urchette Sep 18, 2026
20e1f5f
✨ Add support for self-hosted GitLab instances with multi-account man…
F0urchette Sep 18, 2026
7315f6f
🐛 Fix unit test suites for DevFlagsService, AccountsService, and AddA…
F0urchette Sep 18, 2026
7d8c209
👷 Configure fixed staging channel in GitHub Actions workflows
F0urchette Sep 18, 2026
b7f4047
✨ Add visual anonymization mode for classroom presentations
F0urchette Sep 21, 2026
9d6a160
📝 Update CHANGELOG with all versions from 1.4.1 to Unreleased
F0urchette Sep 21, 2026
eb5a488
✨ add generic token validity check and expired token indicators in ac…
F0urchette Sep 21, 2026
f95dfd4
✨ Add overlapping session navigation with edge arrows and contextual …
F0urchette Sep 23, 2026
5436af5
⚡️ Add session navigation shortcuts, fix search bar focus, and optimi…
F0urchette Sep 23, 2026
0084527
🐛 Fix zoom bounce on session focus
F0urchette Sep 23, 2026
39c68e0
✨ Improve overlapping session selection, hit-testing and priority man…
F0urchette Sep 23, 2026
ebb875b
🚧 specific areas for sessions infos and milestone names to avoid over…
F0urchette Sep 25, 2026
eedf1aa
🐛 Fix commit grouping on strip toggle and center session counter
F0urchette Sep 25, 2026
e76b968
Report comment-triggered staging deployment result
F0urchette Sep 25, 2026
6a07ef1
♻️ Fix member ordering in GitlabDataService
F0urchette Sep 25, 2026
9990669
🐛 Fix unit tests for GitHub and GitLab auth services
F0urchette Sep 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 81 additions & 6 deletions .github/workflows/on-pull-request-comment.yml
Original file line number Diff line number Diff line change
@@ -1,48 +1,123 @@
name: Deploy staging (comment)

on:
issue_comment:
types: [created, edited]

permissions:
contents: read
issues: write
pull-requests: write

jobs:
build:
if: ${{ github.event.issue.pull_request && contains(github.event.comment.body, '/deploy') }}
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
ref: "refs/pull/${{ github.event.issue.number }}/merge"
- name: Setup Node
uses: actions/setup-node@master
uses: actions/setup-node@v4
with:
node-version: "14.X"
- name: Install Dependencies
run: yarn --ignore-engines
- name: Build app
run: yarn run build-prod
- name: Upload Archive Production Artifact
uses: actions/upload-artifact@master
uses: actions/upload-artifact@v4
with:
name: dist-git4school
path: dist/git4school

deploy:
if: ${{ github.event.issue.pull_request && contains(github.event.comment.body, '/deploy') }}
name: Deploy
needs: build
runs-on: ubuntu-latest
outputs:
staging_url: ${{ steps.firebase.outputs.urls }}
steps:
- name: Checkout Repo
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
ref: "refs/pull/${{ github.event.issue.number }}/merge"
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "24.18.0"
- name: Download Production Artifact
uses: actions/download-artifact@master
uses: actions/download-artifact@v4
with:
name: dist-git4school
path: dist/git4school
- name: Deploy staging
id: firebase
uses: FirebaseExtended/action-hosting-deploy@v0
with:
repoToken: ${{ secrets.GITHUB_TOKEN }}
firebaseServiceAccount: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_GIT4SCHOOL }}
projectId: git4school
channelId: 'pr-${{ github.event.number }}-${{ github.event.pull_request.head.ref }}'
channelId: staging
expires: 30d

comment:
if: ${{ always() && github.event.issue.pull_request && contains(github.event.comment.body, '/deploy') }}
name: Report deployment result
needs: [build, deploy]
runs-on: ubuntu-latest
steps:
- name: Comment deployment result on the pull request
uses: actions/github-script@v7
env:
BUILD_RESULT: ${{ needs.build.result }}
DEPLOY_RESULT: ${{ needs.deploy.result }}
STAGING_URL: ${{ needs.deploy.outputs.staging_url }}
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const issue_number = context.issue.number;
const buildResult = process.env.BUILD_RESULT;
const deployResult = process.env.DEPLOY_RESULT;
const stagingUrl = process.env.STAGING_URL;
const runUrl = `${context.serverUrl}/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`;

if (buildResult === 'success' && deployResult === 'success') {
const urls = stagingUrl
.split(/\r?\n/)
.map(url => url.trim())
.filter(Boolean)
.map(url => `- ${url}`)
.join('\n');

await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number,
body: `## ✅ Staging deployment succeeded\n\n${urls || 'The deployment completed successfully, but Firebase did not return a preview URL.'}\n\n[View the workflow run](${runUrl})`,
});
return;
}

const jobs = await github.paginate(github.rest.actions.listJobsForWorkflowRun, {
owner: context.repo.owner,
repo: context.repo.repo,
run_id: context.runId,
per_page: 100,
});
const failedSteps = jobs
.flatMap(job => (job.steps || []).map(step => ({ job: job.name, ...step })))
.filter(step => step.conclusion === 'failure')
.map(step => `- **${step.job} / ${step.name}**`)
.join('\n');

const details = failedSteps || `Build result: \`${buildResult}\`; deploy result: \`${deployResult}\`.`;
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number,
body: `## ❌ Staging deployment failed\n\n${details}\n\n[View the workflow run for full logs](${runUrl})`,
});
3 changes: 2 additions & 1 deletion .github/workflows/on-pull-request-label.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,5 @@ jobs:
repoToken: ${{ secrets.GITHUB_TOKEN }}
firebaseServiceAccount: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_GIT4SCHOOL }}
projectId: git4school
channelId: "pr-${{ github.event.number }}-${{ github.event.pull_request.head.ref }}"
channelId: staging
expires: 30d
Loading
Loading