Browse Source

release: Fix workflow

世界 7 months ago
parent
commit
6aae834493
3 changed files with 53 additions and 33 deletions
  1. 15 12
      .github/workflows/build.yml
  2. 13 8
      .github/workflows/linux.yml
  3. 25 13
      cmd/internal/read_tag/main.go

+ 15 - 12
.github/workflows/build.yml

@@ -55,7 +55,7 @@ jobs:
       - name: Calculate version
       - name: Calculate version
         if: github.event_name != 'workflow_dispatch'
         if: github.event_name != 'workflow_dispatch'
         run: |-
         run: |-
-          go run -v ./cmd/internal/read_tag --nightly
+          go run -v ./cmd/internal/read_tag --ci --nightly
       - name: Set outputs
       - name: Set outputs
         id: outputs
         id: outputs
         run: |-
         run: |-
@@ -165,6 +165,9 @@ jobs:
           PKG_NAME="sing-box_${{ needs.calculate_version.outputs.version }}_${{ matrix.os }}_${{ matrix.arch }}${ARM_VERSION}"
           PKG_NAME="sing-box_${{ needs.calculate_version.outputs.version }}_${{ matrix.os }}_${{ matrix.arch }}${ARM_VERSION}"
           echo "DIR_NAME=${DIR_NAME}" >> "${GITHUB_ENV}"
           echo "DIR_NAME=${DIR_NAME}" >> "${GITHUB_ENV}"
           echo "PKG_NAME=${PKG_NAME}" >> "${GITHUB_ENV}"
           echo "PKG_NAME=${PKG_NAME}" >> "${GITHUB_ENV}"
+          PKG_VERSION="${{ needs.calculate_version.outputs.version }}"
+          PKG_VERSION="${PKG_VERSION//-/\~}"
+          echo "PKG_VERSION=${PKG_VERSION}" >> "${GITHUB_ENV}"
       - name: Package DEB
       - name: Package DEB
         if: matrix.debian != ''
         if: matrix.debian != ''
         run: |
         run: |
@@ -172,7 +175,7 @@ jobs:
           sudo gem install fpm
           sudo gem install fpm
           sudo apt-get install -y debsigs
           sudo apt-get install -y debsigs
           fpm -t deb \
           fpm -t deb \
-            -v "${{ needs.calculate_version.outputs.version }}" \
+            -v "$PKG_VERSION" \
             -p "dist/${PKG_NAME}.deb" \
             -p "dist/${PKG_NAME}.deb" \
             --architecture ${{ matrix.debian }} \
             --architecture ${{ matrix.debian }} \
             dist/sing-box=/usr/bin/sing-box
             dist/sing-box=/usr/bin/sing-box
@@ -189,7 +192,7 @@ jobs:
           set -xeuo pipefail
           set -xeuo pipefail
           sudo gem install fpm
           sudo gem install fpm
           fpm -t rpm \
           fpm -t rpm \
-            -v "${{ needs.calculate_version.outputs.version }}" \
+            -v "$PKG_VERSION" \
             -p "dist/${PKG_NAME}.rpm" \
             -p "dist/${PKG_NAME}.rpm" \
             --architecture ${{ matrix.rpm }} \
             --architecture ${{ matrix.rpm }} \
             dist/sing-box=/usr/bin/sing-box
             dist/sing-box=/usr/bin/sing-box
@@ -208,7 +211,7 @@ jobs:
           sudo gem install fpm
           sudo gem install fpm
           sudo apt-get install -y libarchive-tools
           sudo apt-get install -y libarchive-tools
           fpm -t pacman \
           fpm -t pacman \
-            -v "${{ needs.calculate_version.outputs.version }}" \
+            -v "$PKG_VERSION" \
             -p "dist/${PKG_NAME}.pkg.tar.zst" \
             -p "dist/${PKG_NAME}.pkg.tar.zst" \
             --architecture ${{ matrix.pacman }} \
             --architecture ${{ matrix.pacman }} \
             dist/sing-box=/usr/bin/sing-box
             dist/sing-box=/usr/bin/sing-box
@@ -218,8 +221,8 @@ jobs:
           cd dist
           cd dist
           mkdir -p "${DIR_NAME}"
           mkdir -p "${DIR_NAME}"
           cp ../LICENSE "${DIR_NAME}"
           cp ../LICENSE "${DIR_NAME}"
-          if [ '${{ matrix.os }}' = 'windoes' ]; then
-            cp sing-box.exe "${DIR_NAME}"
+          if [ '${{ matrix.os }}' = 'windows' ]; then
+            cp sing-box "${DIR_NAME}/sing-box.exe"
             zip -r "${DIR_NAME}.zip" "${DIR_NAME}"
             zip -r "${DIR_NAME}.zip" "${DIR_NAME}"
           else
           else
             cp sing-box "${DIR_NAME}"
             cp sing-box "${DIR_NAME}"
