diff --git a/.drone.yml b/.drone.yml index dfc291f..abbe7f6 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,3 +1,7 @@ +# NOTE: This Drone CI configuration is being replaced by Forgejo Actions +# See .forgejo/workflows/ directory for the new CI/CD configuration +# This file is kept for reference and backward compatibility + kind: pipeline type: docker name: podcastrr @@ -48,4 +52,4 @@ trigger: - main event: - push - - pull_request \ No newline at end of file + - pull_request diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml new file mode 100644 index 0000000..d3d7f19 --- /dev/null +++ b/.forgejo/workflows/build.yml @@ -0,0 +1,79 @@ +name: Build and Publish + +on: + push: + branches: + - main + tags: + - 'v*' + pull_request: + branches: + - main + +jobs: + test: + runs-on: docker + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.8' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + + - name: Run tests + run: | + pytest + + build: + needs: test + runs-on: docker + if: github.event_name == 'push' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') + steps: + - uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to Forgejo Container Registry + uses: docker/login-action@v2 + with: + registry: ${{ secrets.FORGEJO_REGISTRY }} + username: ${{ secrets.FORGEJO_USERNAME }} + password: ${{ secrets.FORGEJO_PASSWORD }} + + - name: Extract metadata for Docker + id: meta + uses: docker/metadata-action@v4 + with: + images: ${{ secrets.FORGEJO_REGISTRY }}/${{ secrets.FORGEJO_USERNAME }}/podcastrr + tags: | + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}} + type=sha,format=short + + - name: Build and push Docker image + uses: docker/build-push-action@v4 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + 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 + + notify: + needs: [build] + runs-on: docker + if: always() + steps: + - name: Notify about build status + run: | + echo "Build completed with status: ${{ job.status }}" + # Add webhook notification or other notification methods if needed \ No newline at end of file diff --git a/.forgejo/workflows/demo.yaml b/.forgejo/workflows/demo.yaml new file mode 100644 index 0000000..21280bd --- /dev/null +++ b/.forgejo/workflows/demo.yaml @@ -0,0 +1,6 @@ +on: [push] +jobs: + test: + runs-on: docker + steps: + - run: echo All Good \ No newline at end of file diff --git a/README_FORGEJO.md b/README_FORGEJO.md index dae9ddf..d9d5a2b 100644 --- a/README_FORGEJO.md +++ b/README_FORGEJO.md @@ -5,7 +5,7 @@ This guide explains how to set up and use Podcastrr with Forgejo for CI/CD and c ## Prerequisites - A Forgejo instance with: - - CI/CD capabilities (Drone integration) + - Forgejo Actions enabled (preferred) or CI/CD capabilities (Drone integration) - Container registry enabled - Docker and Docker Compose installed on your local machine - Git installed on your local machine @@ -28,19 +28,48 @@ This guide explains how to set up and use Podcastrr with Forgejo for CI/CD and c In your Forgejo repository settings, add the following secrets: +#### For Forgejo Actions (Recommended) +Navigate to your repository settings, then Actions, then Secrets: + +- `FORGEJO_REGISTRY`: Your Forgejo container registry URL (e.g., `registry.your-forgejo-instance.com`) +- `FORGEJO_USERNAME`: Your Forgejo username +- `FORGEJO_PASSWORD`: Your Forgejo password + +#### For Drone CI (Legacy) +Navigate to your repository settings, then Secrets: + - `docker_username`: Your Forgejo username or container registry username - `docker_password`: Your Forgejo password or container registry password - `webhook_url` (optional): URL for build notifications ### 3. Environment Variables +#### For Drone CI (Legacy) Configure the following environment variables in your Forgejo CI/CD settings: - `DRONE_REGISTRY`: Your Forgejo container registry URL (e.g., `registry.your-forgejo-instance.com`) ## CI/CD Pipeline -The included `.drone.yml` file defines a CI/CD pipeline that: +### Forgejo Actions (Recommended) + +The project includes Forgejo Actions workflows in the `.forgejo/workflows/` directory: + +1. **Demo Workflow** (`.forgejo/workflows/demo.yaml`): A simple example workflow that runs on every push. + +2. **Build and Publish Workflow** (`.forgejo/workflows/build.yml`): A comprehensive CI/CD pipeline that: + - Runs tests on every push and pull request + - Builds and pushes a Docker image to your container registry on pushes to the main branch or tags + - Provides build status notifications + +To use Forgejo Actions: +1. Ensure "Enable Repository Actions" is checked in your repository settings +2. The workflows will automatically run when you push to the repository +3. View results in the Actions tab of your repository + +### Drone CI (Legacy) + +The included `.drone.yml` file defines a legacy CI/CD pipeline that: 1. Runs tests on every push and pull request 2. Builds and pushes a Docker image to your container registry on pushes to the main branch @@ -103,4 +132,4 @@ docker build -t podcastrr:local . - [Forgejo Documentation](https://forgejo.org/docs/) - [Drone CI Documentation](https://docs.drone.io/) -- [Docker Documentation](https://docs.docker.com/) \ No newline at end of file +- [Docker Documentation](https://docs.docker.com/)