mirror of
https://github.com/kevinveenbirkenbach/cli-gnome-extension-manager.git
synced 2026-08-16 19:52:49 +00:00
Replaces main.sh with the 'cli-gnome-extension-manager' distribution in a src layout, shipping both the cli-gnome-extension-manager and the older goexma command. sync_repository keeps the three states of the shell original apart: clone when the folder is missing, pull when it is a checkout, leave it alone otherwise, so a manually installed extension is never overwritten. build_extension still moves the checkout away before make install, but into a TemporaryDirectory instead of a fixed /tmp/<name>, which removes the collision between parallel runs and cleans up on abort. Every step passes through the exit code of the failing tool, replacing the shell chain of || exit 1; a missing gnome-extensions aborts with exit 127. The e2e suite builds a real git repository, clones it with real git and runs real make install. Adds --extensions-dir, unit, integration and container-based e2e tests, ruff and markdown/mermaid linting, CodeQL and Dependabot, and pins the core metadata to 2.4 so twine accepts the artifacts. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
81 lines
1.5 KiB
YAML
81 lines
1.5 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
pull_request:
|
|
|
|
jobs:
|
|
test-and-lint:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.12"
|
|
cache: "pip"
|
|
|
|
- name: Install package and tooling
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
python -m pip install --upgrade pip
|
|
python -m pip install -e .
|
|
python -m pip install ruff
|
|
|
|
- name: Ruff (lint)
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
ruff check .
|
|
|
|
- name: Ruff (format check)
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
ruff format --check .
|
|
|
|
- name: Unit tests
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
make test-unit
|
|
|
|
- name: Integration tests
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
make test-integration
|
|
|
|
docs:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Markdown and mermaid lint
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
make lint-docs
|
|
|
|
e2e:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 20
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: End-to-end tests in a container
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
make test-e2e
|