Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
cda90ce
wip
rozen03 Jan 31, 2026
0b6537a
wip
rozen03 Jan 31, 2026
3949155
me cago en tu vieja
rozen03 Jan 31, 2026
79844f8
wip
rozen03 Jan 31, 2026
74bee8a
fix environment
rozen03 Jan 31, 2026
1ceecd8
fix environment
rozen03 Jan 31, 2026
aab18d1
fix environment
rozen03 Jan 31, 2026
cc6fe33
fix environment
rozen03 Jan 31, 2026
10040da
fix environment
rozen03 Jan 31, 2026
3950bfd
fix environment
rozen03 Jan 31, 2026
13a8069
fix environment
rozen03 Jan 31, 2026
83ed79d
fix environment
rozen03 Jan 31, 2026
68a0365
fix environment
rozen03 Jan 31, 2026
dbd422c
fix environment
rozen03 Jan 31, 2026
a5df6e9
dockerfile?
rozen03 Jan 31, 2026
3408d70
dockerfile?
rozen03 Jan 31, 2026
a90285e
wip
rozen03 Jan 31, 2026
c7b7028
wip
rozen03 Jan 31, 2026
a1f1ee1
wip
rozen03 Jan 31, 2026
d234d7a
wip
rozen03 Jan 31, 2026
c9d2888
wip
rozen03 Jan 31, 2026
979789d
wip
rozen03 Jan 31, 2026
a51f13e
wip
rozen03 Jan 31, 2026
dc54d9f
wip
rozen03 Jan 31, 2026
d9a0a68
wip
rozen03 Jan 31, 2026
e8748ab
wip
rozen03 Jan 31, 2026
cf0892f
wip
rozen03 Jan 31, 2026
77122f1
wip
rozen03 Jan 31, 2026
fff15cb
wip
rozen03 Jan 31, 2026
15f8f0a
wip
rozen03 Jan 31, 2026
d1ba898
wip
rozen03 Feb 1, 2026
573f14d
wip
rozen03 Feb 1, 2026
8da5c81
wip
rozen03 Feb 1, 2026
33ed1b1
wip
rozen03 Jan 31, 2026
62989b2
wip
rozen03 Jan 31, 2026
0a12c66
me cago en tu vieja
rozen03 Jan 31, 2026
a73e016
wip
rozen03 Jan 31, 2026
c949485
fix environment
rozen03 Jan 31, 2026
5b50baf
fix environment
rozen03 Jan 31, 2026
fcd56a7
fix environment
rozen03 Jan 31, 2026
956d258
fix environment
rozen03 Jan 31, 2026
7bd9627
fix environment
rozen03 Jan 31, 2026
00748d5
fix environment
rozen03 Jan 31, 2026
9563a68
fix environment
rozen03 Jan 31, 2026
46f925f
fix environment
rozen03 Jan 31, 2026
8c78eaf
fix environment
rozen03 Jan 31, 2026
85fa4f3
fix environment
rozen03 Jan 31, 2026
ab12692
dockerfile?
rozen03 Jan 31, 2026
d5c8dbe
dockerfile?
rozen03 Jan 31, 2026
2a4e2fd
wip
rozen03 Jan 31, 2026
0b64437
wip
rozen03 Jan 31, 2026
218d51e
wip
rozen03 Jan 31, 2026
4b1a26f
wip
rozen03 Jan 31, 2026
f2dec9e
wip
rozen03 Jan 31, 2026
a650b72
wip
rozen03 Jan 31, 2026
6885e04
wip
rozen03 Jan 31, 2026
79e267a
wip
rozen03 Jan 31, 2026
59c2efe
wip
rozen03 Jan 31, 2026
c953d11
wip
rozen03 Jan 31, 2026
2f54bea
wip
rozen03 Jan 31, 2026
e8d15e3
wip
rozen03 Jan 31, 2026
7cb2517
wip
rozen03 Jan 31, 2026
e578d54
wip
rozen03 Jan 31, 2026
cbe81bf
wip
rozen03 Feb 1, 2026
784ce04
wip
rozen03 Feb 1, 2026
a73993c
wip
rozen03 Feb 1, 2026
5359e5f
Merge branch 'migrate-cloud-run' of github.com:comcomUBA/dcubabot int…
rozen03 Feb 1, 2026
b40c032
wip
rozen03 Feb 1, 2026
ab42c7f
wip
rozen03 Feb 1, 2026
dac6527
wip
rozen03 Feb 1, 2026
97c4a94
wip
rozen03 Feb 1, 2026
4d95d02
wip
rozen03 Feb 1, 2026
d194a4b
wip
rozen03 Feb 1, 2026
0a03290
wip
rozen03 Feb 1, 2026
df0954b
wip
rozen03 Feb 1, 2026
6c18061
wip
rozen03 Feb 1, 2026
51f7d1a
wip
rozen03 Feb 1, 2026
7565cd2
wip
rozen03 Feb 1, 2026
f2275ea
wip
rozen03 Feb 1, 2026
7f46646
wip
rozen03 Feb 1, 2026
d4b2901
wip
rozen03 Feb 1, 2026
89bb77f
wip
rozen03 Feb 1, 2026
33ce3c5
wip
rozen03 Feb 1, 2026
8a26646
wip
rozen03 Feb 1, 2026
c76dc0b
wip
rozen03 Feb 2, 2026
ec33d84
wip
rozen03 Feb 2, 2026
05630a1
wip
rozen03 Feb 2, 2026
536dc10
wip
rozen03 Feb 2, 2026
e4a55e9
wip
rozen03 Feb 2, 2026
00504d8
wip
rozen03 Feb 2, 2026
4868a03
wip
rozen03 Feb 2, 2026
9e0cf38
VAMOAROMPERTODO
rozen03 Feb 2, 2026
0b80a51
VAMOAROMPERTODO2
rozen03 Feb 2, 2026
5b53dfe
VAMOAROMPERTODO3
rozen03 Feb 2, 2026
47bdc0a
feat: complete migration of legacy commands and cron jobs
rozen03 Apr 18, 2026
607e712
fix: send felizdia to ROZEN_CHATID instead of DC_GROUP_CHATID tempora…
rozen03 Apr 18, 2026
23a3678
temp: run cron job every minute and force felizdia to send
rozen03 Apr 18, 2026
1911191
temp: add error logging to telegram in cron job
rozen03 Apr 18, 2026
cf95934
fix: resolve DetachedInstanceError in update_groups job
rozen03 Apr 18, 2026
c0e0c24
fix: send group died msg to ROZEN_CHATID as test bot is not in DC_GRO…
rozen03 Apr 18, 2026
7c8a0b8
fix: update cloud run job trigger API URI from v1 to v2
rozen03 Apr 18, 2026
52860ef
fix: use correct Cloud Run Jobs trigger API URI and OAuth token for C…
rozen03 Apr 18, 2026
8e01763
feat: add global error handler to notify ROZEN_CHATID on exceptions
rozen03 Apr 18, 2026
4bf2686
feat: mark listarlabos as deprecated and request new data sources
rozen03 Apr 18, 2026
bde42d3
build: upgrade Python to 3.11 and distroless to debian12 for security…
rozen03 Apr 18, 2026
a9f364b
feat: add python version to /estasvivo command to easily verify deplo…
rozen03 Apr 18, 2026
7f4e7b9
fix: restore production daily schedule and telegram targets
rozen03 Apr 18, 2026
37373dc
chore: remove deprecated robobrowser, werkzeug and markupsafe depende…
rozen03 Apr 18, 2026
00ecb0f
build: migrate from requirements.txt to uv.lock for reproducible buil…
rozen03 Apr 18, 2026
1efaece
feat: add new songkick venue url for estadio mas monumental to catch …
rozen03 Apr 18, 2026
44a3241
feat: automatically sync bot commands to Telegram menu on startup
rozen03 Apr 18, 2026
84e8961
feat: add daily RAM usage report to cron job and document specs
rozen03 Apr 18, 2026
02e01bb
ci: restrict cloud run deployments to the main branch
rozen03 Apr 18, 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
150 changes: 150 additions & 0 deletions .github/workflows/google-cloudrun-docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
name: Build and Deploy to Cloud Run
on:
push:
branches:
- main
workflow_dispatch:

