diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 9cdd07c3db493d6f07bfbb101ed738f591e4a2b9..ef9be0ad3297ba79546362ffeda79e5c1ef3a851 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -80,3 +80,42 @@ jobs:
           node-version: ${{ matrix.node-version }}
       - name: Build and lint Web code
         run: cd frontends/web && npm install && npm run build && npm run lint
+  build-sdl:
+    name: Build SDL
+    timeout-minutes: 10
+    strategy:
+      matrix:
+        rust-version: [
+          "1.56.1",
+          "1.60.0",
+          "1.61.0",
+          "1.62.0",
+          "1.63.0",
+          "1.64.0",
+          "1.65.0",
+          "1.66.0",
+          "1.67.0",
+          "1.68.0",
+          "latest"
+        ]
+    runs-on: ubuntu-latest
+    container: rust:${{ matrix.rust-version }}
+    steps:
+      - name: Checkout code from repository
+        uses: actions/checkout@v3
+      - name: Install Rust components
+        run: |
+          rustup component add rustfmt
+          rustup component add clippy
+      - name: Print Rust information
+        run: rustc --version
+      - name: Verify Rust code format
+        run: cd frontends/sdl && cargo fmt --all -- --check
+      - name: Verify Rust code linting
+        run: cd frontends/sdl && cargo clippy -- -D warnings -A unknown-lints
+      - name: Install SDL dependencies
+        run: cd frontends/sdl && cargo install cargo-vcpkg && cargo vcpkg build
+      - name: Build development version
+        run: cd frontends/sdl && cargo build
+      - name: Build release version
+        run: cd frontends/sdl && cargo build --release