name: Build AD Bulk Tool on: push: branches: [main, feature/**, bugfix/**] tags: [v*] pull_request: jobs: build: name: ${{ matrix.name }} strategy: matrix: include: - rid: win-x64 name: Windows x64 suffix: .exe - rid: linux-x64 name: Linux x64 suffix: '' - rid: osx-x64 name: macOS x64 suffix: '' - rid: osx-arm64 name: macOS ARM64 suffix: '' runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup .NET uses: actions/setup-dotnet@v4 with: dotnet-version: '8.0.x' - name: Publish (${{ matrix.rid }}) run: dotnet publish ADBulkTool.csproj -c Release -r ${{ matrix.rid }} --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -o publish/${{ matrix.rid }} - name: Build .deb (linux-x64 only) if: matrix.rid == 'linux-x64' && startsWith(github.ref, 'refs/tags/v') run: | VERSION="${GITHUB_REF_NAME#v}" chmod +x packaging/build-deb.sh packaging/build-deb.sh publish/linux-x64/ADBulkTool "$VERSION" - name: Upload artifact uses: actions/upload-artifact@v4 with: name: ADBulkTool-${{ matrix.rid }} path: publish/${{ matrix.rid }}/ADBulkTool${{ matrix.suffix }} if-no-files-found: error release: needs: [build] runs-on: ubuntu-latest if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') steps: - name: Checkout uses: actions/checkout@v4 - name: Download all artifacts uses: actions/download-artifact@v4 - name: Upload release assets env: GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} run: | set -eux VERSION="${GITHUB_REF_NAME}" API="http://192.168.1.4:30008/api/v1/repos/mikisoq/ADBulk/releases" # Get the release ID for this tag RELEASE_ID=$(curl -s -H "Authorization: token $GITEA_TOKEN" \ "$API/tags/$VERSION" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])") upload() { local file="$1" local name="$2" echo "Uploading $name..." curl -s -X POST -H "Authorization: token $GITEA_TOKEN" \ -F "attachment=@$file" \ "$API/$RELEASE_ID/assets?name=$name" } # Build .deb and upload everything mkdir -p deb_root/DEBIAN deb_root/usr/bin cp ADBulkTool-linux-x64/ADBulkTool deb_root/usr/bin/adbulktool chmod 755 deb_root/usr/bin/adbulktool VERS="${VERSION#v}" sed "s/Version: 1.0.0/Version: $VERS/" packaging/debian/DEBIAN/control > deb_root/DEBIAN/control dpkg-deb --root-owner-group --build deb_root "adbulktool_${VERS}_amd64.deb" upload "ADBulkTool-linux-x64/ADBulkTool" "ADBulkTool-linux-x64" upload "ADBulkTool-win-x64/ADBulkTool.exe" "ADBulkTool-win-x64.exe" upload "ADBulkTool-osx-x64/ADBulkTool" "ADBulkTool-macos-x64" upload "ADBulkTool-osx-arm64/ADBulkTool" "ADBulkTool-macos-arm64" upload "adbulktool_${VERS}_amd64.deb" "adbulktool_${VERS}_amd64.deb" cp packaging/arch/PKGBUILD packaging/arch/.INSTALL . upload "PKGBUILD" "PKGBUILD" upload ".INSTALL" ".INSTALL"