env:
PROJECT_ID: ${{ vars.GCP_PROJECT_ID }}
PROJECT_REGION: ${{ vars.GCP_PROJECT_REGION }}
SERVICE_NAME: ${{ vars.GCP_SERVICE_API_NAME }}
JOB_NAME: ${{ vars.GCP_SERVICE_API_NAME }}-update-groups
ARTIFACT_REGISTRY: ${{ vars.GCP_ARTIFACT_REGISTRY }}

jobs:
build-and-push:
name: Build and Push to Artifact Registry
runs-on: ubuntu-latest
environment: GCP-Rozen
permissions:
contents: 'read'
id-token: 'write'

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Authenticate Cloud CLI
uses: 'google-github-actions/auth@v2'
with:
credentials_json: ${{ secrets.GCP_SA_KEY }}

- name: Set up Cloud SDK
uses: 'google-github-actions/setup-gcloud@v2'

- name: Authorize Docker push
run: gcloud auth configure-docker ${{ env.PROJECT_REGION }}-docker.pkg.dev

- name: Define image tag
id: image_tag
run: echo "TAG=${{ env.PROJECT_REGION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.ARTIFACT_REGISTRY }}/${{ env.SERVICE_NAME }}:${{ github.sha }}" >> $GITHUB_ENV

- name: Build and Push Docker Image
run: |-
docker build -t $TAG .
docker push $TAG

