mirror of
https://github.com/wavetermdev/waveterm.git
synced 2024-12-21 16:38:23 +01:00
3b117805fe
This adds the new tasks `docsite:start`, `docsite:build:public`, `docsite:build:embedded`, `storybook:build`, and `copyfiles:*:*` to Taskfile. It also updates the "Build Helper" and "Docsite and Storybook CI/CD" workflows to use these new tasks. It also makes the docsite embedded build a dependency of the electron tasks, ensuring that the embedded docsite is included when building locally. Tested and confirms this works on Windows
330 lines
12 KiB
YAML
330 lines
12 KiB
YAML
# Copyright 2024, Command Line Inc.
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
version: "3"
|
|
|
|
vars:
|
|
APP_NAME: "Wave"
|
|
BIN_DIR: "bin"
|
|
VERSION:
|
|
sh: node version.cjs
|
|
RM: '{{if eq OS "windows"}}cmd --% /c del /S{{else}}rm {{end}}'
|
|
RMRF: '{{if eq OS "windows"}}powershell Remove-Item -Force -Recurse{{else}}rm -rf{{end}}'
|
|
DATE: '{{if eq OS "windows"}}powershell Get-Date -UFormat{{else}}date{{end}}'
|
|
ARTIFACTS_BUCKET: waveterm-github-artifacts/staging-w2
|
|
RELEASES_BUCKET: dl.waveterm.dev/releases-w2
|
|
WINGET_PACKAGE: CommandLine.Wave
|
|
|
|
tasks:
|
|
electron:dev:
|
|
desc: Run the Electron application via the Vite dev server (enables hot reloading).
|
|
cmd: yarn dev
|
|
deps:
|
|
- yarn
|
|
- docsite:build:embedded
|
|
- build:backend
|
|
env:
|
|
WCLOUD_ENDPOINT: "https://ot2e112zx5.execute-api.us-west-2.amazonaws.com/dev"
|
|
WCLOUD_WS_ENDPOINT: "wss://5lfzlg5crl.execute-api.us-west-2.amazonaws.com/dev/"
|
|
|
|
electron:start:
|
|
desc: Run the Electron application directly.
|
|
cmd: yarn start
|
|
deps:
|
|
- yarn
|
|
- docsite:build:embedded
|
|
- build:backend
|
|
env:
|
|
WCLOUD_ENDPOINT: "https://ot2e112zx5.execute-api.us-west-2.amazonaws.com/dev"
|
|
WCLOUD_WS_ENDPOINT: "wss://5lfzlg5crl.execute-api.us-west-2.amazonaws.com/dev/"
|
|
|
|
storybook:
|
|
desc: Start the Storybook server.
|
|
cmd: yarn storybook
|
|
deps:
|
|
- yarn
|
|
|
|
storybook:build:
|
|
desc: Build the Storybook static site.
|
|
cmd: yarn build-storybook
|
|
generates:
|
|
- storybook-static/**/*
|
|
deps:
|
|
- yarn
|
|
|
|
docsite:start:
|
|
desc: Start the docsite dev server.
|
|
cmd: yarn start
|
|
dir: docs
|
|
deps:
|
|
- yarn
|
|
|
|
docsite:build:public:
|
|
desc: Build the full docsite.
|
|
cmds:
|
|
- cd docs && yarn build
|
|
- task: copyfiles:'storybook-static/':'docs/build/storybook'
|
|
sources:
|
|
- "docs/*"
|
|
- "docs/src/**/*"
|
|
- "docs/docs/**/*"
|
|
- "docs/static/**/*"
|
|
generates:
|
|
- "docs/build/**/*"
|
|
deps:
|
|
- yarn
|
|
- storybook:build
|
|
|
|
docsite:build:embedded:
|
|
desc: Build the embedded docsite and copy it to ./docsite
|
|
sources:
|
|
- "docs/*"
|
|
- "docs/src/**/*"
|
|
- "docs/docs/**/*"
|
|
- "docs/static/**/*"
|
|
generates:
|
|
- "docsite/**/*"
|
|
cmds:
|
|
- cd docs && yarn build-embedded
|
|
- task: copyfiles:'docs/build/':'../docsite'
|
|
deps:
|
|
- yarn
|
|
|
|
package:
|
|
desc: Package the application for the current platform.
|
|
cmds:
|
|
- cmd: '{{.RMRF}} "make"'
|
|
ignore_error: true
|
|
- yarn build:prod && yarn electron-builder -c electron-builder.config.cjs -p never
|
|
deps:
|
|
- yarn
|
|
- build:backend
|
|
|
|
build:backend:
|
|
desc: Build the wavesrv and wsh components.
|
|
cmds:
|
|
- task: build:server
|
|
- task: build:wsh
|
|
|
|
build:server:
|
|
desc: Build the wavesrv component.
|
|
deps:
|
|
- generate
|
|
- build:server:linux
|
|
- build:server:macos
|
|
- build:server:windows
|
|
|
|
build:server:macos:
|
|
desc: Build the wavesrv component for macOS (Darwin) platforms (generates artifacts for both arm64 and amd64).
|
|
platforms: [darwin]
|
|
cmds:
|
|
- cmd: "{{.RM}} dist/bin/wavesrv*"
|
|
ignore_error: true
|
|
- task: build:server:internal
|
|
vars:
|
|
ARCHS: arm64,amd64
|
|
|
|
build:server:windows:
|
|
desc: Build the wavesrv component for Windows platforms (only generates artifacts for the current architecture).
|
|
platforms: [windows]
|
|
cmds:
|
|
- cmd: "{{.RM}} dist/bin/wavesrv*"
|
|
ignore_error: true
|
|
- task: build:server:internal
|
|
vars:
|
|
ARCHS:
|
|
sh: echo {{if eq "arm" ARCH}}arm64{{else}}{{ARCH}}{{end}}
|
|
|
|
build:server:linux:
|
|
desc: Build the wavesrv component for Linux platforms (only generates artifacts for the current architecture).
|
|
platforms: [linux]
|
|
cmds:
|
|
- cmd: "{{.RM}} dist/bin/wavesrv*"
|
|
ignore_error: true
|
|
- task: build:server:internal
|
|
vars:
|
|
ARCHS:
|
|
sh: echo {{if eq "arm" ARCH}}arm64{{else}}{{ARCH}}{{end}}
|
|
GO_ENV_VARS:
|
|
sh: echo "{{if eq "amd64" ARCH}}CC=\"zig cc -target x86_64-linux-gnu.2.28\"{{end}}"
|
|
|
|
build:server:internal:
|
|
requires:
|
|
vars:
|
|
- ARCHS
|
|
cmd:
|
|
cmd: CGO_ENABLED=1 GOARCH={{.GOARCH}} {{.GO_ENV_VARS}} go build -tags "osusergo,sqlite_omit_load_extension" -ldflags "{{.GO_LDFLAGS}} -X main.BuildTime=$({{.DATE}} +'%Y%m%d%H%M') -X main.WaveVersion={{.VERSION}}" -o dist/bin/wavesrv.{{if eq .GOARCH "amd64"}}x64{{else}}{{.GOARCH}}{{end}}{{exeExt}} cmd/server/main-server.go
|
|
for:
|
|
var: ARCHS
|
|
split: ","
|
|
as: GOARCH
|
|
sources:
|
|
- "cmd/server/*.go"
|
|
- "pkg/**/*.go"
|
|
generates:
|
|
- dist/bin/wavesrv.*{{exeExt}}
|
|
deps:
|
|
- go:mod:tidy
|
|
internal: true
|
|
|
|
build:wsh:
|
|
desc: Build the wsh component for all possible targets.
|
|
cmds:
|
|
- cmd: "{{.RM}} dist/bin/wsh*"
|
|
ignore_error: true
|
|
- task: build:wsh:internal
|
|
vars:
|
|
GOOS: darwin
|
|
GOARCH: arm64
|
|
- task: build:wsh:internal
|
|
vars:
|
|
GOOS: darwin
|
|
GOARCH: amd64
|
|
- task: build:wsh:internal
|
|
vars:
|
|
GOOS: linux
|
|
GOARCH: arm64
|
|
- task: build:wsh:internal
|
|
vars:
|
|
GOOS: linux
|
|
GOARCH: amd64
|
|
- task: build:wsh:internal
|
|
vars:
|
|
GOOS: windows
|
|
GOARCH: amd64
|
|
- task: build:wsh:internal
|
|
vars:
|
|
GOOS: windows
|
|
GOARCH: arm64
|
|
deps:
|
|
- generate
|
|
|
|
dev:installwsh:
|
|
desc: quick shortcut to rebuild wsh and install for macos arm64
|
|
requires:
|
|
vars:
|
|
- VERSION
|
|
cmds:
|
|
- task: build:wsh:internal
|
|
vars:
|
|
GOOS: darwin
|
|
GOARCH: arm64
|
|
- cp dist/bin/wsh-{{.VERSION}}-darwin.arm64 ~/Library/Application\ Support/waveterm-dev/bin/wsh
|
|
|
|
build:wsh:internal:
|
|
vars:
|
|
EXT:
|
|
sh: echo {{if eq .GOOS "windows"}}.exe{{end}}
|
|
NORMALIZEDARCH:
|
|
sh: echo {{if eq .GOARCH "amd64"}}x64{{else}}{{.GOARCH}}{{end}}
|
|
requires:
|
|
vars:
|
|
- GOOS
|
|
- GOARCH
|
|
- VERSION
|
|
sources:
|
|
- "cmd/wsh/**/*.go"
|
|
- "pkg/**/*.go"
|
|
generates:
|
|
- dist/bin/wsh-{{.VERSION}}-{{.GOOS}}.{{.NORMALIZEDARCH}}{{.EXT}}
|
|
cmd: (CGO_ENABLED=0 GOOS={{.GOOS}} GOARCH={{.GOARCH}} go build -ldflags="-s -w -X main.BuildTime=$({{.DATE}} +'%Y%m%d%H%M') -X main.WaveVersion={{.VERSION}}" -o dist/bin/wsh-{{.VERSION}}-{{.GOOS}}.{{.NORMALIZEDARCH}}{{.EXT}} cmd/wsh/main-wsh.go)
|
|
deps:
|
|
- go:mod:tidy
|
|
internal: true
|
|
|
|
generate:
|
|
desc: Generate Typescript bindings for the Go backend.
|
|
cmds:
|
|
- go run cmd/generatets/main-generatets.go
|
|
- go run cmd/generatego/main-generatego.go
|
|
sources:
|
|
- "cmd/generatego/*.go"
|
|
- "cmd/generatets/*.go"
|
|
- "pkg/**/*.go"
|
|
# don't add generates key (otherwise will always execute)
|
|
|
|
version:
|
|
desc: Get the current package version, or bump version if args are present. To pass args to `version.cjs`, add them after `--`. See `version.cjs` for usage definitions for the arguments.
|
|
cmd: node version.cjs {{.CLI_ARGS}}
|
|
|
|
artifacts:upload:
|
|
desc: Uploads build artifacts to the staging bucket in S3. To add additional AWS CLI arguments, add them after `--`.
|
|
vars:
|
|
ORIGIN: "make/"
|
|
DESTINATION: "{{.ARTIFACTS_BUCKET}}/{{.VERSION}}"
|
|
cmd: aws s3 cp {{.ORIGIN}}/ s3://{{.DESTINATION}}/ --recursive --exclude "*/*" --exclude "builder-*.yml" {{.CLI_ARGS}}
|
|
|
|
artifacts:download:*:
|
|
desc: Downloads the specified artifacts version from the staging bucket. To add additional AWS CLI arguments, add them after `--`.
|
|
vars:
|
|
DL_VERSION: '{{ replace "v" "" (index .MATCH 0)}}'
|
|
ORIGIN: "{{.ARTIFACTS_BUCKET}}/{{.DL_VERSION}}"
|
|
DESTINATION: "artifacts/{{.DL_VERSION}}"
|
|
cmds:
|
|
- '{{.RMRF}} "{{.DESTINATION}}"'
|
|
- aws s3 cp s3://{{.ORIGIN}}/ {{.DESTINATION}}/ --recursive {{.CLI_ARGS}}
|
|
|
|
artifacts:publish:*:
|
|
desc: Publishes the specified artifacts version from the staging bucket to the releases bucket. To add additional AWS CLI arguments, add them after `--`.
|
|
vars:
|
|
UP_VERSION: '{{ replace "v" "" (index .MATCH 0)}}'
|
|
ORIGIN: "{{.ARTIFACTS_BUCKET}}/{{.UP_VERSION}}"
|
|
DESTINATION: "{{.RELEASES_BUCKET}}"
|
|
cmd: |
|
|
OUTPUT=$(aws s3 cp s3://{{.ORIGIN}}/ s3://{{.DESTINATION}}/ --recursive {{.CLI_ARGS}})
|
|
|
|
for line in $OUTPUT; do
|
|
PREFIX=${line%%{{.DESTINATION}}*}
|
|
SUFFIX=${line:${#PREFIX}}
|
|
if [[ -n "$SUFFIX" ]]; then
|
|
echo "https://$SUFFIX"
|
|
fi
|
|
done
|
|
artifacts:snap:publish:*:
|
|
desc: Publishes the specified artifacts version to Snapcraft.
|
|
vars:
|
|
UP_VERSION: '{{ replace "v" "" (index .MATCH 0)}}'
|
|
CHANNEL: '{{if contains "beta" .UP_VERSION}}beta{{else}}beta,stable{{end}}'
|
|
cmd: |
|
|
echo "Releasing to channels: [{{.CHANNEL}}]"
|
|
snapcraft upload --release={{.CHANNEL}} waveterm_{{.UP_VERSION}}_arm64.snap
|
|
snapcraft upload --release={{.CHANNEL}} waveterm_{{.UP_VERSION}}_amd64.snap
|
|
|
|
artifacts:winget:publish:*:
|
|
desc: Submits a version bump request to WinGet for the latest release.
|
|
status:
|
|
- exit {{if contains "beta" .UP_VERSION}}0{{else}}1{{end}}
|
|
vars:
|
|
UP_VERSION: '{{ replace "v" "" (index .MATCH 0)}}'
|
|
cmd: |
|
|
wingetcreate update {{.WINGET_PACKAGE}} -s -v {{.UP_VERSION}} -u "https://{{.RELEASES_BUCKET}}/{{.APP_NAME}}-win32-x64-{{.UP_VERSION}}.msi" -t $env:GITHUB_TOKEN
|
|
|
|
yarn:
|
|
desc: Runs `yarn`
|
|
internal: true
|
|
generates:
|
|
- node_modules/**/*
|
|
- yarn.lock
|
|
- .yarn/*
|
|
sources:
|
|
- yarn.lock
|
|
- package.json
|
|
- .yarnrc.yml
|
|
cmd: yarn
|
|
|
|
go:mod:tidy:
|
|
desc: Runs `go mod tidy`
|
|
internal: true
|
|
generates:
|
|
- go.sum
|
|
sources:
|
|
- go.mod
|
|
cmd: go mod tidy
|
|
|
|
copyfiles:*:*:
|
|
desc: Recursively copy directory contents to a new directory, creating the directory if needed.
|
|
internal: true
|
|
cmds:
|
|
- '{{if eq OS "windows"}}powershell New-Item -Path "." -Force -Name "{{index .MATCH 1}}" -ItemType "directory"{{else}}mkdir -p {{index .MATCH 1}}{{end}}'
|
|
- '{{if eq OS "windows"}}powershell Copy-Item -Recurse -Force -Path {{index .MATCH 0}} -Destination {{index .MATCH 1}}{{else}}cp -r {{index .MATCH 0}} {{index .MATCH 1}}{{end}}'
|