processing / processing/processing4

CI/CD Actions for compiling apps on Github Actions using processing android

Đang mở
#1,011 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Ngôn ngữ chính
Java
Star
494
Fork
183
Merge trung bình
4 giờ 39 phút
Pull request đã merge (30 ngày)
3

Mô tả

Currently, there aren’t any existing GitHub Actions to automatically build desktop and mobile apps from Processing .pde code. I’ve been working on setting one up, as you can see from the build.yml file attached. However, I’m running into an issue determining the correct folder that Processing considers its "sketchbook" directory. This is important because the Android libraries need to be placed there for the project to build successfully.

I would really appreciate your guidance in fixing this. Having a working GitHub Actions setup for Processing sketches, games, and apps could benefit the entire Processing community by enabling automated builds. Not to mention many app stores for libre software won't accept software without reproducible builds using CI/CD actions.

Link to my test project: https://github.com/ronynn/spark


name: Build Processing Android APK

on:
  push:
    tags:
      - "alpha"
      - "beta"
      - "release*"

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - name: Install OpenJDK
        run: |
          sudo apt-get update && sudo apt-get install -y openjdk-17-jdk

      - name: Install Processing CLI
        run: |
          wget https://github.com/processing/processing4/releases/download/processing-1297-4.3.4/processing-4.3.4-linux-x64.tgz -O processing.tgz
          tar -xzf processing.tgz
          sudo mv processing-4.3.4 /opt/processing

      - name: Debug Repository Structure
        run: ls -R $GITHUB_WORKSPACE

      - name: Install Android SDK
        run: |
          sudo apt-get install -y unzip
          wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -O sdk-tools.zip
          mkdir -p $HOME/android-sdk/cmdline-tools
          unzip sdk-tools.zip -d $HOME/android-sdk/cmdline-tools
          mv $HOME/android-sdk/cmdline-tools/cmdline-tools $HOME/android-sdk/cmdline-tools/latest
          echo "ANDROID_HOME=$HOME/android-sdk" >> $GITHUB_ENV
          echo "PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$PATH" >> $GITHUB_ENV
          yes | $HOME/android-sdk/cmdline-tools/latest/bin/sdkmanager --sdk_root=$HOME/android-sdk "platform-tools" "build-tools;34.0.0" "platforms;android-34"
          yes | $HOME/android-sdk/cmdline-tools/latest/bin/sdkmanager --licenses

      - name: Install Processing Android Mode and Setup Sketchbook
        run: |
          # Create a custom sketchbook folder with both modes and libraries directories.
          mkdir -p $HOME/sketchbook/modes
          mkdir -p $HOME/sketchbook/libraries
          wget https://github.com/processing/processing-android/releases/download/latest/AndroidMode.zip -O AndroidMode.zip
          unzip AndroidMode.zip -d $HOME/sketchbook/modes/
          # If the Android Mode package contains libraries (commonly in modes/AndroidMode/libraries),
          # copy them into the sketchbook libraries folder so Processing can find them.
          if [ -d "$HOME/sketchbook/modes/AndroidMode/libraries" ]; then
            cp -r $HOME/sketchbook/modes/AndroidMode/libraries/* $HOME/sketchbook/libraries/
          fi
          echo "PROCESSING_SKETCHBOOK=$HOME/sketchbook" >> $GITHUB_ENV
          echo "Sketchbook structure:" 
          ls -R $HOME/sketchbook

      - name: Generate Android Project
        run: |
          /opt/processing/processing-java \
            --sketch=$GITHUB_WORKSPACE/spark \
            --output=$GITHUB_WORKSPACE/build \
            --force --export --variant android \
            --sketchbook=$HOME/sketchbook

      - name: Build APK (Ant)
        run: |
          cd $GITHUB_WORKSPACE/build/android
          ant debug
          ant release

      - name: Upload Debug APK as Artifact
        uses: actions/upload-artifact@v4
        with:
          name: Processing-Android-APK-Debug
          path: build/android/bin/app-debug.apk

      - name: Upload Unsigned APK as Artifact
        uses: actions/upload-artifact@v4
        with:
          name: Processing-Android-APK-Unsigned
          path: build/android/bin/app-release-unsigned.apk

      - name: Create GitHub Release (Only for Release Tags)
        if: startsWith(github.ref, 'refs/tags/release')
        uses: softprops/action-gh-release@v1
        with:
          tag_name: ${{ github.ref_name }}
          name: Processing APK - ${{ github.ref_name }}
          draft: false
          prerelease: false
          files: |
            build/android/bin/app-debug.apk
            build/android/bin/app-release-unsigned.apk
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Bắt đầu với workflow build.yml trong issue và lệnh gọi processing-java, đặc biệt là đường dẫn --sketchbook và việc thiết lập Android Mode. Xác minh Processing mong đợi thư mục sketchbook và bố cục thư viện nào, sau đó kiểm thử workflow với dự án spark được liên kết. Được xem là hoàn tất khi một lần chạy GitHub Actions có thể tạo và build các artifact APK Android một cách có thể tái lập.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
android, github-actions, java
Lĩnh vực
build-system, ci-cd, mobile
Loại issue
Tính năng
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Cần làm rõ
Mức phù hợp với người mới
30/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.