Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Break everything and introduce i18n #69

Merged
merged 1 commit into from
Sep 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
34 changes: 28 additions & 6 deletions .github/workflows/Publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,26 +9,48 @@ jobs:
build-and-deploy:
name: Build and deploy

runs-on: ubuntu-22.04
runs-on: ubuntu-24.04

steps:
- name: Retrieve source code
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Build and publish Docker Image
- name: Build and publish Docker Image for UI
uses: openzim/docker-publish-action@v10
with:
image-name: openzim/zimit-ui
image-name: openzim/zimit-frontend-ui
on-master: latest
restrict-to: openzim/zimit-frontend
registries: ghcr.io
dockerfile: Dockerfile-ui
# prettier-ignore
credentials:
GHCRIO_USERNAME=${{ secrets.GHCR_USERNAME }}
GHCRIO_TOKEN=${{ secrets.GHCR_TOKEN }}

- name: Deploy Zimit frontend changes to zimit.kiwix.org
- name: Build and publish Docker Image for API
uses: openzim/docker-publish-action@v10
with:
image-name: openzim/zimit-frontend-api
on-master: latest
restrict-to: openzim/zimit-frontend
registries: ghcr.io
dockerfile: Dockerfile-api
# prettier-ignore
credentials:
GHCRIO_USERNAME=${{ secrets.GHCR_USERNAME }}
GHCRIO_TOKEN=${{ secrets.GHCR_TOKEN }}

- name: Deploy Zimit frontend UI changes to zimit.kiwix.org
uses: actions-hub/kubectl@master
env:
KUBE_CONFIG: ${{ secrets.ZIMIT_KUBE_CONFIG }}
with:
args: rollout restart deployments frontend-ui-deployment -n zimit

- name: Deploy Zimit frontend API changes to zimit.kiwix.org
uses: actions-hub/kubectl@master
env:
KUBE_CONFIG: ${{ secrets.ZIMIT_KUBE_CONFIG }}
with:
args: rollout restart deployments ui-deployment -n zimit
args: rollout restart deployments frontend-api-deployment -n zimit
78 changes: 59 additions & 19 deletions .github/workflows/QA.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,24 +7,64 @@ on:
- main

jobs:
check-qa:
runs-on: ubuntu-latest
check-api-qa:
runs-on: ubuntu-24.04

steps:
- name: Retrieve source code
uses: actions/checkout@v3

- name: Set up Python 3.8
uses: actions/setup-python@v1
with:
python-version: 3.8

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r api/requirements.txt

- name: black code formatting check
run: |
pip install -U "black==22.3.0"
black --check .
- name: Retrieve source code
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version-file: api/pyproject.toml
architecture: x64

- name: Install dependencies
working-directory: api
run: |
pip install -U pip
pip install -e .[lint,check,scripts,test]

- name: Check black formatting
working-directory: api
run: inv lint-black

- name: Check ruff
working-directory: api
run: inv lint-ruff

- name: Check pyright
working-directory: api
run: inv check-pyright

check-ui-qa:
runs-on: ubuntu-24.04

steps:
- uses: actions/checkout@v4

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version-file: ui/.node-version

- name: Install JS dependencies
working-directory: ui
run: |
yarn install

- name: Check prettier
working-directory: ui
run: |
yarn format

- name: Check eslint
working-directory: ui
run: |
yarn lint
benoit74 marked this conversation as resolved.
Show resolved Hide resolved

- name: Check Typescript typing
working-directory: ui
run: |
yarn type-check
63 changes: 63 additions & 0 deletions .github/workflows/Tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: Tests

on:
pull_request:
push:
branches:
- main

jobs:
test-api:
runs-on: ubuntu-24.04

steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version-file: api/pyproject.toml
architecture: x64

- name: Install dependencies (and project)
working-directory: api
run: |
pip install -U pip
pip install -e .[test,scripts]

- name: Run the tests
working-directory: api
run: inv coverage --args "-vvv"

