diff --git a/.forgejo/workflows/demo.yml b/.forgejo/workflows/demo.yml deleted file mode 100644 index d470cda..0000000 --- a/.forgejo/workflows/demo.yml +++ /dev/null @@ -1,6 +0,0 @@ -on: [push] -jobs: - test: - runs-on: docker - steps: - - run: echo All Good diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..bf64808 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,29 @@ +stages: + - build + - test + - lint + - release + +variables: + UV_CACHE_DIR: "$CI_PROJECT_DIR/.cache/uv" + PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" + DJANGO_SETTINGS_MODULE: "newsreader.conf.gitlab" + POSTGRES_HOST: "$POSTGRES_HOST" + POSTGRES_DB: "$POSTGRES_NAME" + POSTGRES_NAME: "$POSTGRES_NAME" + POSTGRES_USER: "$POSTGRES_USER" + POSTGRES_PASSWORD: "$POSTGRES_PASSWORD" + +cache: + key: "$CI_COMMIT_REF_SLUG" + paths: + - .cache/pip + - .cache/uv + - node_modules/ + - .venv/ + +include: + - local: '/gitlab-ci/build.yml' + - local: '/gitlab-ci/test.yml' + - local: '/gitlab-ci/lint.yml' + - local: '/gitlab-ci/release.yml' diff --git a/gitlab-ci/build.yml b/gitlab-ci/build.yml new file mode 100644 index 0000000..5a86f07 --- /dev/null +++ b/gitlab-ci/build.yml @@ -0,0 +1,7 @@ +static: + stage: build + image: node:lts + before_script: + - npm install + script: + - npm run build diff --git a/gitlab-ci/lint.yml b/gitlab-ci/lint.yml new file mode 100644 index 0000000..6511f9a --- /dev/null +++ b/gitlab-ci/lint.yml @@ -0,0 +1,25 @@ +python-linting: + stage: lint + image: python:3.11 + before_script: + - pip install uv + - uv sync --extra testing --extra ci + script: + - ./.venv/bin/ruff check src/ + - ./.venv/bin/ruff format --check src/ + only: + refs: + - main + - merge_requests + +javascript-linting: + stage: lint + image: node:lts + before_script: + - npm install + script: + - npm run lint + only: + refs: + - main + - merge_requests diff --git a/gitlab-ci/release.yml b/gitlab-ci/release.yml new file mode 100644 index 0000000..571be3c --- /dev/null +++ b/gitlab-ci/release.yml @@ -0,0 +1,12 @@ +release: + stage: release + image: registry.gitlab.com/gitlab-org/release-cli:latest + rules: + - if: $CI_COMMIT_TAG + script: + - echo 'running release job' + release: + name: 'Release $CI_COMMIT_TAG' + description: './CHANGELOG.md' + tag_name: '$CI_COMMIT_TAG' + ref: '$CI_COMMIT_TAG' diff --git a/gitlab-ci/test.yml b/gitlab-ci/test.yml new file mode 100644 index 0000000..69bc93f --- /dev/null +++ b/gitlab-ci/test.yml @@ -0,0 +1,20 @@ +python-tests: + stage: test + coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/' + services: + - postgres:15 + - memcached:1.5.22 + image: python:3.11 + before_script: + - pip install uv + - uv sync --extra testing --extra ci + script: + - ./.venv/bin/coverage run ./src/manage.py test newsreader + +javascript-tests: + stage: test + image: node:lts + before_script: + - npm install + script: + - npm test