mirror of
				https://github.com/oneclickvirt/backtrace.git
				synced 2025-11-04 07:42:37 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			138 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
name: Build and Release
 | 
						|
 | 
						|
on:
 | 
						|
  # push:
 | 
						|
  #   branches: [ main ]
 | 
						|
  # pull_request:
 | 
						|
  #   branches: [ main ]
 | 
						|
  # release:
 | 
						|
  #   types: [published]
 | 
						|
  workflow_dispatch:
 | 
						|
 | 
						|
jobs:
 | 
						|
  build:
 | 
						|
    name: Build and Test
 | 
						|
    runs-on: ubuntu-latest
 | 
						|
    steps:
 | 
						|
    - name: Checkout code
 | 
						|
      uses: actions/checkout@v3
 | 
						|
      
 | 
						|
    - name: Set up Go
 | 
						|
      uses: actions/setup-go@v3
 | 
						|
      with:
 | 
						|
        go-version: 'stable'
 | 
						|
      
 | 
						|
    - name: Build and Test on Default Platform
 | 
						|
      run: |
 | 
						|
        go build -v ./...
 | 
						|
        go test -v ./...        
 | 
						|
    
 | 
						|
    - name: Delete Existing Release 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 "Deleting existing release assets..."
 | 
						|
        assets=$(curl -s -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/oneclickvirt/backtrace/releases/$release_id/assets" | jq -r '.[] | .id')
 | 
						|
        for asset in $assets; do
 | 
						|
          echo "Deleting asset with ID: $asset"
 | 
						|
          curl -X DELETE -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" "https://api.github.com/repos/oneclickvirt/backtrace/releases/assets/$asset"
 | 
						|
        done
 | 
						|
        sleep 30        
 | 
						|
 | 
						|
  release-binary:
 | 
						|
    name: Release Go Binary
 | 
						|
    runs-on: ubuntu-latest
 | 
						|
    needs: build
 | 
						|
    steps:
 | 
						|
    - name: Checkout code
 | 
						|
      uses: actions/checkout@v3
 | 
						|
 | 
						|
    - name: Set up Go
 | 
						|
      uses: actions/setup-go@v3
 | 
						|
      with:
 | 
						|
        go-version: 'stable'
 | 
						|
 | 
						|
    - name: Build and Release
 | 
						|
      run: |
 | 
						|
        mkdir -p bin
 | 
						|
        cd cmd
 | 
						|
        CGO_ENABLED=0 GOOS=${{ matrix.goos }} GOARCH=${{ matrix.goarch }} go build \
 | 
						|
          -o ../bin/backtrace-${{ matrix.goos }}-${{ matrix.goarch }} \
 | 
						|
          -v \
 | 
						|
          -ldflags="-extldflags=-static -s -w" \
 | 
						|
          -trimpath \
 | 
						|
          .        
 | 
						|
 | 
						|
    - name: 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 "Uploading new assets to release..."
 | 
						|
        for file in ./bin/*; do
 | 
						|
          echo "Uploading $file to release..."
 | 
						|
          curl -s -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
 | 
						|
            -H "Content-Type: application/octet-stream" \
 | 
						|
            --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]
 | 
						|
        goarch: [amd64, 386]
 | 
						|
        exclude:
 | 
						|
          - goarch: 386
 | 
						|
            goos: darwin
 | 
						|
        include:
 | 
						|
          - goos: windows
 | 
						|
            goarch: 386
 | 
						|
          - goos: windows
 | 
						|
            goarch: amd64
 | 
						|
          - goos: windows
 | 
						|
            goarch: arm64
 | 
						|
          - goos: windows
 | 
						|
            goarch: arm
 | 
						|
            goarm: 7
 | 
						|
          - goos: darwin
 | 
						|
            goarch: arm64
 | 
						|
          - goos: linux
 | 
						|
            goarch: arm
 | 
						|
            goarm: 7
 | 
						|
          - goos: linux
 | 
						|
            goarch: arm64
 | 
						|
          - goos: linux
 | 
						|
            goarch: riscv64
 | 
						|
          - goos: linux
 | 
						|
            goarch: mips64
 | 
						|
          - goos: linux
 | 
						|
            goarch: mips64le
 | 
						|
          - goos: linux
 | 
						|
            goarch: mipsle
 | 
						|
          - goos: linux
 | 
						|
            goarch: mips
 | 
						|
          - goos: linux
 | 
						|
            goarch: ppc64
 | 
						|
          - goos: linux
 | 
						|
            goarch: ppc64le
 | 
						|
          - goos: freebsd
 | 
						|
            goarch: arm64
 | 
						|
          - goos: freebsd
 | 
						|
            goarch: arm
 | 
						|
            goarm: 7
 | 
						|
          - goos: openbsd
 | 
						|
            goarch: arm64
 | 
						|
          - goos: openbsd
 | 
						|
            goarch: arm
 | 
						|
            goarm: 7
 | 
						|
          # - goos: linux
 | 
						|
          #   goarch: mipsle
 | 
						|
          #   gomips: softfloat
 | 
						|
          # - goos: linux
 | 
						|
          #   goarch: mips
 | 
						|
          #   gomips: softfloat
 | 
						|
          # - goos: linux
 | 
						|
          #   goarch: arm
 | 
						|
          #   goarm: 6
 | 
						|
          # - goos: linux
 | 
						|
          #   goarch: arm
 | 
						|
          #   goarm: 5
 |