deploy-to-cloud-run:
name: Deploy Service to Cloud Run
needs: build-and-push
runs-on: ubuntu-latest
environment: GCP-Rozen
if: github.event_name == 'push' || github.event_name == 'pull_request'
permissions:
contents: 'read'
id-token: 'write'

steps:
- name: Authenticate Cloud CLI
uses: 'google-github-actions/auth@v2'
with:
credentials_json: ${{ secrets.GCP_SA_KEY }}

- name: Set up Cloud SDK
uses: 'google-github-actions/setup-gcloud@v2'

- name: Define image tag for deployment
id: image_tag
run: echo "TAG=${{ env.PROJECT_REGION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.ARTIFACT_REGISTRY }}/${{ env.SERVICE_NAME }}:${{ github.sha }}" >> $GITHUB_ENV

- name: Get existing service URL
id: get_url
run: echo "URL=$(gcloud run services describe ${{ env.SERVICE_NAME }} --platform managed --region ${{ env.PROJECT_REGION }} --format 'value(status.url)')" >> $GITHUB_ENV

- name: Deploy to Cloud Run
run: |-
gcloud run deploy ${{ env.SERVICE_NAME }} \
--image $TAG \
--region ${{ env.PROJECT_REGION }} \
--service-account ${{ vars.GCP_SA_EMAIL }} \
--max-instances=${{ vars.GCP_SERVICE_API_MAX_INSTANCES }} \
--set-secrets=TELEGRAM_BOT_TOKEN=${{ vars.GCP_SECRET_TG_BOT_TOKEN }}:latest \
--set-secrets=DB_USER=${{ vars.GCP_SECRET_DB_USER }}:latest \
--set-secrets=DB_PASSWORD=${{ vars.GCP_SECRET_DB_PASSWORD }}:latest \
--set-secrets=DB_URL=${{ vars.GCP_SECRET_DB_URL }}:latest \
--set-env-vars=DB_PORT=${{ vars.GCP_DB_PORT }} \
--set-secrets=S3_ACCESS_ID=${{ vars.GCP_SECRET_S3_ACCESS_ID }}:latest \
--set-secrets=S3_ACCESS_SECRET=${{ vars.GCP_SECRET_S3_ACCESS_SECRET }}:latest \
--set-secrets=S3_HOST=${{ vars.GCP_SECRET_S3_HOST }}:latest \
--set-env-vars=S3_BUCKET=${{ vars.GCP_S3_BUCKET }} \
--set-env-vars=WEBHOOK_URL=${{ env.URL }} \
--platform managed \
--allow-unauthenticated

