Compare commits

...

5 Commits

Author SHA1 Message Date
1817ab01d6 Test fix (#35)
All checks were successful
Release Tagging / release (push) Successful in 32s
Rust Build / Check (push) Successful in 46s
Rust Build / Test Suite (push) Successful in 57s
Rust Build / Rustfmt (push) Successful in 34s
Rust Build / Clippy (push) Successful in 47s
Rust Build / build (push) Successful in 1m18s
Rust Build / Check (pull_request) Successful in 46s
Rust Build / Test Suite (pull_request) Successful in 1m3s
Rust Build / Rustfmt (pull_request) Successful in 27s
Rust Build / Clippy (pull_request) Successful in 46s
Rust Build / build (pull_request) Successful in 1m24s
Reviewed-on: #35
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
2025-04-27 18:06:13 +00:00
31be156be3 Added ssh default for building docker image (#33)
All checks were successful
Rust Build / Check (push) Successful in 46s
Rust Build / Test Suite (push) Successful in 1m3s
Rust Build / Rustfmt (push) Successful in 28s
Rust Build / Clippy (push) Successful in 46s
Rust Build / build (push) Successful in 1m16s
Rust Build / Check (pull_request) Successful in 53s
Rust Build / Test Suite (pull_request) Successful in 1m0s
Rust Build / Rustfmt (pull_request) Successful in 27s
Rust Build / Clippy (pull_request) Successful in 52s
Rust Build / build (pull_request) Successful in 1m15s
Release Tagging / release (push) Successful in 43s
Reviewed-on: #33
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
2025-04-27 16:31:11 +00:00
fc6b66f2e6 Docker changes (#31)
All checks were successful
Release Tagging / release (push) Successful in 34s
Rust Build / Check (push) Successful in 49s
Rust Build / Test Suite (push) Successful in 1m18s
Rust Build / Rustfmt (push) Successful in 33s
Rust Build / Clippy (push) Successful in 52s
Rust Build / build (push) Successful in 1m30s
Rust Build / Check (pull_request) Successful in 58s
Rust Build / Test Suite (pull_request) Successful in 1m8s
Rust Build / Rustfmt (pull_request) Successful in 32s
Rust Build / Clippy (pull_request) Successful in 52s
Rust Build / build (pull_request) Successful in 1m19s
Reviewed-on: #31
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
2025-04-13 18:38:38 +00:00
6dec9942cc Version bump (#29)
All checks were successful
Release Tagging / release (push) Successful in 37s
Rust Build / Check (push) Successful in 57s
Rust Build / Test Suite (push) Successful in 1m14s
Rust Build / Rustfmt (push) Successful in 29s
Rust Build / Clippy (push) Successful in 1m5s
Rust Build / build (push) Successful in 1m22s
Rust Build / Check (pull_request) Successful in 57s
Rust Build / Test Suite (pull_request) Successful in 1m15s
Rust Build / Rustfmt (pull_request) Successful in 39s
Rust Build / Clippy (pull_request) Successful in 55s
Rust Build / build (pull_request) Successful in 1m40s
Reviewed-on: #29
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
2025-04-12 00:16:34 +00:00
a855db9ecc Workflow changes (#30)
Some checks failed
Rust Build / Check (push) Successful in 49s
Rust Build / Test Suite (push) Successful in 1m36s
Rust Build / Rustfmt (push) Successful in 29s
Rust Build / Clippy (push) Successful in 52s
Rust Build / build (push) Successful in 1m33s
Rust Build / Check (pull_request) Successful in 1m1s
Rust Build / Test Suite (pull_request) Successful in 1m17s
Rust Build / Rustfmt (pull_request) Successful in 36s
Rust Build / Clippy (pull_request) Successful in 53s
Rust Build / build (pull_request) Successful in 1m31s
Release Tagging / release (push) Failing after 38s
Reviewed-on: #30
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
2025-04-11 23:57:37 +00:00
10 changed files with 49 additions and 47 deletions

View File

@@ -5,6 +5,8 @@ pkg/
# Ignore git directory # Ignore git directory
.git/ .git/
.gitea/
# Ignore environment files (configure via docker-compose instead) # Ignore environment files (configure via docker-compose instead)
.env* .env*

View File

@@ -1,2 +1,6 @@
DATABASE_URL=postgres://username:password@localhost/database_name SECRET_KEY=refero34o8rfhfjn983thf39fhc943rf923n3h
SECRET_KEY=refero34o8rfhfjn983thf39fhc943rf923n3h POSTGRES_USER=icarus_op_test
POSTGRES_PASSWORD=password
POSTGRES_DB=icarus_auth_test_db
POSTGRES_HOST=localhost
DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:5432/${POSTGRES_DB}

View File

@@ -4,8 +4,6 @@ on:
push: push:
branches: branches:
- devel - devel
tags:
- 'v*' # Trigger on tags matching v*
jobs: jobs:
release: release:
@@ -52,6 +50,4 @@ jobs:
body: | body: |
Release of version ${{ steps.version.outputs.project_tag_release }} Release of version ${{ steps.version.outputs.project_tag_release }}
# draft: false # draft: false
# prerelease: ${{ startsWith(github.ref, 'v') == false }} # prerelease if not a valid release tag # prerelease: ${{ startsWith(github.ref, 'v') == false }} # prerelease if not a valid release tag

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "icarus_auth" name = "icarus_auth"
version = "0.3.2" version = "0.3.4"
edition = "2024" edition = "2024"
rust-version = "1.86" rust-version = "1.86"

View File

@@ -34,8 +34,6 @@ RUN --mount=type=ssh mkdir src && \
# Copy the actual source code # Copy the actual source code
COPY src ./src COPY src ./src
# If you have other directories like `templates` or `static`, copy them too # If you have other directories like `templates` or `static`, copy them too
# COPY templates ./templates
# COPY static ./static
COPY .env ./.env COPY .env ./.env
COPY migrations ./migrations COPY migrations ./migrations
@@ -64,8 +62,6 @@ COPY --from=builder /usr/src/app/target/release/icarus_auth .
# It's generally better to configure via environment variables in Docker though # It's generally better to configure via environment variables in Docker though
COPY --from=builder /usr/src/app/.env . COPY --from=builder /usr/src/app/.env .
COPY --from=builder /usr/src/app/migrations ./migrations COPY --from=builder /usr/src/app/migrations ./migrations
# COPY --from=builder /usr/src/app/templates ./templates
# COPY --from=builder /usr/src/app/static ./static
# Expose the port your Axum app listens on (e.g., 3000 or 8000) # Expose the port your Axum app listens on (e.g., 3000 or 8000)
EXPOSE 3000 EXPOSE 3000

26
README.md Normal file
View File

@@ -0,0 +1,26 @@
# Getting Started
Copy the `.env.sample` file to `.env` and ensure that the variables are populated. This project
can be used with regular hosting or with docker. For the sake of getting up to speed quickly,
Docker will be covered. Make sure docker is running and your ssh identity has been loaded.
Build image
```
docker compose build
```
Start images
```
docker compose up -d --force-recreate
```
Bring it down
```
docker compose down -v
```
Pruning
```
docker system prune -a
```

View File

@@ -2,43 +2,34 @@ version: '3.8' # Use a recent version
services: services:
# Your Rust Application Service # Your Rust Application Service
app: auth_api:
build: . # Tells docker-compose to build the Dockerfile in the current directory build: # Tells docker-compose to build the Dockerfile in the current directory
context: .
ssh: ["default"] # Uses host's SSH agent
container_name: icarus_auth # Optional: Give the container a specific name container_name: icarus_auth # Optional: Give the container a specific name
ports: ports:
# Map host port 8000 to container port 3000 (adjust as needed) # Map host port 8000 to container port 3000 (adjust as needed)
# Format: "HOST_PORT:CONTAINER_PORT"
- "8000:3000" - "8000:3000"
environment: env_file:
# Pass environment variables to your Rust application - .env
# RUST_LOG: info # Example: Set log level
# IMPORTANT: Configure DATABASE_URL to connect to the 'db' service
# The hostname 'db' matches the service name defined below.
DATABASE_URL: postgresql://icarus_op:password@db:5432/icarus_auth
# Add any other environment variables your app needs
# APP_HOST: 0.0.0.0
# APP_PORT: 3000
depends_on: depends_on:
db: auth_db:
condition: service_healthy # Wait for the DB to be healthy before starting the app condition: service_healthy # Wait for the DB to be healthy before starting the app
restart: unless-stopped # Optional: Restart policy restart: unless-stopped # Optional: Restart policy
# PostgreSQL Database Service # PostgreSQL Database Service
db: auth_db:
image: postgres:17.4-alpine # Use an official Postgres image (Alpine variant is smaller) image: postgres:17.4-alpine # Use an official Postgres image (Alpine variant is smaller)
container_name: icarus_auth_db # Optional: Give the container a specific name container_name: icarus_auth_db # Optional: Give the container a specific name
environment: environment:
# These MUST match the user, password, and database name in the DATABASE_URL above # These MUST match the user, password, and database name in the DATABASE_URL above
POSTGRES_USER: icarus_op POSTGRES_USER: ${POSTGRES_USER:-icarus_op}
POSTGRES_PASSWORD: password POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-password}
POSTGRES_DB: icarus_auth POSTGRES_DB: ${POSTGRES_DB:-icarus_auth}
volumes: volumes:
# Persist database data using a named volume # Persist database data using a named volume
- postgres_data:/var/lib/postgresql/data - postgres_data:/var/lib/postgresql/data
ports: [] ports: []
# Optional: Expose port 5432 ONLY if you need to connect directly from your host machine (e.g., for debugging)
# - "5432:5432"
# pass:
healthcheck: healthcheck:
# Checks if Postgres is ready to accept connections # Checks if Postgres is ready to accept connections
test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"] test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"]
@@ -51,4 +42,4 @@ services:
# Define the named volume for data persistence # Define the named volume for data persistence
volumes: volumes:
postgres_data: postgres_data:
driver: local # Use the default local driver driver: local # Use the default local driver

View File

@@ -1,13 +0,0 @@
# Docker stuff
#Build app
docker-compose build --ssh default app
# Rebuild and bring up
docker-compose up -d --force-recreate app
# Bring it down
docker-compose down -v
# Pruning
docker system prune -a

View File

@@ -36,7 +36,6 @@ pub mod db {
async fn get_db_url() -> String { async fn get_db_url() -> String {
#[cfg(debug_assertions)] // Example: Only load .env in debug builds #[cfg(debug_assertions)] // Example: Only load .env in debug builds
dotenvy::dotenv().ok(); dotenvy::dotenv().ok();
env::var(keys::DBURL).expect(keys::error::ERROR) env::var(keys::DBURL).expect(keys::error::ERROR)
} }

View File

@@ -74,6 +74,7 @@ mod tests {
pub const LIMIT: usize = 6; pub const LIMIT: usize = 6;
pub async fn get_pool() -> Result<sqlx::PgPool, sqlx::Error> { pub async fn get_pool() -> Result<sqlx::PgPool, sqlx::Error> {
dotenvy::dotenv().ok(); // Load .env file if it exists
let tm_db_url = std::env::var(keys::DBURL).expect("DATABASE_URL must be present"); let tm_db_url = std::env::var(keys::DBURL).expect("DATABASE_URL must be present");
let tm_options = sqlx::postgres::PgConnectOptions::from_str(&tm_db_url).unwrap(); let tm_options = sqlx::postgres::PgConnectOptions::from_str(&tm_db_url).unwrap();
sqlx::PgPool::connect_with(tm_options).await sqlx::PgPool::connect_with(tm_options).await