@@ -305,9 +308,9 @@ jobs:
           LOCAL_PROPERTIES: ${{ secrets.LOCAL_PROPERTIES }}
           LOCAL_PROPERTIES: ${{ secrets.LOCAL_PROPERTIES }}
       - name: Prepare upload
       - name: Prepare upload
         run: |-
         run: |-
-          mkdir -p dist/release
-          cp clients/android/app/build/outputs/apk/play/release/*.apk dist/release
-          cp clients/android/app/build/outputs/apk/other/release/*-universal.apk dist/release
+          mkdir -p dist
+          cp clients/android/app/build/outputs/apk/play/release/*.apk dist
+          cp clients/android/app/build/outputs/apk/other/release/*-universal.apk dist
       - name: Upload artifact
       - name: Upload artifact
         uses: actions/upload-artifact@v4
         uses: actions/upload-artifact@v4
         with:
         with:
@@ -555,9 +558,9 @@ jobs:
           zip -r SFM.dSYMs.zip dSYMs
           zip -r SFM.dSYMs.zip dSYMs
           popd
           popd
 
 
-          mkdir -p dist/release
-          cp clients/apple/SFM.dmg "dist/release/SFM-${VERSION}-universal.dmg"
-          cp "clients/apple/${{ matrix.archive }}/SFM.dSYMs.zip" "dist/release/SFM-${VERSION}-universal.dSYMs.zip"
+          mkdir -p dist
+          cp clients/apple/SFM.dmg "dist/SFM-${VERSION}-universal.dmg"
+          cp "clients/apple/${{ matrix.archive }}/SFM.dSYMs.zip" "dist/SFM-${VERSION}-universal.dSYMs.zip"
       - name: Upload image
       - name: Upload image
         if: matrix.if && matrix.name == 'macOS-standalone' && github.event_name == 'workflow_dispatch'
         if: matrix.if && matrix.name == 'macOS-standalone' && github.event_name == 'workflow_dispatch'
         uses: actions/upload-artifact@v4
         uses: actions/upload-artifact@v4

+ 13 - 8
.github/workflows/linux.yml

@@ -34,7 +34,7 @@ jobs:
       - name: Calculate version
       - name: Calculate version
         if: github.event_name != 'workflow_dispatch'
         if: github.event_name != 'workflow_dispatch'
         run: |-
         run: |-
-          go run -v ./cmd/internal/read_tag --nightly
+          go run -v ./cmd/internal/read_tag --ci --nightly
       - name: Set outputs
       - name: Set outputs
         id: outputs
         id: outputs
         run: |-
         run: |-
@@ -109,6 +109,11 @@ jobs:
         if: contains(needs.calculate_version.outputs.version, '-')
         if: contains(needs.calculate_version.outputs.version, '-')
         run: |-
         run: |-
           echo "NAME=sing-box-beta" >> "$GITHUB_ENV"
           echo "NAME=sing-box-beta" >> "$GITHUB_ENV"
+      - name: Set version
+        run: |-
+          PKG_VERSION="${{ needs.calculate_version.outputs.version }}"
+          PKG_VERSION="${PKG_VERSION//-/\~}"
+          echo "PKG_VERSION=${PKG_VERSION}" >> "${GITHUB_ENV}"
       - name: Package DEB
       - name: Package DEB
         if: matrix.debian != ''
         if: matrix.debian != ''
         run: |
         run: |
@@ -116,10 +121,11 @@ jobs:
           sudo gem install fpm
           sudo gem install fpm
           sudo apt-get install -y debsigs
           sudo apt-get install -y debsigs
           fpm -t deb \
           fpm -t deb \
-            -v "${{ needs.calculate_version.outputs.version }}" \
+            --name "${NAME}" \
+            -v "$PKG_VERSION" \
             -p "dist/${NAME}_${{ needs.calculate_version.outputs.version }}_linux_${{ matrix.debian }}.deb" \
             -p "dist/${NAME}_${{ needs.calculate_version.outputs.version }}_linux_${{ matrix.debian }}.deb" \
             --architecture ${{ matrix.debian }} \
             --architecture ${{ matrix.debian }} \
-            dist/sing-box=/usr/bin/${NAME}
+            dist/sing-box=/usr/bin/sing-box
           curl -Lo '/tmp/debsigs.diff' 'https://gitlab.com/debsigs/debsigs/-/commit/160138f5de1ec110376d3c807b60a37388bc7c90.diff'
           curl -Lo '/tmp/debsigs.diff' 'https://gitlab.com/debsigs/debsigs/-/commit/160138f5de1ec110376d3c807b60a37388bc7c90.diff'
           sudo patch /usr/bin/debsigs < '/tmp/debsigs.diff'
           sudo patch /usr/bin/debsigs < '/tmp/debsigs.diff'
           rm -rf $HOME/.gnupg
           rm -rf $HOME/.gnupg
@@ -133,10 +139,11 @@ jobs:
           set -xeuo pipefail
           set -xeuo pipefail
           sudo gem install fpm
           sudo gem install fpm
           fpm -t rpm \
           fpm -t rpm \
-            -v "${{ needs.calculate_version.outputs.version }}" \
+            --name "${NAME}" \
+            -v "$PKG_VERSION" \
             -p "dist/${NAME}_${{ needs.calculate_version.outputs.version }}_linux_${{ matrix.rpm }}.rpm" \
             -p "dist/${NAME}_${{ needs.calculate_version.outputs.version }}_linux_${{ matrix.rpm }}.rpm" \
             --architecture ${{ matrix.rpm }} \
             --architecture ${{ matrix.rpm }} \
-            dist/sing-box=/usr/bin/${NAME}
+            dist/sing-box=/usr/bin/sing-box
           cat > $HOME/.rpmmacros <<EOF
           cat > $HOME/.rpmmacros <<EOF
           %_gpg_name ${{ secrets.GPG_KEY_ID }}
           %_gpg_name ${{ secrets.GPG_KEY_ID }}
           %_gpg_sign_cmd_extra_args --pinentry-mode loopback --passphrase ${{ secrets.GPG_PASSPHRASE }}
           %_gpg_sign_cmd_extra_args --pinentry-mode loopback --passphrase ${{ secrets.GPG_PASSPHRASE }}
@@ -175,6 +182,4 @@ jobs:
           merge-multiple: true
           merge-multiple: true
       - name: Publish packages
       - name: Publish packages
         run: |-
         run: |-
-          wget -O fury-cli.deb https://github.com/gemfury/cli/releases/download/v0.23.0/fury-cli_0.23.0_linux_amd64.deb
-          sudo dpkg -i fury-cli.deb
-          fury migrate dist --as=sagernet --api-token ${{ secrets.FURY_TOKEN }}
+          ls dist | xargs -I {} curl -F "package=@dist/{}" https://${{ secrets.FURY_TOKEN }}@push.fury.io/sagernet/

+ 25 - 13
cmd/internal/read_tag/main.go

@@ -5,40 +5,52 @@ import (
 	"os"
 	"os"
 
 
 	"github.com/sagernet/sing-box/cmd/internal/build_shared"
 	"github.com/sagernet/sing-box/cmd/internal/build_shared"
+	"github.com/sagernet/sing-box/common/badversion"
 	"github.com/sagernet/sing-box/log"
 	"github.com/sagernet/sing-box/log"
 )
 )
 
 
-var nightly bool
+var (
+	flagRunInCI    bool
+	flagRunNightly bool
+)
 
 
 func init() {
 func init() {
-	flag.BoolVar(&nightly, "nightly", false, "Print nightly tag")
+	flag.BoolVar(&flagRunInCI, "ci", false, "Run in CI")
+	flag.BoolVar(&flagRunNightly, "nightly", false, "Run nightly")
 }
 }
 
 
 func main() {
 func main() {
 	flag.Parse()
 	flag.Parse()
-	if nightly {
-		version, err := build_shared.ReadTagVersionRev()
+	var (
+		versionStr string
+		err        error
+	)
+	if flagRunNightly {
+		var version badversion.Version
+		version, err = build_shared.ReadTagVersionRev()
+		if err == nil {
+			if version.PreReleaseIdentifier == "" {
+				version.Patch++
+			}
+			versionStr = version.String()
+		}
+	} else {
+		versionStr, err = build_shared.ReadTag()
+	}
+	if flagRunInCI {
 		if err != nil {
 		if err != nil {
 			log.Fatal(err)
 			log.Fatal(err)
 		}
 		}
-		var versionStr string
-		if version.PreReleaseIdentifier != "" {
-			versionStr = version.VersionString() + "-nightly"
-		} else {
-			version.Patch++
-			versionStr = version.VersionString() + "-nightly"
-		}
 		err = setGitHubEnv("version", versionStr)
 		err = setGitHubEnv("version", versionStr)
 		if err != nil {
 		if err != nil {
 			log.Fatal(err)
 			log.Fatal(err)
 		}
 		}
 	} else {
 	} else {
-		tag, err := build_shared.ReadTag()
 		if err != nil {
 		if err != nil {
 			log.Error(err)
 			log.Error(err)
 			os.Stdout.WriteString("unknown\n")
 			os.Stdout.WriteString("unknown\n")
 		} else {
 		} else {
-			os.Stdout.WriteString(tag + "\n")
+			os.Stdout.WriteString(versionStr + "\n")
 		}
 		}
 	}
 	}
 }
 }