diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 466a509..0bc7abf 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -26,8 +26,8 @@ jobs: go build -v ./... go test -v ./... - build-binary: - name: Build Go Binary + release-binary: + name: Release Go Binary runs-on: ubuntu-latest needs: build steps: @@ -39,12 +39,42 @@ jobs: with: go-version: 'stable' - - name: Build + - name: Build and Release run: | mkdir -p bin cd cmd go build -o ../bin/backtrace-${{ matrix.goos }}-${{ matrix.goarch }} -v . + - name: Check, Delete Existing Assets and Upload New Assets + run: | + release_id=$(curl -s -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" "https://api.github.com/repos/oneclickvirt/backtrace/releases/tags/output" | jq -r '.id') + echo "Checking, deleting existing assets, and uploading new assets..." + for file in ./bin/*; do + echo "Processing file: $file" + existing_asset_id=$(curl -s -H "Accept: application/vnd.github.v3+json" \ + "https://api.github.com/repos/oneclickvirt/backtrace/releases/$release_id/assets" \ + | jq -r --arg name "$(basename "$file")" '.[] | select(.name == $name) | .id') + if [ -n "$existing_asset_id" ]; then + echo "Asset already exists in release, deleting existing asset..." + delete_response=$(curl -s -X DELETE -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" "https://api.github.com/repos/oneclickvirt/backtrace/releases/assets/$existing_asset_id") + echo "$delete_response" + if [ $? -eq 0 ] && ! echo "$delete_response" | grep -q "error"; then + echo "Existing asset deleted successfully." + else + echo "Failed to delete existing asset. Skipping file upload..." + continue + fi + else + echo "No existing asset found." + fi + echo "Uploading $file to release..." + curl -s -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ + -H "Content-Type: application/zip" \ + --data-binary @"$file" \ + "https://uploads.github.com/repos/oneclickvirt/backtrace/releases/$release_id/assets?name=$(basename "$file")" + rm -rf $file + done + strategy: matrix: goos: [windows, freebsd, openbsd, linux, darwin] @@ -103,34 +133,3 @@ jobs: - goos: openbsd goarch: arm goarm: 7 - - release-binary: - - name: Check, Delete Existing Assets and Upload New Assets - run: | - release_id=$(curl -s -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" "https://api.github.com/repos/oneclickvirt/backtrace/releases/tags/output" | jq -r '.id') - echo "Checking, deleting existing assets, and uploading new assets..." - for file in ./bin/*; do - echo "Processing file: $file" - existing_asset_id=$(curl -s -H "Accept: application/vnd.github.v3+json" \ - "https://api.github.com/repos/oneclickvirt/backtrace/releases/$release_id/assets" \ - | jq -r --arg name "$(basename "$file")" '.[] | select(.name == $name) | .id') - if [ -n "$existing_asset_id" ]; then - echo "Asset already exists in release, deleting existing asset..." - delete_response=$(curl -s -X DELETE -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" "https://api.github.com/repos/oneclickvirt/backtrace/releases/assets/$existing_asset_id") - echo "$delete_response" - if [ $? -eq 0 ] && ! echo "$delete_response" | grep -q "error"; then - echo "Existing asset deleted successfully." - else - echo "Failed to delete existing asset. Skipping file upload..." - continue - fi - else - echo "No existing asset found." - fi - echo "Uploading $file to release..." - curl -s -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ - -H "Content-Type: application/zip" \ - --data-binary @"$file" \ - "https://uploads.github.com/repos/oneclickvirt/backtrace/releases/$release_id/assets?name=$(basename "$file")" - rm -rf $file - done \ No newline at end of file