mirror of
https://github.com/Viren070/MediaFusion.git
synced 2025-12-01 23:21:11 +01:00
156 lines
4.7 KiB
YAML
156 lines
4.7 KiB
YAML
name: MediaFusion CI/CD
|
|
|
|
on:
|
|
release:
|
|
types: [ created ]
|
|
|
|
jobs:
|
|
update_version:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
previous_version: ${{ steps.extract_versions.outputs.PREVIOUS_VERSION }}
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Extract versions
|
|
id: extract_versions
|
|
run: |
|
|
# Extract current version from release body
|
|
BODY="${{ github.event.release.body }}"
|
|
if ! PREVIOUS_VERSION=$(echo "$BODY" | grep -o '/compare/.*\.\.\.' | sed 's/\/compare\///' | sed 's/\.\.\.//' || true); then
|
|
echo "Error: Failed to extract previous version from release body"
|
|
exit 1
|
|
fi
|
|
echo "PREVIOUS_VERSION=${PREVIOUS_VERSION}" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Update version numbers
|
|
if: "!github.event.release.prerelease"
|
|
run: |
|
|
make update-version VERSION_NEW=${{ github.ref_name }}
|
|
|
|
- name: Commit and push version updates
|
|
if: "!github.event.release.prerelease"
|
|
run: |
|
|
git config --local user.email "action@github.com"
|
|
git config --local user.name "GitHub Action"
|
|
git add -A
|
|
if git diff-index --quiet HEAD; then
|
|
echo "No changes to commit"
|
|
exit 0
|
|
fi
|
|
git commit -m "chore: update version to ${{ github.ref_name }}"
|
|
git push origin HEAD:main
|
|
|
|
mediafusion_docker_build:
|
|
needs: update_version
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: main # Use main branch with updated versions
|
|
|
|
- name: Set up QEMU
|
|
uses: docker/setup-qemu-action@v3
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to Docker Hub
|
|
uses: docker/login-action@v3
|
|
with:
|
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
|
- name: Build and push
|
|
id: docker_build
|
|
uses: docker/build-push-action@v5
|
|
with:
|
|
context: .
|
|
file: ./deployment/Dockerfile
|
|
platforms: linux/amd64,linux/arm64
|
|
push: true
|
|
build-args: VERSION=${{ github.ref_name }}
|
|
tags: |
|
|
mhdzumair/mediafusion:${{ github.ref_name }}
|
|
mhdzumair/mediafusion:${{ github.event.release.prerelease && 'beta' || 'latest' }}
|
|
|
|
- name: Image digest
|
|
run: echo ${{ steps.docker_build.outputs.digest }}
|
|
|
|
kodi_build:
|
|
needs: update_version
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: main # Use main branch with updated versions
|
|
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: '3.8'
|
|
|
|
- name: Install Python dependencies
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
pip install setuptools wheel
|
|
|
|
- name: Install required packages
|
|
run: sudo apt-get install -y zip xmlstarlet
|
|
|
|
- name: Build addon and repository
|
|
run: |
|
|
make -C kodi
|
|
# Validate build artifacts
|
|
for file in kodi/dist/plugin.video.mediafusion/plugin.video.mediafusion-*.zip kodi/dist/repository.mediafusion/repository.mediafusion-*.zip; do
|
|
if [ ! -f "$file" ]; then
|
|
echo "Error: Build artifact $file not found"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
- name: Deploy to GitHub Pages
|
|
if: "!github.event.release.prerelease"
|
|
uses: peaceiris/actions-gh-pages@v4
|
|
with:
|
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
publish_dir: kodi/dist
|
|
enable_jekyll: false
|
|
force_orphan: true
|
|
|
|
- name: Upload Release Assets
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
files: |
|
|
kodi/dist/plugin.video.mediafusion/plugin.video.mediafusion-*.zip
|
|
prerelease: true
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
generate_release_notes:
|
|
needs: update_version
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Install jq
|
|
run: sudo apt-get install -y jq
|
|
|
|
- name: Generate Release Notes
|
|
run: |
|
|
make generate-notes VERSION_OLD=${{ needs.update_version.outputs.previous_version }} VERSION_NEW=${{ github.ref_name }} ANTHROPIC_API_KEY=${{ secrets.ANTHROPIC_API_KEY }} > release_notes.md
|
|
|
|
- name: Update Release Notes
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
body_path: release_notes.md
|
|
token: ${{ secrets.GITHUB_TOKEN }} |