From f3c02d959ed71377d5c940615ed2d9453fd40ec3 Mon Sep 17 00:00:00 2001 From: aboyko Date: Fri, 17 May 2024 20:29:21 -0400 Subject: [PATCH] [GHA] Build vscode extension workflow --- .github/scripts/build-vscode-extension.sh | 58 ++++++++++++++++++++ .github/workflows/build-vscode-extension.yml | 33 +++++++++++ 2 files changed, 91 insertions(+) create mode 100755 .github/scripts/build-vscode-extension.sh create mode 100644 .github/workflows/build-vscode-extension.yml diff --git a/.github/scripts/build-vscode-extension.sh b/.github/scripts/build-vscode-extension.sh new file mode 100755 index 000000000..069da7647 --- /dev/null +++ b/.github/scripts/build-vscode-extension.sh @@ -0,0 +1,58 @@ +set -e +extension_id=$1 +dist_type=$2 +workdir=`pwd` +sources=$workdir/sts4/vscode-extensions/$extension_id +# server_id=${extension_id#vscode-} + +cd "$sources" + +base_version=`jq -r .version package.json` +if [ "$dist_type" = release ]; then + echo -e "\n\n*Version: ${base_version}-RELEASE*" >> README.md +else + if [ "$dist_type" = pre ]; then + # for pre-release build, work the timestamp into package.json patch version. No minutes in the timestamp due VSCode pre-release lack of support for semver + timestamp=`date -u +%Y%m%d%H` + qualified_version=`echo $base_version | sed "s/\([0-9]\{1,\}.[0-9]\{1,\}.\)[0-9]\{1,\}/\1$timestamp/"` + npm version ${qualified_version} + echo -e "\n\n*Version: ${base_version}-PRE-RELEASE*" >> README.md + else + # for snapshot build, work the timestamp into package.json version qualifier + timestamp=`date -u +%Y%m%d%H%M` + qualified_version=${base_version}-${timestamp} + npm version ${qualified_version} + echo -e "\n\n*Version: ${qualified_version}*" >> README.md + fi +fi + +if [ -f "./scripts/preinstall.sh" ]; then + ./scripts/preinstall.sh +fi + +npm install +if [ "$dist_type" = pre ]; then + npm run vsce-pre-release-package +else + npm run vsce-package +fi + +# for release build we don't add version-qualifier to package.json +# So we must instead rename the file ourself to add a qualifier +if [ "$dist_type" == release ]; then + vsix_file=`ls *.vsix` + release_name=`git tag --points-at HEAD | grep ${extension_id}` + echo "release_name=$release_name" + if [ -z "$release_name" ]; then + echo "Release Candidates must be tagged" >&2 + exit 1 + else + mv $vsix_file ${release_name}.vsix + fi +fi + +cp *.vsix $workdir/out +#server_jar=$workdir/sts4/headless-services/${server_id}-language-server/target/*-exec.jar +#if [ -f $server_jar ]; then +# cp $server_jar $workdir/out/${server_id}-language-server-${base_version}-${timestamp}.jar +#fi diff --git a/.github/workflows/build-vscode-extension.yml b/.github/workflows/build-vscode-extension.yml new file mode 100644 index 000000000..97602b592 --- /dev/null +++ b/.github/workflows/build-vscode-extension.yml @@ -0,0 +1,33 @@ +name: Build VSCode Extension + +on: + workflow_call: + inputs: + extension-name: + description: name of the extension, e.g. vscode-spring-cli + required: true + type: string + dist: + description: release, pre, snapshot + required: false + type: string + default: snapshot + +permissions: + contents: write + +jobs: + build-vscode-extension: + runs-on: ubuntu-latest + name: Changelog for the release + steps: + - name: Checkout wiki code + uses: actions/checkout@v4 + with: + repository: ${{github.repository}}/vscode-extensions + - name: Build .VSIX file + id: build-vsix + run: | + ${{ github.workspace }}/.github/scripts/build-vscode-extension.sh ${{ inputs.extension-name }} ${{ inputs.dist }} + ls ./out +