diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..00e1a4f4673e5e2af7c2e1ec1d661602c0d503f0
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,42 @@
+name: build-satella
+run-name: ${{ github.actor }}
+on: [ push ]
+jobs:
+  build-wheel:
+    runs-on: "ubuntu-latest"
+    strategy:
+      matrix:
+        python-version: [ "3.6", "3.7", "3.8", "pypy3.9", "pypy3.10", "3.9", "3.10", "3.11", "3.12" ]
+    steps:
+      - uses: actions/checkout@4
+      - uses: actions/setup-python@4
+        with:
+          python-version: '${{ matrix.python-version }}'
+          cache: 'pip'
+      - name: Install everything
+        run: pip install -e .[test,dev,extras]
+        with:
+          python-version: '${{ matrix.python-version }}'
+          cache: 'pip'
+    paths:
+      - 'dist/*'
+  tests:
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        python-version: [ "3.6", "3.7", "3.8", "pypy3.9", "pypy3.10", "3.9", "3.10", "3.11", "3.12" ]
+    steps:
+      - uses: actions/checkout@4
+      - uses: actions/setup-python@4
+        with:
+          python-version: '${{ matrix.python-version }}'
+          cache: 'pip'
+      - name: Test everything
+        run: pytest -n 8 -vv --cov=satella
+        with:
+          python-version: '${{ matrix.python-version }}'
+          cache: 'pip'
+        tags:
+          - '!*' # Do not execute on tags
+    paths:
+      - '!*.MD'