chore: add hidden files
Some checks failed
CI/CD Pipeline / Test Suite (push) Has been cancelled
CI/CD Pipeline / Security Audit (push) Has been cancelled
CI/CD Pipeline / Build Docker Image (push) Has been cancelled
CI/CD Pipeline / Deploy to Staging (push) Has been cancelled
CI/CD Pipeline / Deploy to Production (push) Has been cancelled
CI/CD Pipeline / Performance Benchmarks (push) Has been cancelled
CI/CD Pipeline / Cleanup (push) Has been cancelled
Some checks failed
CI/CD Pipeline / Test Suite (push) Has been cancelled
CI/CD Pipeline / Security Audit (push) Has been cancelled
CI/CD Pipeline / Build Docker Image (push) Has been cancelled
CI/CD Pipeline / Deploy to Staging (push) Has been cancelled
CI/CD Pipeline / Deploy to Production (push) Has been cancelled
CI/CD Pipeline / Performance Benchmarks (push) Has been cancelled
CI/CD Pipeline / Cleanup (push) Has been cancelled
This commit is contained in:
parent
8d51341c44
commit
76d374ea18
111
.dockerignore
Normal file
111
.dockerignore
Normal file
@ -0,0 +1,111 @@
|
||||
# Rust build artifacts
|
||||
target/
|
||||
**/*.rs.bk
|
||||
*.pdb
|
||||
|
||||
# Node.js
|
||||
node_modules/
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# Development files
|
||||
.env
|
||||
.env.local
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
|
||||
# IDE and editor files
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
|
||||
# OS generated files
|
||||
.DS_Store
|
||||
.DS_Store?
|
||||
._*
|
||||
.Spotlight-V100
|
||||
.Trashes
|
||||
ehthumbs.db
|
||||
Thumbs.db
|
||||
|
||||
# Git
|
||||
.git/
|
||||
.gitignore
|
||||
.gitattributes
|
||||
|
||||
# Documentation
|
||||
*.md
|
||||
docs/
|
||||
README*
|
||||
|
||||
# Test files
|
||||
tests/
|
||||
test/
|
||||
**/*test*
|
||||
**/*spec*
|
||||
|
||||
# Temporary files
|
||||
tmp/
|
||||
temp/
|
||||
*.tmp
|
||||
*.temp
|
||||
|
||||
# Logs
|
||||
logs/
|
||||
*.log
|
||||
|
||||
# Runtime directories
|
||||
uploads/
|
||||
cache/
|
||||
data/
|
||||
backups/
|
||||
|
||||
# Development scripts
|
||||
scripts/dev*
|
||||
scripts/test*
|
||||
|
||||
# Docker files
|
||||
Dockerfile*
|
||||
docker-compose*
|
||||
.dockerignore
|
||||
|
||||
# CI/CD
|
||||
.github/
|
||||
.gitlab-ci.yml
|
||||
.travis.yml
|
||||
.circleci/
|
||||
|
||||
# Package manager files (keep package.json but ignore lock files for multi-stage)
|
||||
package-lock.json
|
||||
yarn.lock
|
||||
pnpm-lock.yaml
|
||||
|
||||
# Build tools config
|
||||
.cargo/
|
||||
rust-toolchain
|
||||
rust-toolchain.toml
|
||||
|
||||
# Examples and demos
|
||||
examples/
|
||||
end2end/
|
||||
|
||||
# Certificates (should be mounted or provided separately)
|
||||
certs/
|
||||
*.pem
|
||||
*.crt
|
||||
*.key
|
||||
|
||||
# Database files
|
||||
*.db
|
||||
*.sqlite
|
||||
*.sqlite3
|
||||
|
||||
# Binaries
|
||||
*.exe
|
||||
*.so
|
||||
*.dylib
|
||||
*.dll
|
16
.githooks/pre-commit
Executable file
16
.githooks/pre-commit
Executable file
@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
# Pre-commit hook to run cargo +nightly fmt
|
||||
|
||||
echo "Running cargo +nightly fmt..."
|
||||
|
||||
# Run cargo +nightly fmt
|
||||
cargo +nightly fmt
|
||||
|
||||
# Check if there are any changes after formatting
|
||||
if ! git diff --quiet; then
|
||||
echo "Code has been formatted. Please add the changes and commit again."
|
||||
echo "Run: git add . && git commit"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Code formatting check passed!"
|
16
.githooks/pre-push
Executable file
16
.githooks/pre-push
Executable file
@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
# Pre-push hook to run cargo +nightly fmt
|
||||
|
||||
echo "Running cargo +nightly fmt before push..."
|
||||
|
||||
# Run cargo +nightly fmt
|
||||
cargo +nightly fmt
|
||||
|
||||
# Check if there are any changes after formatting
|
||||
if ! git diff --quiet; then
|
||||
echo "Code has been formatted. Please commit the changes and push again."
|
||||
echo "Run: git add . && git commit -m \"cargo fmt\" && git push"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Code formatting check passed!"
|
81
.github/dependabot.yml
vendored
Normal file
81
.github/dependabot.yml
vendored
Normal file
@ -0,0 +1,81 @@
|
||||
version: 2
|
||||
updates:
|
||||
# Rust dependencies
|
||||
- package-ecosystem: "cargo"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
day: "monday"
|
||||
time: "06:00"
|
||||
open-pull-requests-limit: 10
|
||||
reviewers:
|
||||
- "rustelo-maintainers"
|
||||
commit-message:
|
||||
prefix: "cargo"
|
||||
include: "scope"
|
||||
labels:
|
||||
- "dependencies"
|
||||
- "rust"
|
||||
allow:
|
||||
- dependency-type: "all"
|
||||
ignore:
|
||||
- dependency-name: "leptos*"
|
||||
update-types: ["version-update:semver-major"]
|
||||
- dependency-name: "axum"
|
||||
update-types: ["version-update:semver-major"]
|
||||
|
||||
# Node.js dependencies
|
||||
- package-ecosystem: "npm"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
day: "monday"
|
||||
time: "06:00"
|
||||
open-pull-requests-limit: 10
|
||||
reviewers:
|
||||
- "rustelo-maintainers"
|
||||
commit-message:
|
||||
prefix: "npm"
|
||||
include: "scope"
|
||||
labels:
|
||||
- "dependencies"
|
||||
- "javascript"
|
||||
allow:
|
||||
- dependency-type: "all"
|
||||
ignore:
|
||||
- dependency-name: "tailwindcss"
|
||||
update-types: ["version-update:semver-major"]
|
||||
|
||||
# Docker dependencies
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
day: "monday"
|
||||
time: "06:00"
|
||||
open-pull-requests-limit: 5
|
||||
reviewers:
|
||||
- "rustelo-maintainers"
|
||||
commit-message:
|
||||
prefix: "docker"
|
||||
include: "scope"
|
||||
labels:
|
||||
- "dependencies"
|
||||
- "docker"
|
||||
|
||||
# GitHub Actions dependencies
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
day: "monday"
|
||||
time: "06:00"
|
||||
open-pull-requests-limit: 5
|
||||
reviewers:
|
||||
- "rustelo-maintainers"
|
||||
commit-message:
|
||||
prefix: "github-actions"
|
||||
include: "scope"
|
||||
labels:
|
||||
- "dependencies"
|
||||
- "github-actions"
|
247
.github/workflows/ci-cd.yml
vendored
Normal file
247
.github/workflows/ci-cd.yml
vendored
Normal file
@ -0,0 +1,247 @@
|
||||
name: CI/CD Pipeline
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main, develop ]
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
release:
|
||||
types: [ published ]
|
||||
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
RUST_VERSION: 1.75.0
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: Test Suite
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:15
|
||||
env:
|
||||
POSTGRES_PASSWORD: postgres
|
||||
POSTGRES_DB: rustelo_test
|
||||
options: >-
|
||||
--health-cmd pg_isready
|
||||
--health-interval 10s
|
||||
--health-timeout 5s
|
||||
--health-retries 5
|
||||
ports:
|
||||
- 5432:5432
|
||||
|
||||
redis:
|
||||
image: redis:7
|
||||
options: >-
|
||||
--health-cmd "redis-cli ping"
|
||||
--health-interval 10s
|
||||
--health-timeout 5s
|
||||
--health-retries 5
|
||||
ports:
|
||||
- 6379:6379
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install Rust
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
toolchain: ${{ env.RUST_VERSION }}
|
||||
components: rustfmt, clippy
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '18'
|
||||
cache: 'npm'
|
||||
|
||||
- name: Install Node dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Cache Cargo dependencies
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: |
|
||||
~/.cargo/registry
|
||||
~/.cargo/git
|
||||
target/
|
||||
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-cargo-
|
||||
|
||||
- name: Install cargo-leptos
|
||||
run: cargo install cargo-leptos --version 0.2.20
|
||||
|
||||
- name: Check formatting
|
||||
run: cargo fmt --all -- --check
|
||||
|
||||
- name: Run Clippy
|
||||
run: cargo clippy --all-targets --features "auth,content-db,crypto,email,metrics,examples" -- -D warnings
|
||||
|
||||
- name: Run tests
|
||||
run: cargo test --features "auth,content-db,crypto,email,metrics,examples"
|
||||
env:
|
||||
DATABASE_URL: postgresql://postgres:postgres@localhost:5432/rustelo_test
|
||||
REDIS_URL: redis://localhost:6379
|
||||
|
||||
- name: Build frontend
|
||||
run: npm run build
|
||||
|
||||
- name: Build application
|
||||
run: cargo leptos build --release --features production --no-default-features
|
||||
|
||||
security:
|
||||
name: Security Audit
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install Rust
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
toolchain: ${{ env.RUST_VERSION }}
|
||||
|
||||
- name: Install cargo-audit
|
||||
run: cargo install cargo-audit
|
||||
|
||||
- name: Run security audit
|
||||
run: cargo audit
|
||||
|
||||
- name: Run cargo-deny
|
||||
uses: EmbarkStudios/cargo-deny-action@v1
|
||||
|
||||
build:
|
||||
name: Build Docker Image
|
||||
runs-on: ubuntu-latest
|
||||
needs: [test, security]
|
||||
if: github.event_name == 'push' || github.event_name == 'release'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Login to Docker Hub
|
||||
if: github.event_name == 'release'
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
|
||||
- name: Extract metadata
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: |
|
||||
${{ secrets.DOCKER_USERNAME }}/rustelo
|
||||
tags: |
|
||||
type=ref,event=branch
|
||||
type=ref,event=pr
|
||||
type=semver,pattern={{version}}
|
||||
type=semver,pattern={{major}}.{{minor}}
|
||||
type=sha,prefix={{branch}}-
|
||||
|
||||
- name: Build and push Docker image
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
context: .
|
||||
platforms: linux/amd64,linux/arm64
|
||||
push: ${{ github.event_name == 'release' }}
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
|
||||
deploy-staging:
|
||||
name: Deploy to Staging
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
if: github.ref == 'refs/heads/develop'
|
||||
environment: staging
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Deploy to staging
|
||||
run: |
|
||||
echo "Deploying to staging environment..."
|
||||
# Add your staging deployment commands here
|
||||
# Example: kubectl apply -f k8s/staging/
|
||||
# Example: docker-compose -f docker-compose.staging.yml up -d
|
||||
|
||||
- name: Run health check
|
||||
run: |
|
||||
echo "Running health check..."
|
||||
# Add health check commands here
|
||||
# Example: curl -f https://staging.yourapp.com/health
|
||||
|
||||
deploy-production:
|
||||
name: Deploy to Production
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
if: github.event_name == 'release'
|
||||
environment: production
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Deploy to production
|
||||
run: |
|
||||
echo "Deploying to production environment..."
|
||||
# Add your production deployment commands here
|
||||
# Example: kubectl apply -f k8s/production/
|
||||
# Example: docker-compose -f docker-compose.prod.yml up -d
|
||||
|
||||
- name: Run health check
|
||||
run: |
|
||||
echo "Running health check..."
|
||||
# Add health check commands here
|
||||
# Example: curl -f https://yourapp.com/health
|
||||
|
||||
- name: Notify deployment
|
||||
if: always()
|
||||
run: |
|
||||
echo "Notifying deployment status..."
|
||||
# Add notification commands here
|
||||
# Example: Send Slack notification, email, etc.
|
||||
|
||||
benchmark:
|
||||
name: Performance Benchmarks
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install Rust
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
toolchain: ${{ env.RUST_VERSION }}
|
||||
|
||||
- name: Run benchmarks
|
||||
run: cargo bench --features production --no-default-features
|
||||
|
||||
- name: Store benchmark results
|
||||
uses: benchmark-action/github-action-benchmark@v1
|
||||
with:
|
||||
tool: 'cargo'
|
||||
output-file-path: target/criterion/report/index.html
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
auto-push: true
|
||||
comment-on-alert: true
|
||||
alert-threshold: '200%'
|
||||
fail-on-alert: true
|
||||
|
||||
cleanup:
|
||||
name: Cleanup
|
||||
runs-on: ubuntu-latest
|
||||
if: always()
|
||||
needs: [test, security, build, deploy-staging, deploy-production]
|
||||
|
||||
steps:
|
||||
- name: Cleanup artifacts
|
||||
run: |
|
||||
echo "Cleaning up temporary artifacts..."
|
||||
# Add cleanup commands here if needed
|
98
.gitignore
vendored
Normal file
98
.gitignore
vendored
Normal file
@ -0,0 +1,98 @@
|
||||
# Generated by Cargo
|
||||
# will have compiled files and executables
|
||||
debug/
|
||||
target/
|
||||
# Encryption keys and related files (CRITICAL - NEVER COMMIT)
|
||||
.k
|
||||
.k.backup
|
||||
*.k
|
||||
*.key.backup
|
||||
|
||||
config.*.toml
|
||||
config.*back
|
||||
|
||||
# where book is written
|
||||
_book
|
||||
|
||||
# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
|
||||
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
|
||||
Cargo.lock
|
||||
|
||||
# These are backup files generated by rustfmt
|
||||
**/*.rs.bk
|
||||
|
||||
# MSVC Windows builds of rustc generate these, which store debugging information
|
||||
*.pdb
|
||||
|
||||
node_modules/
|
||||
|
||||
**/output.css
|
||||
**/input.css
|
||||
|
||||
# Environment files
|
||||
.env
|
||||
.env.local
|
||||
.env.production
|
||||
.env.development
|
||||
.env.staging
|
||||
|
||||
# Keep example files
|
||||
!.env.example
|
||||
|
||||
# Configuration files (may contain sensitive data)
|
||||
config.prod.toml
|
||||
config.production.toml
|
||||
config.local.toml
|
||||
config.*.local.toml
|
||||
|
||||
# Keep example configuration files
|
||||
!config.toml
|
||||
!config.dev.toml
|
||||
!config.example.toml
|
||||
|
||||
# Log files
|
||||
logs/
|
||||
*.log
|
||||
|
||||
# TLS certificates and keys
|
||||
certs/
|
||||
*.pem
|
||||
*.crt
|
||||
*.key
|
||||
*.p12
|
||||
*.pfx
|
||||
|
||||
# Database files
|
||||
*.db
|
||||
*.sqlite
|
||||
*.sqlite3
|
||||
|
||||
# Backup files
|
||||
*.bak
|
||||
*.backup
|
||||
*.tmp
|
||||
*~
|
||||
|
||||
# Encryption and security related files
|
||||
*.encrypted
|
||||
*.enc
|
||||
secrets/
|
||||
private/
|
||||
security/
|
||||
|
||||
# Configuration backups that may contain secrets
|
||||
config.*.backup
|
||||
config.backup.*
|
||||
|
||||
# OS generated files
|
||||
.DS_Store
|
||||
.DS_Store?
|
||||
._*
|
||||
.Spotlight-V100
|
||||
.Trashes
|
||||
ehthumbs.db
|
||||
Thumbs.db
|
||||
# Documentation build output
|
||||
book-output/
|
||||
# Generated setup report
|
||||
SETUP_COMPLETE.md
|
Loading…
x
Reference in New Issue
Block a user