From f85067998fbb6e99995de7f6d821c320efb88578 Mon Sep 17 00:00:00 2001 From: Evan Simkowitz Date: Fri, 23 Feb 2024 17:44:00 -0800 Subject: [PATCH] Get version for build-universal from the build-helper output, use package.json for all versioning (#321) * store version for build in txt file * get version from version.txt * remove quotes * Use version.js for Go version too * test * test * simplify things more * rename zips to consistent waveterm name * remove newline * always use v * always use Wave rather than waveterm --- .github/workflows/build-helper.yml | 9 +++++++-- buildres/build-universal.sh | 4 ++-- package.json | 4 ++-- scripthaus.md | 9 ++++++--- version.js | 2 +- wavesrv/cmd/main-server.go | 6 +++++- wavesrv/pkg/scbase/scbase.go | 4 +++- 7 files changed, 26 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build-helper.yml b/.github/workflows/build-helper.yml index 8b842f394..ca00cec90 100644 --- a/.github/workflows/build-helper.yml +++ b/.github/workflows/build-helper.yml @@ -5,6 +5,8 @@ env: NODE_VERSION: "21.5.0" jobs: runbuild: + outputs: + WAVETERM_VERSION: ${{ steps.set-version.outputs.WAVETERM_VERSION }} strategy: matrix: include: @@ -43,9 +45,10 @@ jobs: with: node-version: ${{env.NODE_VERSION}} cache: "yarn" - - run: | + - id: set-version + run: | VERSION=$(node -e 'console.log(require("./version.js"))') - echo "WAVETERM_VERSION=${VERSION:1}" >> $GITHUB_ENV + echo "WAVETERM_VERSION=${VERSION}" >> "$GITHUB_OUTPUT" - run: yarn --frozen-lockfile - run: ./scripthaus/scripthaus run ${{ matrix.scripthaus }} - uses: actions/upload-artifact@v4 @@ -62,6 +65,8 @@ jobs: with: merge-multiple: true path: buildtemp + - run: | + echo "${{ needs.runbuild.outputs.WAVETERM_VERSION }}" > buildtemp/version.txt - run: (cd buildtemp; zip ../waveterm-builds.zip *) - run: aws s3 cp waveterm-builds.zip s3://waveterm-github-artifacts/ env: diff --git a/buildres/build-universal.sh b/buildres/build-universal.sh index f7d33917d..f25192b80 100644 --- a/buildres/build-universal.sh +++ b/buildres/build-universal.sh @@ -67,8 +67,8 @@ node $SCRIPT_DIR/osx-sign.js DEBUG=electron-notarize node $SCRIPT_DIR/osx-notarize.js echo "universal app creation success (build/sign/notarize)" -UVERSION=$(node -e "console.log(require('${SCRIPT_DIR}/../version.js'))") -UPACKAGE_NAME="waveterm-macos-universal-${UVERSION}" +UVERSION=$(cat $BUILDS_DIR/version.txt) +UPACKAGE_NAME="Wave-macos-universal-${UVERSION}" echo "creating universal zip" ditto $TEMP_WAVE_DIR_UNIVERSAL $ZIP_DIR/Wave.app diff --git a/package.json b/package.json index a633e9b22..ac92b174b 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "waveterm", "author": "Command Line Inc", "productName": "Wave", - "version": "0.6.1", + "version": "v0.6.1", "main": "dist/emain.js", "license": "Apache-2.0", "dependencies": { @@ -90,4 +90,4 @@ "webpack-merge": "^5.8.0" }, "scripts": {} -} +} \ No newline at end of file diff --git a/scripthaus.md b/scripthaus.md index f3020142b..3b93aafec 100644 --- a/scripthaus.md +++ b/scripthaus.md @@ -43,12 +43,13 @@ rm -rf dist/ rm -rf bin/ rm -rf build/ node_modules/.bin/webpack --env prod +WAVESRV_VERSION=$(node -e 'console.log(require("./version.js"))') GO_LDFLAGS="-s -w -X main.BuildTime=$(date +'%Y%m%d%H%M')" (cd waveshell; CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags="$GO_LDFLAGS" -o ../bin/mshell/mshell-v0.4-darwin.amd64 main-waveshell.go) (cd waveshell; CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -ldflags="$GO_LDFLAGS" -o ../bin/mshell/mshell-v0.4-darwin.arm64 main-waveshell.go) (cd waveshell; CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="$GO_LDFLAGS" -o ../bin/mshell/mshell-v0.4-linux.amd64 main-waveshell.go) (cd waveshell; CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags="$GO_LDFLAGS" -o ../bin/mshell/mshell-v0.4-linux.arm64 main-waveshell.go) -(cd wavesrv; CGO_ENABLED=1 go build -tags "osusergo,netgo,sqlite_omit_load_extension" -ldflags "-X main.BuildTime=$(date +'%Y%m%d%H%M')" -o ../bin/wavesrv ./cmd) +(cd wavesrv; CGO_ENABLED=1 go build -tags "osusergo,netgo,sqlite_omit_load_extension" -ldflags "-X main.BuildTime=$(date +'%Y%m%d%H%M') -X main.WaveVersion=$WAVESRV_VERSION" -o ../bin/wavesrv ./cmd) node_modules/.bin/electron-forge make ``` @@ -59,13 +60,14 @@ rm -rf dist/ rm -rf bin/ rm -rf build/ node_modules/.bin/webpack --env prod +WAVESRV_VERSION=$(node -e 'console.log(require("./version.js"))') GO_LDFLAGS="-s -w -X main.BuildTime=$(date +'%Y%m%d%H%M')" (cd waveshell; CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags="$GO_LDFLAGS" -o ../bin/mshell/mshell-v0.4-darwin.amd64 main-waveshell.go) (cd waveshell; CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -ldflags="$GO_LDFLAGS" -o ../bin/mshell/mshell-v0.4-darwin.arm64 main-waveshell.go) (cd waveshell; CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="$GO_LDFLAGS" -o ../bin/mshell/mshell-v0.4-linux.amd64 main-waveshell.go) (cd waveshell; CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags="$GO_LDFLAGS" -o ../bin/mshell/mshell-v0.4-linux.arm64 main-waveshell.go) # adds -extldflags=-static, *only* on linux (macos does not support fully static binaries) to avoid a glibc dependency -(cd wavesrv; CGO_ENABLED=1 go build -tags "osusergo,netgo,sqlite_omit_load_extension" -ldflags "-linkmode 'external' -extldflags=-static $GO_LDFLAGS" -o ../bin/wavesrv ./cmd) +(cd wavesrv; CGO_ENABLED=1 go build -tags "osusergo,netgo,sqlite_omit_load_extension" -ldflags "-linkmode 'external' -extldflags=-static $GO_LDFLAGS -X main.WaveVersion=$WAVESRV_VERSION" -o ../bin/wavesrv ./cmd) node_modules/.bin/electron-forge make ``` @@ -77,8 +79,9 @@ open out/Wave-darwin-x64/Wave.app ```bash # @scripthaus command build-wavesrv +WAVESRV_VERSION=$(node -e 'console.log(require("./version.js"))') cd wavesrv -CGO_ENABLED=1 go build -tags "osusergo,netgo,sqlite_omit_load_extension" -ldflags "-X main.BuildTime=$(date +'%Y%m%d%H%M')" -o ../bin/wavesrv ./cmd +CGO_ENABLED=1 go build -tags "osusergo,netgo,sqlite_omit_load_extension" -ldflags "-X main.BuildTime=$(date +'%Y%m%d%H%M') -X main.WaveVersion=$WAVESRV_VERSION" -o ../bin/wavesrv ./cmd ``` ```bash diff --git a/version.js b/version.js index 320e8422a..1884c00bd 100644 --- a/version.js +++ b/version.js @@ -1,5 +1,5 @@ const path = require("path"); const packageJson = require(path.resolve(__dirname, "package.json")); -const VERSION = `v${packageJson.version}`; +const VERSION = `${packageJson.version}`; module.exports = VERSION; diff --git a/wavesrv/cmd/main-server.go b/wavesrv/cmd/main-server.go index 8fbc23d0d..db9b38b9c 100644 --- a/wavesrv/cmd/main-server.go +++ b/wavesrv/cmd/main-server.go @@ -66,10 +66,13 @@ const TelemetryInterval = 8 * time.Hour const MaxWriteFileMemSize = 20 * (1024 * 1024) // 20M +// these are set at build time +var WaveVersion = "v0.0.0" +var BuildTime = "0" + var GlobalLock = &sync.Mutex{} var WSStateMap = make(map[string]*scws.WSState) // clientid -> WsState var GlobalAuthKey string -var BuildTime = "0" var shutdownOnce sync.Once var ContentTypeHeaderValidRe = regexp.MustCompile(`^\w+/[\w.+-]+$`) @@ -804,6 +807,7 @@ func doShutdown(reason string) { func main() { scbase.BuildTime = BuildTime + scbase.WaveVersion = WaveVersion base.ProcessType = base.ProcessType_WaveSrv wlog.GlobalSubsystem = base.ProcessType_WaveSrv wlog.LogConsumer = wlog.LogWithLogger diff --git a/wavesrv/pkg/scbase/scbase.go b/wavesrv/pkg/scbase/scbase.go index bc9ab45ba..3bc397156 100644 --- a/wavesrv/pkg/scbase/scbase.go +++ b/wavesrv/pkg/scbase/scbase.go @@ -35,14 +35,16 @@ const WaveLockFile = "waveterm.lock" const WaveDirName = ".waveterm" // must match emain.ts const WaveDevDirName = ".waveterm-dev" // must match emain.ts const WaveAppPathVarName = "WAVETERM_APP_PATH" -const WaveVersion = "v0.6.1" const WaveAuthKeyFileName = "waveterm.authkey" const MShellVersion = "v0.4.0" var SessionDirCache = make(map[string]string) var ScreenDirCache = make(map[string]string) var BaseLock = &sync.Mutex{} + +// these are set by the main-server using build-time variables var BuildTime = "-" +var WaveVersion = "-" func IsDevMode() bool { pdev := os.Getenv(WaveDevVarName)