Add a test and make changez?
Some checks failed
Build and Publish / test (push) Successful in 20s
Build and Publish / build (push) Failing after 5m33s
Build and Publish / notify (push) Successful in 1s

This commit is contained in:
Cody Cook 2025-06-17 20:36:20 -07:00
parent 2a9ade77d8
commit 9e19ae6cf6
5 changed files with 133 additions and 11 deletions

View file

@ -57,6 +57,7 @@ jobs:
type=ref,event=pr
type=semver,pattern={{version}}
type=sha,format=short
latest
- name: Build and push Docker image
uses: docker/build-push-action@v4
@ -68,6 +69,11 @@ jobs:
cache-from: type=registry,ref=${{ secrets.FORGEJO_REGISTRY }}/${{ secrets.FORGEJO_USERNAME }}/podcastrr:buildcache
cache-to: type=registry,ref=${{ secrets.FORGEJO_REGISTRY }}/${{ secrets.FORGEJO_USERNAME }}/podcastrr:buildcache,mode=max
- name: Echo package URL
run: |
echo "Docker package published to: ${{ secrets.FORGEJO_REGISTRY }}/${{ secrets.FORGEJO_USERNAME }}/podcastrr"
echo "You can use this package in your docker-compose.yml with: image: ${{ secrets.FORGEJO_REGISTRY }}/${{ secrets.FORGEJO_USERNAME }}/podcastrr:latest"
notify:
needs: [build]
runs-on: docker

View file

@ -66,6 +66,8 @@ A podcast management application similar to Sonarr but for podcasts, built with
## Usage
### Local Development
Run the application:
```
python main.py
@ -73,6 +75,41 @@ python main.py
Then open your browser and navigate to `http://localhost:5000`.
### Docker Deployment
The application can be deployed using Docker in two ways:
#### Option 1: Using the published Docker image from Forgejo registry (recommended for production)
1. Create a `.env` file with the following variables:
```
FORGEJO_REGISTRY=your-forgejo-registry-url
FORGEJO_USERNAME=your-username
PORT=5000
FLASK_ENV=production
SECRET_KEY=your_secret_key
DATABASE_URI=sqlite:///instance/podcastrr.db
DOWNLOAD_PATH=/app/downloads
```
2. Run the application using docker-compose:
```
docker-compose up -d
```
#### Option 2: Building from local Dockerfile (for development)
1. Modify the `docker-compose.yml` file to use the local build instead of the published image:
- Comment out the `image:` line
- Uncomment the `build:` section
2. Run the application using docker-compose:
```
docker-compose up -d
```
The application will be available at `http://localhost:5000` (or the port you specified in the `.env` file).
## Development
1. Install development dependencies:

View file

@ -9,23 +9,63 @@ This document explains how to run Podcastrr using Docker and Docker Compose.
## Quick Start
### Option 1: Using the published Docker image from Forgejo registry (recommended for production)
1. Clone the repository:
```
git clone https://github.com/yourusername/podcastrr.git
cd podcastrr
```
2. Start the application using Docker Compose:
2. Create a `.env` file with the following variables:
```
FORGEJO_REGISTRY=your-forgejo-registry-url
FORGEJO_USERNAME=your-username
PORT=5000
FLASK_ENV=production
SECRET_KEY=your_secret_key
DATABASE_URI=sqlite:///instance/podcastrr.db
DOWNLOAD_PATH=/app/downloads
```
3. Start the application using Docker Compose:
```
docker-compose up -d
```
3. Access the application at http://localhost:5000
4. Access the application at http://localhost:5000 (or the port you specified in the `.env` file)
### Option 2: Building from local Dockerfile (for development)
1. Clone the repository:
```
git clone https://github.com/yourusername/podcastrr.git
cd podcastrr
```
2. Modify the `docker-compose.yml` file to use the local build instead of the published image:
- Comment out the `image:` line
- Uncomment the `build:` section
3. Start the application using Docker Compose:
```
docker-compose up -d
```
4. Access the application at http://localhost:5000
## Configuration
The application is configured using environment variables in the `docker-compose.yml` file. You can modify these variables to customize the application:
The application is configured using environment variables in the `.env` file or directly in the `docker-compose.yml` file. You can modify these variables to customize the application:
### Forgejo Registry Variables (for using the published Docker image)
- `FORGEJO_REGISTRY`: The URL of your Forgejo registry (e.g., `registry.forgejo.example.com`)
- `FORGEJO_USERNAME`: Your Forgejo username
### Application Variables
- `PORT`: The port on which the application will be accessible (default: 5000)
- `FLASK_ENV`: Set to `development` for development mode or `production` for production mode
- `SECRET_KEY`: A secret key for securing the Flask application (change this to a secure random string)
- `DATABASE_URI`: The URI for the SQLite database
@ -96,4 +136,31 @@ If you encounter permission issues with the downloads or instance directories, e
chmod -R 777 downloads instance
```
Note: This is not recommended for production environments. Instead, configure proper user permissions.
Note: This is not recommended for production environments. Instead, configure proper user permissions.
## CI/CD Pipeline
This project includes a CI/CD pipeline configured in `.forgejo/workflows/build.yml` that automatically builds and publishes a Docker image to the Forgejo Container Registry when changes are pushed to the main branch or when a new tag is created.
### How it works
1. When code is pushed to the main branch or a new tag is created, the CI/CD pipeline is triggered.
2. The pipeline first runs tests to ensure the code is working correctly.
3. If the tests pass, the pipeline builds a Docker image using the Dockerfile in the repository.
4. The Docker image is tagged with:
- The branch name (for pushes to branches)
- The PR number (for pull requests)
- The semantic version (for tags in the format v*)
- The short SHA of the commit
- `latest` (for the most recent build)
5. The Docker image is pushed to the Forgejo Container Registry at `${FORGEJO_REGISTRY}/${FORGEJO_USERNAME}/podcastrr`.
### Using the published Docker image
To use the published Docker image in your deployment:
1. Set the `FORGEJO_REGISTRY` and `FORGEJO_USERNAME` environment variables in your `.env` file.
2. Use the docker-compose.yml file as configured (with the `image:` line uncommented).
3. Run `docker-compose up -d` to start the application using the published Docker image.
This allows you to deploy the application without having to build the Docker image locally, making deployments faster and more consistent.

View file

@ -2,13 +2,17 @@ version: '3.8'
services:
app:
# Use either build or image configuration
# For local development:
build:
context: .
dockerfile: Dockerfile
# For Forgejo registry (uncomment and update):
# image: ${FORGEJO_REGISTRY}/${FORGEJO_USERNAME}/podcastrr:latest
# Configuration options:
# Option 1: Use the published Docker image from Forgejo registry (recommended for production)
# Uncomment the image line and comment out the build section
image: ${FORGEJO_REGISTRY}/${FORGEJO_USERNAME}/podcastrr:latest
# Option 2: Build from local Dockerfile (for development)
# Uncomment the build section and comment out the image line
# build:
# context: .
# dockerfile: Dockerfile
ports:
- "${PORT:-5000}:5000"
volumes:

8
tests/test_basic.py Normal file
View file

@ -0,0 +1,8 @@
import pytest
def test_app_exists():
"""
A simple test to verify that the test suite runs.
This test always passes.
"""
assert True