spawn-access-control 0.1.12

A Rust library for access control management with WebAssembly support, including role-based access control (RBAC), permissions, and audit logging.
Documentation
name: CI/CD Pipeline

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

env:
  CARGO_TERM_COLOR: always

jobs:
  test:
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres:13
        env:
          POSTGRES_PASSWORD: postgres
          POSTGRES_DB: security_test
        ports:
          - 5432:5432
        options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5

    steps:
      - uses: actions/checkout@v2

      - name: Install dependencies
        run: |
          sudo apt-get update
          sudo apt-get install -y libssl-dev pkg-config

      - name: Cache dependencies
        uses: actions/cache@v2
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            target
          key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}

      - name: Run tests
        run: cargo test --verbose
        env:
          DATABASE_URL: postgres://postgres:postgres@localhost/security_test

      - name: Run clippy
        run: cargo clippy -- -D warnings

      - name: Check formatting
        run: cargo fmt -- --check

  build:
    needs: test
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'

    steps:
      - uses: actions/checkout@v2

      - name: Build Docker image
        run: docker build -t spawn-access-control .

      - name: Login to Docker Hub
        uses: docker/login-action@v1

      - name: Push Docker image
        env:
          DOCKER_USERNAME: ${{ env.DOCKER_USERNAME }}
          DOCKER_PASSWORD: ${{ env.DOCKER_PASSWORD }}
        run: |
          docker tag spawn-access-control ${{ env.DOCKER_USERNAME }}/spawn-access-control:latest
          docker push ${{ env.DOCKER_USERNAME }}/spawn-access-control:latest