name: Build and Release on: push: tags: - '*.*.*' jobs: build-and-release: runs-on: ubuntu-latest container: image: devkitpro/devkitarm:20251231 steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Build payload env: DEVKITARM: /opt/devkitpro/devkitARM run: make - name: Create release and upload asset env: SERVER_URL: ${{ github.server_url }} API_URL: ${{ github.api_url }} REPOSITORY: ${{ github.repository }} GITHUB_REF: ${{ github.ref }} TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | TAG="${GITHUB_REF#refs/tags/}" BIN_PATH="output/OmniNX-Installer.bin" # API URL: GitHub uses api.github.com, Gitea uses server_url/api/v1 if [[ "$API_URL" != "" ]]; then API_BASE="$API_URL" else API_BASE="$SERVER_URL/api/v1" fi # Create release RELEASE_RESPONSE=$(curl -s -X POST \ -H "Authorization: token $TOKEN" \ -H "Content-Type: application/json" \ -d "{\"tag_name\": \"$TAG\", \"name\": \"$TAG\", \"body\": \"OmniNX Installer Payload $TAG\"}" \ "$API_BASE/repos/$REPOSITORY/releases") RELEASE_ID=$(echo "$RELEASE_RESPONSE" | grep -o '"id":[0-9]*' | head -1 | cut -d':' -f2) UPLOAD_URL=$(echo "$RELEASE_RESPONSE" | grep -o '"upload_url":"[^"]*' | head -1 | cut -d'"' -f4) if [ -z "$RELEASE_ID" ]; then echo "Failed to create release. Response: $RELEASE_RESPONSE" exit 1 fi # Upload asset (GitHub uses upload_url; Gitea uses assets endpoint) if [[ -n "$UPLOAD_URL" ]]; then UPLOAD_URL="${UPLOAD_URL%%\{*}" curl -X POST \ -H "Authorization: token $TOKEN" \ -H "Content-Type: application/octet-stream" \ --data-binary "@$BIN_PATH" \ "${UPLOAD_URL}?name=OmniNX-Installer.bin" else curl -X POST \ -H "Authorization: token $TOKEN" \ -F "attachment=@$BIN_PATH" \ "$API_BASE/repos/$REPOSITORY/releases/$RELEASE_ID/assets?name=OmniNX-Installer.bin" fi