Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
88 commits
Select commit Hold shift + click to select a range
3c7cd83
Bump version.json
ObadaS Mar 10, 2026
ed2b43a
Merge pull request #2253 from codalab/version-bump
ObadaS Mar 10, 2026
05f96ef
fix csrf and domain_name when the instance is behind multiple differe…
Mar 11, 2026
d87143a
add some documentation about multiple domains
Mar 11, 2026
ad31fe2
Fix auto-migration
Didayolo Mar 7, 2026
90c57c9
Merge pull request #2239 from codalab/fix-phase-migration
ObadaS Mar 13, 2026
839a138
Merge pull request #2256 from codalab/multiple_domains
Didayolo Mar 13, 2026
8ca3c78
Various packages upgrades (Django 5.2) (#2200)
ObadaS Mar 13, 2026
c3d31c2
Add instructions for 1.24
Didayolo Mar 10, 2026
e91062e
remove github numbers
Didayolo Mar 10, 2026
3554b3b
Fix screenshot
Didayolo Mar 10, 2026
46a62cc
Merge pull request #2252 from codalab/doc-1.24
ObadaS Mar 13, 2026
89ffda3
Bump social-auth-app-django from 5.4.3 to 5.6.0
dependabot[bot] Mar 13, 2026
dd45024
Merge pull request #2260 from codalab/dependabot/uv/social-auth-app-d…
ObadaS Mar 13, 2026
db42cbf
Update profile page
Didayolo Feb 27, 2026
4a38e06
Get competitions organized for collaborators too
Didayolo Mar 13, 2026
c7dbc75
Merge pull request #2219 from codalab/profile-page
ObadaS Mar 13, 2026
0a53ecc
Fix order by date in leaderboard
Didayolo Feb 28, 2026
78ed56c
Merge pull request #2221 from codalab/sort-by-date
ObadaS Mar 16, 2026
ea04d7e
Bump pyjwt from 2.11.0 to 2.12.0
dependabot[bot] Mar 16, 2026
7622205
Merge pull request #2264 from codalab/dependabot/uv/pyjwt-2.12.0
ObadaS Mar 16, 2026
57665b5
Add values.yaml
Nov 5, 2025
74da8a8
Add helm templates
Nov 5, 2025
531c6bf
Add Chart.yaml
Nov 5, 2025
e2cbaf2
Add ingress
Nov 6, 2025
eaad3cc
Add dockerfiles
Nov 6, 2025
100d169
Add flower dockerfile
Nov 6, 2025
62a773a
Fix repository origin for rabbitmq and redis
Jan 26, 2026
8abebb2
Remove eternal charts
Jan 27, 2026
8ca45d6
Remove unused env variables from cw
Jan 27, 2026
e5542b5
Check if metadata exists before adding labels
Jan 27, 2026
dd1002d
Remove spec from istio
Jan 27, 2026
1a42ce5
Remove docker images
Jan 27, 2026
588e61d
Fix typo
Jan 27, 2026
b17e881
Fix SUBMISSIONS_API_URL
Jan 30, 2026
970dc93
Use default images from external charts
Mar 10, 2026
66c2e50
Set default values for pvcs
Mar 10, 2026
53d355e
Set default value for ingress path
Mar 10, 2026
8010491
Display login screen
Mar 13, 2026
2274194
Remove unused parameter
Mar 13, 2026
019f296
Add user to context
Didayolo Mar 7, 2026
4e26f5a
flake8
Didayolo Mar 7, 2026
09d7ef3
Merge pull request #2238 from codalab/email-username
ObadaS Mar 16, 2026
b0f6ccc
Fix submission upload page display
Didayolo Mar 4, 2026
a551b07
Merge pull request #2228 from codalab/submission-page-display
ObadaS Mar 16, 2026
ace9a8f
Make Containerfile self contained
Mar 17, 2026
659928e
Update chart to use default image for flower
Mar 17, 2026
d13e6d6
Copy only mandatory dependencies to django
Mar 17, 2026
a04fdae
Change django command to match docker-compose
Mar 17, 2026
e2a8481
Merge 'pauloguilhermpp/deploy_codabench_using_kubernetes' into develop
wlln Mar 17, 2026
c0652e3
Fix redirection when removing a forum post or a thread (#2257)
IdirLISN Mar 17, 2026
09d6166
Revert change on Containerfile
Didayolo Mar 17, 2026
ce6a1c9
added autogenerated files to gitignore
ihsaan-ullah Mar 18, 2026
c8dba74
Merge pull request #2268 from codalab/revert-containerfile-changes
Didayolo Mar 18, 2026
61d352a
Merge pull request #2272 from codalab/git_ignore
Didayolo Mar 18, 2026
299f052
Improve update status and logs in compute worker
Didayolo Feb 28, 2026
d69574b
Increase test timeout to check if the issue is delay
Didayolo Feb 28, 2026
c7ed68a
Simplify exception
Didayolo Mar 3, 2026
57ae9c0
Reverse test update (Update test_submission.py)
Didayolo Mar 2, 2026
29de34c
Fix submission timing
Didayolo Mar 4, 2026
ce28ef9
Fix scope
Didayolo Mar 4, 2026
4ff78b4
Ensure task is called in the tests
Didayolo Mar 4, 2026
47f8e25
Add progress bar error only if log level is debug
Didayolo Mar 4, 2026
d1dd772
Right asyncio loop syntax (following #2237)
Didayolo Mar 7, 2026
3ba0c19
Ensure logs are returned to the platform, make loop.close() more robust
Didayolo Mar 12, 2026
646aa33
Improve question mark error message
Didayolo Mar 12, 2026
b94529c
Merge pull request #2223 from codalab/fix-worker-logs
ObadaS Mar 18, 2026
69bb591
submission pagination banckend ok
IdirLISN Mar 9, 2026
7a2b52d
UI for submisiions pagniation OK, feature complete
IdirLISN Mar 9, 2026
3d7c5b6
UI for submisiions pagniation OK, feature complete
IdirLISN Mar 9, 2026
146f644
fix some ui issues
IdirLISN Mar 10, 2026
de6200b
fix some ui issues
IdirLISN Mar 10, 2026
6d82e9b
dynamic pagination class + UI for submissions
IdirLISN Mar 11, 2026
05fc8fa
Flake8 fix
Didayolo Mar 13, 2026
490aba8
Update pagination.py
IdirLISN Mar 16, 2026
c0b1ba9
Update submission_manager.tag
IdirLISN Mar 18, 2026
4f206f6
fix for pagination UI
IdirLISN Mar 18, 2026
669461d
flake8 fixes
Mar 18, 2026
fab0649
Merge pull request #2245 from codalab/feature/pagination_for_submissions
ObadaS Mar 18, 2026
931f95a
Update Benchmark-Examples.md
Didayolo Mar 18, 2026
3249c53
Merge pull request #2274 from codalab/Didayolo-patch-1
Didayolo Mar 18, 2026
35c8189
fixed function get_folder_size_in_gb
ihsaan-ullah Mar 18, 2026
7a3283d
Merge pull request #2270 from codalab/compute_worker_function_fix
Didayolo Mar 18, 2026
db9423b
submission (non zip) error improved
ihsaan-ullah Mar 18, 2026
634d0f9
tests updated, additional test added
ihsaan-ullah Mar 18, 2026
f4e84dd
Merge pull request #2273 from codalab/submission_zip
Didayolo Mar 18, 2026
3b9992c
Update Compute-Worker-Management---Setup.md
Didayolo Mar 19, 2026
d41062b
Merge pull request #2278 from codalab/doc-worker
Didayolo Mar 19, 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
2 changes: 1 addition & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ jobs:

- run:
name: "Tests: Run unit/integration tests (excluding e2e)"
command: docker compose exec django py.test src/ -m "not e2e"
command: docker compose exec django py.test src/

# We give the name of the test files manually because we need test_auth.py to be run before the others for state.json file to be created
# CI="true" to skip some tests that fail in the CI for now
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ src/static/generated/*
db.sqlite3

celerybeat-schedule
celerybeat-schedule-shm
celerybeat-schedule-wal
celerybeat-schedule.db
package-lock.json
artifacts/
Expand All @@ -44,3 +46,4 @@ caddy_data/
home_page_counters.json
my-postgres.conf
tests/config/state.json

34 changes: 34 additions & 0 deletions charts/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
apiVersion: v2
name: codabench-chart
description: A Helm chart for Kubernetes

# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application

# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.0

# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "1.16.0"

dependencies:
- name: rabbitmq
version: "14.7.0"
repository: "oci://registry-1.docker.io/bitnamicharts"
condition: rabbitmq.enabled
- name: redis
version: "19.5.4"
repository: "oci://registry-1.docker.io/bitnamicharts"
condition: redis.enabled
11 changes: 11 additions & 0 deletions charts/templates/app-state-pvc.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ .Values.appState.pvcName }}
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: {{ .Values.appState.storage }}
storageClassName: {{ .Values.appState.storageClass }}
55 changes: 55 additions & 0 deletions charts/templates/compute-worker-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
{{- range .Values.compute_worker.brokers }}
{{- $isDefault := eq .name "default" }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: compute-worker{{ if not $isDefault }}-{{ .name }}{{ end }}
labels:
app: compute-worker
spec:
replicas: 1
selector:
matchLabels:
app: compute-worker
template:
metadata:
labels:
app: compute-worker
spec:
serviceAccountName: compute-worker-sa
containers:
- name: compute-worker
image: "{{ $.Values.compute_worker.image.repository }}:{{ $.Values.compute_worker.image.tag }}"
imagePullPolicy: {{ $.Values.compute_worker.image.pullPolicy | default "IfNotPresent" }}
command:
- bash
- -c
- >
watchmedo auto-restart -p '*.py' --recursive -- celery -A compute_worker worker -l info -Q compute-worker -n compute-worker{{ if not $isDefault }}-{{ .name }}{{ end }}@%n
workingDir: /app
env:
- name: BROKER_URL
value: "{{ if .url }}{{ .url }}{{ else }}pyamqp://{{ $.Values.env.RABBITMQ_DEFAULT_USER }}:{{ $.Values.env.RABBITMQ_DEFAULT_PASS }}@{{ $.Values.env.RABBITMQ_HOST }}:{{ $.Values.env.RABBITMQ_PORT }}//{{ end }}"
- name: CODALAB_IGNORE_CLEANUP_STEP
value: "1"
{{- range $key, $value := $.Values.env }}
- name: {{ $key }}
value: "{{ $value }}"
{{- end }}
resources:
{{- toYaml $.Values.compute_worker.resources | nindent 12 }}
volumeMounts:
- name: docker-socket
mountPath: /var/run/docker.sock
- name: codabench-storage
mountPath: /codabench
volumes:
- name: docker-socket
hostPath:
path: /var/run/docker.sock
type: Socket
- name: codabench-storage
persistentVolumeClaim:
claimName: {{ $.Values.compute_worker.volumes.pvcName }}
{{- end }}
35 changes: 35 additions & 0 deletions charts/templates/compute-worker-rbac.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: compute-worker-sa
namespace: {{ .Release.Namespace }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: compute-worker-role
namespace: {{ .Release.Namespace }}
rules:
- apiGroups: ["batch"]
resources: ["jobs"]
verbs: ["create", "get", "list", "watch", "delete"]
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch", "delete"]
- apiGroups: [""]
resources: ["pods/exec", "pods/log"]
verbs: ["create", "get", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: compute-worker-bind
namespace: {{ .Release.Namespace }}
subjects:
- kind: ServiceAccount
name: compute-worker-sa
namespace: {{ .Release.Namespace }}
roleRef:
kind: Role
name: compute-worker-role
apiGroup: rbac.authorization.k8s.io
41 changes: 41 additions & 0 deletions charts/templates/django-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: django
spec:
replicas: {{ .Values.django.replicas }}
selector:
matchLabels:
app: django
template:
metadata:
labels:
app: django
spec:
containers:
- name: django
image: "{{ .Values.django.image.repository }}:{{ .Values.django.image.tag }}"
imagePullPolicy: {{ .Values.django.image.pullPolicy }}
command:
- bash
- -c
- >
python manage.py migrate --no-input &&
python manage.py collectstatic --no-input &&
cd {{ .Values.django.workingDir }} &&
watchmedo auto-restart -p '*.py' --recursive --
python3 ./gunicorn_run.py
env:
{{- range $key, $value := .Values.env }}
- name: {{ $key }}
value: "{{ $value }}"
{{- end }}
- name: DATABASE_URL
value: "postgres://{{ .Values.db.username }}:{{ .Values.db.password }}@{{ .Values.db.host }}:{{ .Values.db.port }}/{{ .Values.db.name }}"
volumeMounts:
- name: app-state
mountPath: /app/app-state
volumes:
- name: app-state
persistentVolumeClaim:
claimName: {{ .Values.appState.pvcName }}
12 changes: 12 additions & 0 deletions charts/templates/django-service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
apiVersion: v1
kind: Service
metadata:
name: django
spec:
selector:
app: django
ports:
- protocol: TCP
port: 8000
targetPort: 8000

27 changes: 27 additions & 0 deletions charts/templates/flower-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: flower
labels:
app: flower
spec:
replicas: {{ .Values.flower.replicas }}
selector:
matchLabels:
app: flower
template:
metadata:
labels:
app: flower
spec:
containers:
- name: flower
image: "{{ .Values.flower.image.repository }}:{{ .Values.flower.image.tag }}"
imagePullPolicy: {{ .Values.flower.image.pullPolicy }}
ports:
- containerPort: {{ .Values.flower.service.port }}
env:
- name: CELERY_BROKER_URL
value: "pyamqp://{{ .Values.env.RABBITMQ_DEFAULT_USER }}:{{ .Values.env.RABBITMQ_DEFAULT_PASS }}@{{ .Values.env.RABBITMQ_HOST }}:{{ .Values.env.RABBITMQ_PORT }}//"
- name: FLOWER_PORT
value: "{{ .Values.flower.service.port }}"
13 changes: 13 additions & 0 deletions charts/templates/flower-service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: v1
kind: Service
metadata:
name: flower
labels:
app: flower
spec:
type: ClusterIP
ports:
- port: {{ .Values.flower.service.port }}
targetPort: 5555
selector:
app: flower
7 changes: 7 additions & 0 deletions charts/templates/ingress.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: sample-http-ingress
spec:
{{- toYaml .Values.ingress.spec | nindent 2 }}

11 changes: 11 additions & 0 deletions charts/templates/istio.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{{- if .Values.istio.enableVirtualService}}
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: codabench-vs
spec:
{{- toYaml .Values.istio.spec | nindent 12 }}

{{- else }}
{{- end }}

12 changes: 12 additions & 0 deletions charts/templates/shared-pvc.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ .Values.sharedJob.pvcName }}
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: {{ .Values.sharedJob.storage }}
storageClassName: {{ .Values.sharedJob.storageClass }}

54 changes: 54 additions & 0 deletions charts/templates/site-worker-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: site-worker
labels:
app: site-worker
spec:
replicas: {{ .Values.siteWorker.replicas }}
selector:
matchLabels:
app: site-worker
template:
metadata:
labels:
app: site-worker
{{- if .Values.siteWorker.metadata }}
{{- with .Values.siteWorker.metadata.labels }}
{{- toYaml . | nindent 8 }}
{{- end }}
{{- end }}
spec:
{{- with .Values.siteWorker.securityContext }}
securityContext:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- name: site-worker
image: "{{ .Values.siteWorker.image.repository }}:{{ .Values.siteWorker.image.tag }}"
imagePullPolicy: {{ .Values.siteWorker.image.pullPolicy }}
workingDir: {{ .Values.siteWorker.workingDir }}
env:
- name: PYTHONPATH
value: {{ .Values.siteWorker.workingDir }}
- name: DATABASE_URL
value: "postgres://{{ .Values.db.username }}:{{ .Values.db.password }}@{{ .Values.db.host }}:{{ .Values.db.port }}/{{ .Values.db.name }}"
{{- range $key, $value := .Values.env }}
- name: {{ $key }}
value: "{{ $value }}"
{{- end }}
command:
- bash
- -c
- >
watchmedo auto-restart -p '*.py' --recursive --
celery -A celery_config worker -B -Q site-worker -l info
-n site-worker@%n --concurrency={{ .Values.siteWorker.concurrency }}
volumeMounts:
- name: app-state
mountPath: /app/app-state
volumes:
- name: app-state
persistentVolumeClaim:
claimName: {{ .Values.siteWorker.volumes.pvcName }}

Loading
Loading