- Convert music category buttons from <button> to native <a> links for better Android compatibility - Convert artist/album nested buttons in TrackList to <a> links to fix HTML validation issues - Add event handlers with proper stopPropagation to maintain click behavior - Increase library overview card sizes from medium to large (50% bigger) - Increase thumbnail sizes in list view from 10x10 to 16x16 - Add console logging for debugging click events on mobile - Remove preventDefault() handlers that were blocking Android touch events These changes resolve navigation issues on Android devices where buttons weren't responding to taps. Native <a> links provide better cross-platform compatibility and allow SvelteKit to handle navigation more reliably. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
4.5 KiB
Building and Pushing the JellyTau Builder Image
This document explains how to create and push the pre-built builder Docker image to your registry for use in Gitea Act CI/CD.
Prerequisites
- Docker installed and running
- Access to your Docker registry (e.g.,
gitea.tourolle.paris) - Docker registry credentials configured (
docker login)
Building the Builder Image
Step 1: Build the Image Locally
# From the project root
docker build -f Dockerfile.builder -t jellytau-builder:latest .
This creates a local image with:
- All system dependencies
- Rust with Android targets
- Android SDK and NDK
- Node.js and Bun
- All build tools pre-installed
Step 2: Tag for Your Registry
Replace gitea.tourolle.paris/dtourolle with your actual registry path:
docker tag jellytau-builder:latest gitea.tourolle.paris/dtourolle/jellytau-builder:latest
Step 3: Login to Your Registry
If not already logged in:
docker login gitea.tourolle.paris
Step 4: Push to Registry
docker push gitea.tourolle.paris/dtourolle/jellytau-builder:latest
Complete One-Liner
docker build -f Dockerfile.builder -t jellytau-builder:latest . && \
docker tag jellytau-builder:latest gitea.tourolle.paris/dtourolle/jellytau-builder:latest && \
docker push gitea.tourolle.paris/dtourolle/jellytau-builder:latest
Verifying the Build
Check that the image was pushed successfully:
# List images in your registry (depends on registry API support)
docker search gitea.tourolle.paris/dtourolle/jellytau-builder
# Or pull and test locally
docker pull gitea.tourolle.paris/dtourolle/jellytau-builder:latest
docker run -it gitea.tourolle.paris/dtourolle/jellytau-builder:latest bun --version
Using in CI/CD
The workflow at .gitea/workflows/build-and-test.yml automatically uses:
container:
image: gitea.tourolle.paris/dtourolle/jellytau-builder:latest
Once pushed, your CI/CD pipeline will use this pre-built image instead of installing everything during the build, saving significant time.
Updating the Builder Image
When dependencies change (new Rust version, Android SDK update, etc.):
- Update
Dockerfile.builderwith the new configuration - Rebuild and push with a new tag:
docker build -f Dockerfile.builder -t jellytau-builder:v1.2.0 .
docker tag jellytau-builder:v1.2.0 gitea.tourolle.paris/dtourolle/jellytau-builder:v1.2.0
docker push gitea.tourolle.paris/dtourolle/jellytau-builder:v1.2.0
- Update the workflow to use the new tag:
container:
image: gitea.tourolle.paris/dtourolle/jellytau-builder:v1.2.0
Image Contents
The builder image includes:
- Base OS: Ubuntu 24.04
- Languages:
- Rust (stable) with targets: aarch64-linux-android, armv7-linux-androideabi, x86_64-linux-android
- Node.js 20.x
- OpenJDK 17 (for Android)
- Tools:
- Bun package manager
- Android SDK 34
- Android NDK 27.0.11902837
- Build essentials (gcc, make, etc.)
- Git, curl, wget
- libssl, libclang development libraries
- Pre-configured:
- Rust toolchain components (rustfmt, clippy)
- Android SDK/NDK environment variables
- All paths optimized for building
Build Time
First build takes ~15-20 minutes depending on internet speed (downloads Android SDK/NDK). Subsequent builds are cached and take seconds.
Storage
The built image is approximately 4-5 GB. Ensure your registry has sufficient storage.
Troubleshooting
"Image not found" in CI
- Verify the image name matches exactly in the workflow
- Check that the image was successfully pushed:
docker pushoutput should show successful layers - Ensure Gitea has access to your registry (check network/firewall)
Build fails with "command not found"
- The image may not have finished pushing. Wait a few moments and retry the CI job.
- Check that all layers were pushed successfully in the push output.
Registry authentication in CI
If your registry requires credentials in CI:
- Create a deploy token in your registry
- Add to Gitea secrets as
REGISTRY_USERNAMEandREGISTRY_TOKEN - Use in workflow:
- name: Login to Registry
run: |
docker login gitea.tourolle.paris -u ${{ secrets.REGISTRY_USERNAME }} -p ${{ secrets.REGISTRY_TOKEN }}