diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..eacca40 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,90 @@ +name: "YAMPD Build" + +on: + push: + branches: + - main + + workflow_dispatch: + +concurrency: + group: "build" + cancel-in-progress: true + +defaults: + run: + shell: bash + +jobs: + build_linux: + name: "linux-build" + runs-on: ubuntu-latest + steps: + - name: "[DEPS/Tool] bun" + uses: oven-sh/setup-bun@v2 + - name: "[DEPS/Tool] python" + uses: actions/setup-python@v5 + with: + python-version: '3.13.2' + - name: "[Preparing] cloning repository" + uses: actions/checkout@v4 + - name: "[DEPS/Build] Backend" + run: | + "pip install -r ./requirements.txt" + "pip install -r ./requirements.dev.txt" + - name: "[DEPS/Build] Frontend" + run: "cd ./gui && bun install && cd .." + - name: "[Build] Building artifact" + run: "python ./build.py --exe" + - name: "[Publish] Upload GUI Artifact" + uses: actions/upload-artifact@v4 + with: + name: "YAMPD-gui" + path: "./dist/gui" + if-no-files-found: warn + retention-days: 14 + - name: "[Publish] Upload CLI Artifact" + uses: actions/upload-artifact@v4 + with: + name: "YAMPD-cli" + path: "./dist/cli" + if-no-files-found: warn + retention-days: 14 + + build_windows: + name: "windows-build" + runs-on: windows-latest + steps: + - name: "[DEPS/Tool] bun" + uses: oven-sh/setup-bun@v2 + - name: "[DEPS/Tool] python" + uses: actions/setup-python@v5 + with: + python-version: '3.13.2' + - name: "[Preparing] cloning repository" + uses: actions/checkout@v4 + - name: "[DEPS/Build] Backend" + run: | + "pip install -r ./requirements.txt" + "pip install -r ./requirements.dev.txt" + - name: "[DEPS/Build] Frontend" + run: | + "cd ./gui" + "bun install" + "cd .." + - name: "[Build] Building artifact" + run: "python ./build.py --exe" + - name: "[Publish] Upload GUI Artifact" + uses: actions/upload-artifact@v4 + with: + name: "YAMPD-gui.exe" + path: "./dist/gui.exe" + if-no-files-found: warn + retention-days: 14 + - name: "[Publish] Upload CLI Artifact" + uses: actions/upload-artifact@v4 + with: + name: "YAMPD-cli.exe" + path: "./dist/cli.exe" + if-no-files-found: warn + retention-days: 14