name: Build on: workflow_dispatch: inputs: name: description: 'Version name (default is ref name)' env: # $VERSION is used by release scripts VERSION: ${{ github.event.inputs.name || github.ref_name }} jobs: test-scrcpy-server: runs-on: ubuntu-latest env: GRADLE: gradle # use native gradle instead of ./gradlew in scripts steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup JDK uses: actions/setup-java@v4 with: distribution: 'zulu' java-version: '17' - name: Test scrcpy-server run: release/test_server.sh build-scrcpy-server: runs-on: ubuntu-latest env: GRADLE: gradle # use native gradle instead of ./gradlew in scripts steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup JDK uses: actions/setup-java@v4 with: distribution: 'zulu' java-version: '17' - name: Build scrcpy-server run: release/build_server.sh - name: Upload scrcpy-server artifact uses: actions/upload-artifact@v4 with: name: scrcpy-server path: release/work/build-server/server/scrcpy-server test-client: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Install dependencies run: | sudo apt update sudo apt install -y meson ninja-build nasm ffmpeg libsdl2-2.0-0 \ libsdl2-dev libavcodec-dev libavdevice-dev libavformat-dev \ libavutil-dev libswresample-dev libusb-1.0-0 libusb-1.0-0-dev - name: Test run: release/test_client.sh build-linux: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Install dependencies run: | sudo apt update sudo apt install -y meson ninja-build nasm ffmpeg libsdl2-2.0-0 \ libsdl2-dev libavcodec-dev libavdevice-dev libavformat-dev \ libavutil-dev libswresample-dev libusb-1.0-0 libusb-1.0-0-dev - name: Build linux run: release/build_linux.sh # upload-artifact does not preserve permissions - name: Tar run: | cd release/work/build-linux mkdir dist-tar cd dist-tar tar -C .. -cvf dist.tar.gz dist/ - name: Upload build-linux artifact uses: actions/upload-artifact@v4 with: name: build-linux-intermediate path: release/work/build-linux/dist-tar/ build-win32: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Install dependencies run: | sudo apt update sudo apt install -y meson ninja-build nasm ffmpeg libsdl2-2.0-0 \ libsdl2-dev libavcodec-dev libavdevice-dev libavformat-dev \ libavutil-dev libswresample-dev libusb-1.0-0 libusb-1.0-0-dev \ mingw-w64 mingw-w64-tools libz-mingw-w64-dev - name: Workaround for old meson version run by Github Actions run: sed -i 's/^pkg-config/pkgconfig/' cross_win32.txt - name: Build win32 run: release/build_windows.sh 32 # upload-artifact does not preserve permissions - name: Tar run: | cd release/work/build-win32 mkdir dist-tar cd dist-tar tar -C .. -cvf dist.tar.gz dist/ - name: Upload build-win32 artifact uses: actions/upload-artifact@v4 with: name: build-win32-intermediate path: release/work/build-win32/dist-tar/ build-win64: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Install dependencies run: | sudo apt update sudo apt install -y meson ninja-build nasm ffmpeg libsdl2-2.0-0 \ libsdl2-dev libavcodec-dev libavdevice-dev libavformat-dev \ libavutil-dev libswresample-dev libusb-1.0-0 libusb-1.0-0-dev \ mingw-w64 mingw-w64-tools libz-mingw-w64-dev - name: Workaround for old meson version run by Github Actions run: sed -i 's/^pkg-config/pkgconfig/' cross_win64.txt - name: Build win64 run: release/build_windows.sh 64 # upload-artifact does not preserve permissions - name: Tar run: | cd release/work/build-win64 mkdir dist-tar cd dist-tar tar -C .. -cvf dist.tar.gz dist/ - name: Upload build-win64 artifact uses: actions/upload-artifact@v4 with: name: build-win64-intermediate path: release/work/build-win64/dist-tar/ package-linux: needs: - build-scrcpy-server - build-linux runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Download scrcpy-server uses: actions/download-artifact@v4 with: name: scrcpy-server path: release/work/build-server/server/ - name: Download build-linux uses: actions/download-artifact@v4 with: name: build-linux-intermediate path: release/work/build-linux/dist-tar/ # upload-artifact does not preserve permissions - name: Detar run: | cd release/work/build-linux tar xf dist-tar/dist.tar.gz - name: Package linux run: release/package_client.sh linux tar.gz - name: Upload linux release uses: actions/upload-artifact@v4 with: name: release-linux path: release/output/ package-win32: needs: - build-scrcpy-server - build-win32 runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Download scrcpy-server uses: actions/download-artifact@v4 with: name: scrcpy-server path: release/work/build-server/server/ - name: Download build-win32 uses: actions/download-artifact@v4 with: name: build-win32-intermediate path: release/work/build-win32/dist-tar/ # upload-artifact does not preserve permissions - name: Detar run: | cd release/work/build-win32 tar xf dist-tar/dist.tar.gz - name: Package win32 run: release/package_client.sh win32 zip - name: Upload win32 release uses: actions/upload-artifact@v4 with: name: release-win32 path: release/output/ package-win64: needs: - build-scrcpy-server - build-win64 runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Download scrcpy-server uses: actions/download-artifact@v4 with: name: scrcpy-server path: release/work/build-server/server/ - name: Download build-win64 uses: actions/download-artifact@v4 with: name: build-win64-intermediate path: release/work/build-win64/dist-tar/ # upload-artifact does not preserve permissions - name: Detar run: | cd release/work/build-win64 tar xf dist-tar/dist.tar.gz - name: Package win64 run: release/package_client.sh win64 zip - name: Upload win64 release uses: actions/upload-artifact@v4 with: name: release-win64 path: release/output release: needs: - build-scrcpy-server - package-linux - package-win32 - package-win64 runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Download scrcpy-server uses: actions/download-artifact@v4 with: name: scrcpy-server path: release/work/build-server/server/ - name: Download release-linux uses: actions/download-artifact@v4 with: name: release-linux path: release/output/ - name: Download release-win32 uses: actions/download-artifact@v4 with: name: release-win32 path: release/output/ - name: Download release-win64 uses: actions/download-artifact@v4 with: name: release-win64 path: release/output/ - name: Package server run: release/package_server.sh - name: Generate checksums run: release/generate_checksums.sh - name: Upload release artifact uses: actions/upload-artifact@v4 with: name: scrcpy-release-${{ env.VERSION }} path: release/output