deploy-and-schedule-job:
name: Deploy and Schedule Job
needs: build-and-push
runs-on: ubuntu-latest
environment: GCP-Rozen
if: github.event_name == 'push'
permissions:
contents: 'read'
id-token: 'write'

steps:
- name: Authenticate Cloud CLI
uses: 'google-github-actions/auth@v2'
with:
credentials_json: ${{ secrets.GCP_SA_KEY }}

- name: Set up Cloud SDK
uses: 'google-github-actions/setup-gcloud@v2'

- name: Define image tag for deployment
run: echo "TAG=${{ env.PROJECT_REGION }}-docker.pkg.dev/${{ env.PROJECT_ID }}/${{ env.ARTIFACT_REGISTRY }}/${{ env.SERVICE_NAME }}:${{ github.sha }}" >> $GITHUB_ENV

- name: Deploy Cloud Run Job
run: |-
gcloud run jobs deploy ${{ env.JOB_NAME }} \
--image $TAG \
--region ${{ env.PROJECT_REGION }} \
--command=python \
--args=cron.py \
--service-account ${{ vars.GCP_SA_EMAIL }} \
--set-secrets=TELEGRAM_BOT_TOKEN=${{ vars.GCP_SECRET_TG_BOT_TOKEN }}:latest \
--set-secrets=DB_USER=${{ vars.GCP_SECRET_DB_USER }}:latest \
--set-secrets=DB_PASSWORD=${{ vars.GCP_SECRET_DB_PASSWORD }}:latest \
--set-secrets=DB_URL=${{ vars.GCP_SECRET_DB_URL }}:latest \
--set-env-vars=DB_PORT=${{ vars.GCP_DB_PORT }}

- name: Create or Update Cloud Scheduler Job
run: |
if gcloud scheduler jobs describe ${{ env.JOB_NAME }} --location=${{ env.PROJECT_REGION }} >/dev/null 2>&1; then
echo "Updating existing Cloud Scheduler job"
gcloud scheduler jobs update http ${{ env.JOB_NAME }} \
--location=${{ env.PROJECT_REGION }} \
--schedule="0 0 * * *" \
--uri="https://${{ env.PROJECT_REGION }}-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/${{ env.PROJECT_ID }}/jobs/${{ env.JOB_NAME }}:run" \
--http-method=POST \
--oauth-service-account-email=${{ vars.GCP_SA_EMAIL }}
else
echo "Creating new Cloud Scheduler job"
gcloud scheduler jobs create http ${{ env.JOB_NAME }} \
--location=${{ env.PROJECT_REGION }} \
--schedule="0 0 * * *" \
--time-zone="America/Argentina/Buenos_Aires" \
--uri="https://${{ env.PROJECT_REGION }}-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/${{ env.PROJECT_ID }}/jobs/${{ env.JOB_NAME }}:run" \
--http-method=POST \
--oauth-service-account-email=${{ vars.GCP_SA_EMAIL }}
fi
30 changes: 30 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
FROM python:3.11-slim as builder

# Install uv
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/

# Configure UV for container environment
ENV UV_COMPILE_BYTECODE=1 \
UV_LINK_MODE=copy

WORKDIR /app

# Copy dependency files
COPY pyproject.toml uv.lock ./

# Install dependencies (creates an isolated virtual environment at /app/.venv)
RUN uv sync --frozen --no-install-project --no-dev

FROM gcr.io/distroless/python3-debian12

WORKDIR /app

# Copy the dependencies from the builder's virtual environment
COPY --from=builder /app/.venv/lib/python3.11/site-packages /app/packages

COPY . .

ENV PYTHONPATH=/app/packages

ENTRYPOINT ["python"]
CMD ["main.py"]
Loading