- name: Upload coverage report to codecov
uses: codecov/codecov-action@v4
with:
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
benoit74 marked this conversation as resolved.
Show resolved Hide resolved

build_docker:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4

- name: Ensure we can build the Docker image for UI
run: |
docker build -t zimitfrontend-ui . -f Dockerfile-ui

- name: Ensure we can start the Docker image for UI
run: |
docker run -d --rm --name test_container zimitfrontend-ui
sleep 5
docker ps | grep test_container
docker stop test_container

- name: Ensure we can build the Docker image for API
run: |
docker build -t zimitfrontend-api . -f Dockerfile-api

- name: Ensure we can start the Docker image for API
run: |
docker run -d --rm --name test_container zimitfrontend-api
sleep 5
docker ps | grep test_container
docker stop test_container
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -129,3 +129,6 @@ dmypy.json
.pyre/

.DS_Store

# ignore all vscode, this is not standard configuration in this place
.vscode
42 changes: 42 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- repo: https://github.com/psf/black
rev: "24.8.0"
hooks:
- id: black
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.6.5
hooks:
- id: ruff
- repo: https://github.com/RobertCraigie/pyright-python
rev: v1.1.380
hooks:
- id: pyright
name: pyright (system)
description: 'pyright static type checker'
entry: pyright
language: system
'types_or': [python, pyi]
require_serial: true
minimum_pre_commit_version: '2.9.2'
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v3.1.0
hooks:
- id: prettier
files: ui\/.*$ # files in javascript folder
- repo: https://github.com/pre-commit/mirrors-eslint
rev: v8.56.0 # for some reasons, 8.57.0 has not been published
hooks:
- id: eslint
types: [file]
files: ui\/.*(?:\.[jt]sx?|\.vue)$ # *.js, *.jsx, *.ts, *.tsx, *.vue in ui/src folder
args:
- --config
- ui/.eslintrc.cjs
- --no-ignore
55 changes: 0 additions & 55 deletions Dockerfile

This file was deleted.

36 changes: 36 additions & 0 deletions Dockerfile-api
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@

FROM python:3.12-alpine
LABEL org.opencontainers.image.source https://github.com/openzim/zimit-frontend

# Specifying a workdir which is not "/"" is mandatory for proper uvicorn watchfiles
# operation (used mostly only in dev, but changing the workdir does not harm production)
WORKDIR "/home"

# Install necessary packages (only pip so far)
RUN python -m pip install --no-cache-dir -U \
pip

# Set to your client origin(s)
ENV ALLOWED_ORIGINS http://localhost:8001|http://127.0.0.1:8001

# Copy minimal files for installation of project dependencies
COPY api/pyproject.toml api/README.md /src/
COPY api/src/zimitfrontend/__about__.py /src/src/zimitfrontend/__about__.py

# Install project dependencies
RUN pip install --no-cache-dir /src

# Copy code + associated artifacts
COPY api/src /src/src
COPY api/*.md /src/

# Install project + cleanup afterwards
RUN pip install --no-cache-dir /src \
&& rm -rf /src

ENV LOCALES_LOCATION /locales
COPY locales /locales

EXPOSE 80

CMD ["uvicorn", "zimitfrontend.entrypoint:app", "--host", "0.0.0.0", "--port", "80"]
22 changes: 22 additions & 0 deletions Dockerfile-ui
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
FROM node:20-alpine as ui_builder

RUN apk --no-cache add yarn
WORKDIR /src/ui
COPY ui/package.json ui/yarn.lock /src/ui/
RUN yarn install
COPY ui/index.html /src/ui/
COPY ui/*.json /src/ui/
COPY ui/*.ts /src/ui/
COPY ui/*.js /src/ui/
COPY ui/public /src/ui/public
COPY ui/src /src/ui/src
COPY locales /src/locales
RUN NODE_ENV=production yarn build


FROM caddy:2.8-alpine
LABEL org.opencontainers.image.source https://github.com/openzim/zimit-frontend

COPY --from=ui_builder /src/ui/dist /usr/share/caddy

COPY locales /locales
Loading