Skip to content

Commit

Permalink
Add testpypi build and release with uv
Browse files Browse the repository at this point in the history
  • Loading branch information
abhishekmj303 committed Oct 12, 2024
1 parent 0f28009 commit 167f70d
Show file tree
Hide file tree
Showing 5 changed files with 119 additions and 59 deletions.
137 changes: 98 additions & 39 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
@@ -1,33 +1,48 @@
name: Build and Release

on:
push:
tags:
- "v*"
on: push

jobs:
build:
if: ${{ startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/release' }}
strategy:
matrix:
os: [macos-latest, ubuntu-latest, windows-latest]
os: [windows-latest, ubuntu-latest, macos-latest]

runs-on: ${{ matrix.os }}

steps:
- name: Check-out repository
uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v3
with:
enable-cache: true

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
python-version-file: ".python-version"
cache: "pip"
cache-dependency-path: |
**/requirements*.txt
- name: Install your Dependencies
- name: Install the project
run: uv sync --all-extras --dev && source .venv/bin/activate

- name: Build a binary wheel and a source tarball
if: matrix.os == 'ubuntu-latest'
run: |
pip install -r requirements.txt
uv build
- name: Store the distribution packages
if: matrix.os == 'ubuntu-latest'
uses: actions/upload-artifact@v4
with:
name: python-package-distributions
path: dist/
overwrite: true

- name: Build Executable with Nuitka
uses: Nuitka/Nuitka-Action@main
Expand Down Expand Up @@ -60,40 +75,84 @@ jobs:
build/*.bin
build/*.app/**/*
overwrite: true

publish-to-testpypi:
name: Publish Python 🐍 distribution 📦 to TestPyPI
needs:
- build
runs-on: ubuntu-latest

environment:
name: testpypi
url: https://test.pypi.org/p/ytm2spt

permissions:
id-token: write # IMPORTANT: mandatory for trusted publishing

steps:
- name: Download all the dists
uses: actions/download-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Publish distribution 📦 to TestPyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: https://test.pypi.org/legacy/

release:
if: startsWith(github.ref, 'refs/tags/')
needs: build
needs:
- build
- publish-to-testpypi
runs-on: ubuntu-latest

permissions:
contents: write # IMPORTANT: mandatory for making GitHub Releases
id-token: write # IMPORTANT: mandatory for sigstore

steps:
- name: Download All Artifacts
uses: actions/download-artifact@v4
- run: ls -R
- name: Download all the dists
uses: actions/download-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Sign the dists with Sigstore
uses: sigstore/[email protected]
with:
inputs: >-
./dist/*.tar.gz
./dist/*.whl
- name: Download All Artifacts
uses: actions/download-artifact@v4
- run: ls -R

- name: Add Executable Permissions
run: |
chmod +x *build/*.bin *build/*.exe *build/*.app/Contents/MacOS/*
- name: Zip Windows Executable
run: |
cd *windows-build
zip -9 ytm2spt-${{ github.ref_name }}-windows.zip *-installer.exe
- name: Tar Linux Executable
run: |
cd *linux-build
tar -cavf ytm2spt-${{ github.ref_name }}-linux.tar.gz *.bin
- name: Zip MacOS Executable
run: |
cd *macos-build
zip -r -9 ytm2spt-${{ github.ref_name }}-macos.zip *.app
- name: Add Executable Permissions
run: |
chmod +x *build/*.bin *build/*.exe *build/*.app/Contents/MacOS/*
- name: Zip Windows Executable
run: |
cd *windows-build
zip -9 ytm2spt-${{ github.ref_name }}-windows.zip *-installer.exe
- name: Zip Linux Executable
run: |
cd *linux-build
tar -cavf ytm2spt-${{ github.ref_name }}-linux.tar.gz *.bin
- name: Zip MacOS Executable
run: |
cd *macos-build
zip -r -9 ytm2spt-${{ github.ref_name }}-macos.zip *.app
- name: Release
uses: softprops/action-gh-release@v2
with:
draft: true
files: |
*build/ytm2spt-${{ github.ref_name }}-windows.zip
*build/ytm2spt-${{ github.ref_name }}-linux.tar.gz
*build/ytm2spt-${{ github.ref_name }}-macos.zip
- name: GitHub Release
uses: softprops/action-gh-release@v2
with:
draft: true
generate_release_notes: true
files: |
*build/ytm2spt-${{ github.ref_name }}-windows.zip
*build/ytm2spt-${{ github.ref_name }}-linux.tar.gz
*build/ytm2spt-${{ github.ref_name }}-macos.zip
dist/*
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,4 @@ ytmusicapi-oauth.json
*.exe
venv
dist
build
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "ytm2spt"
version = "1.0.2"
version = "1.0.3-rc1"
authors = [
{ name="Abhishek M J", email="[email protected]" },
]
Expand Down
19 changes: 0 additions & 19 deletions src/ytm2spt/__init__.py
Original file line number Diff line number Diff line change
@@ -1,22 +1,3 @@
# Nuitka Configuration
# nuitka-project: --enable-plugins=pyside6
# nuitka-project: --user-package-configuration-file=ytmusicapi.nuitka-package.config.yaml
#
# Compilation mode, standalone everywhere, except on macOS there app bundle
# nuitka-project-if: {OS} in ("Linux", "FreeBSD"):
# nuitka-project: --onefile
# nuitka-project-if: {OS} == "Windows":
# nuitka-project: --standalone
# nuitka-project-if: {OS} == "Darwin":
# nuitka-project: --standalone
# nuitka-project: --macos-create-app-bundle
#
# Debugging options, controlled via environment variable at compile time.
# nuitka-project-if: os.getenv("DEBUG_COMPILATION", "yes") == "yes":
# nuitka-project: --enable-console
# nuitka-project-else:
# nuitka-project: --disable-console

import sys


Expand Down
19 changes: 19 additions & 0 deletions ytm2spt.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,22 @@
# Nuitka Configuration
# nuitka-project: --enable-plugins=pyside6
# nuitka-project: --user-package-configuration-file=ytmusicapi.nuitka-package.config.yaml
#
# Compilation mode, standalone everywhere, except on macOS there app bundle
# nuitka-project-if: {OS} in ("Linux", "FreeBSD"):
# nuitka-project: --onefile
# nuitka-project-if: {OS} == "Windows":
# nuitka-project: --standalone
# nuitka-project-if: {OS} == "Darwin":
# nuitka-project: --standalone
# nuitka-project: --macos-create-app-bundle
#
# Debugging options, controlled via environment variable at compile time.
# nuitka-project-if: os.getenv("DEBUG_COMPILATION", "yes") == "yes":
# nuitka-project: --enable-console
# nuitka-project-else:
# nuitka-project: --disable-console

from src.ytm2spt import main

main()

0 comments on commit 167f70d

Please sign in to comment.