name: Build and Release on: push: branches: - main jobs: build-x86_64: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: '3.11' - name: Install dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt - name: Build with PyInstaller run: | cd app pyinstaller --onefile --add-data "ui:ui" wolServer.py - name: Upload x86_64 Artifact uses: actions/upload-artifact@v3 with: name: executable-x86_64 path: app/dist/wolServer build-arm: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Install QEMU uses: docker/setup-qemu-action@v2 - name: Build ARM Executable run: | docker run --rm --privileged multiarch/qemu-user-static --reset -p yes docker buildx create --use docker buildx build --platform linux/arm64/v8 -t arm-builder --load --file - . <> $GITEA_ENV - name: Create Release env: GITEA_TOKEN: ${{ secrets.mytoken }} run: | curl -X POST "https://git.konsthol.eu/api/v1/repos/konsthol/WOL-Ly/releases" \ -H "Authorization: token ${{ secrets.mytoken }}" \ -H "Content-Type: application/json" \ -d '{ "tag_name": "'"${{ env.TAG }}"'", "target_commitish": "main", "name": "'"${{ env.TAG }}"'", "body": "Automated push release", "draft": false, "prerelease": false }' - name: Upload x86_64 Executable to Release env: GITEA_TOKEN: ${{ secrets.mytoken }} run: | if [ -f "app/dist/wolServer-x86_64" ]; then curl --data-binary "@app/dist/wolServer-x86_64" \ -H "Authorization: token ${{ secrets.mytoken }}" \ -H "Content-Type: application/octet-stream" \ "https://git.konsthol.eu/api/v1/repos/konsthol/WOL-Ly/releases/$(curl -s https://git.konsthol.eu/api/v1/repos/konsthol/WOL-Ly/releases/latest | jq -r '.id')/assets?name=wolServer-x86_64" else echo "x86_64 executable not found" fi - name: Upload ARM Executable to Release env: GITEA_TOKEN: ${{ secrets.mytoken }} run: | if [ -f "app/dist/wolServer-arm" ]; then curl --data-binary "@app/dist/wolServer-arm" \ -H "Authorization: token ${{ secrets.mytoken }}" \ -H "Content-Type: application/octet-stream" \ "https://git.konsthol.eu/api/v1/repos/konsthol/WOL-Ly/releases/$(curl -s https://git.konsthol.eu/api/v1/repos/konsthol/WOL-Ly/releases/latest | jq -r '.id')/assets?name=wolServer-arm" else echo "ARM executable not found" fi cleanup: needs: [release] runs-on: ubuntu-latest steps: - name: Cleanup Buildx Containers run: | docker ps -q --filter "name=buildx" | xargs -r docker stop docker ps -aq --filter "name=buildx" | xargs -r docker rm docker images --filter "reference=moby/buildkit" -q | xargs -r docker rmi docker images --filter "reference=arm-builder" -q | xargs -r docker rmi docker images --filter "reference=multiarch/qemu-user-static" -q | xargs -r docker rmi docker images --filter "reference=tonistiigi/binfmt" -q | xargs -r docker rmi docker volume ls --filter "name=buildx" -q | xargs -r docker volume rm #docker images --filter "reference=gitea/runner-images" -q | xargs -r docker rmi #docker volume ls --filter "name=act" -q | xargs -r docker volume rm