From c83c1a103907ac4d5020729fa012deb54ab193a0 Mon Sep 17 00:00:00 2001 From: Roberto Aloi Date: Thu, 31 Aug 2023 07:21:15 -0700 Subject: [PATCH] Add GitHub workflows to build/upload the VS Code extension Summary: This represents the first step towards automating building and publishing of the ELP VS Code extension. At this stage the extension does not include the ELP binary yet (the server needs to manually be installed and the extension can be pointed to it via a setting). This will be changed later. The version of the extension has been changed to match the version of the next ELP release. The pipeline contain lot of duplication. That can be fixed as a follow-up. Reviewed By: alanz Differential Revision: D48831779 fbshipit-source-id: c93382a27afc51ae2331a9452de71df054e00f1c --- .github/workflows/ci.yml | 40 ++++++++++++++ .github/workflows/release.yml | 99 ++++++++++++++++++++++++++++++++++ editors/code/package-lock.json | 4 +- editors/code/package.json | 2 +- 4 files changed, 142 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8c47362785..ee4c467d1b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -56,6 +56,26 @@ jobs: with: name: eqwalizer.jar path: eqwalizer/eqwalizer/target/scala-2.13/eqwalizer.jar + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 18 + - name: Install VSCE + run: npm install -g vsce + - name: npm install + working-directory: editors/code + run: npm install + - name: npm run compile + working-directory: editors/code + run: npm run compile + - name: Package Extension + working-directory: editors/code + run: vsce package + - name: Upload Extension + uses: "actions/upload-artifact@v3" + with: + name: elp-linux-${{ matrix.otp }}.vsix + path: editors/code/erlang-language-platform-*.vsix macos-ci: needs: - linux-ci @@ -95,6 +115,26 @@ jobs: run: "export PATH=$GITHUB_WORKSPACE/rebar3:/usr/local/opt/${{matrix.brew_erlang}}/bin:$PATH ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo test --no-default-features --workspace" - name: Assemble elp run: "export PATH=$GITHUB_WORKSPACE/rebar3:/usr/local/opt/${{matrix.brew_erlang}}/bin:$PATH ELP_EQWALIZER_PATH=$GITHUB_WORKSPACE/eqwalizer/eqwalizer/eqwalizer && cargo build --release" + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 18 + - name: Install VSCE + run: npm install -g vsce + - name: npm install + working-directory: editors/code + run: npm install + - name: npm run compile + working-directory: editors/code + run: npm run compile + - name: Package Extension + working-directory: editors/code + run: vsce package + - name: Upload Extension + uses: "actions/upload-artifact@v3" + with: + name: elp-macos-otp-25.vsix + path: editors/code/erlang-language-platform-*.vsix name: erlang-language-platform CI on: push: {} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ecc890bc10..1c76473db8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -73,6 +73,33 @@ jobs: asset_name: elp-linux.tar.gz asset_path: elp-linux.tar.gz upload_url: "${{ steps.get_release_url.outputs.upload_url }}" + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 18 + - name: Install VSCE + run: npm install -g vsce + - name: npm install + working-directory: editors/code + run: npm install + - name: npm run compile + working-directory: editors/code + run: npm run compile + - name: Package Extension + working-directory: editors/code + run: vsce package + - env: + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + name: Upload Extension Package + uses: "actions/upload-release-asset@v1.0.2" + with: + asset_content_type: application/octet-stream + asset_name: elp-linux-otp-25.vsix + asset_path: editors/code/erlang-language-platform-*.vsix + upload_url: "${{ steps.get_release_url.outputs.upload_url }}" + - name: Publish extension to marketplace + working-directory: editors/code + run: vsce publish -p ${{ secrets.VSCE_PAT }} linux-release-otp-23: needs: - linux-release-otp-25 @@ -138,6 +165,30 @@ jobs: asset_name: elp-linux-otp-23.tar.gz asset_path: elp-linux-otp-23.tar.gz upload_url: "${{ steps.get_release_url.outputs.upload_url }}" + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 18 + - name: Install VSCE + run: npm install -g vsce + - name: npm install + working-directory: editors/code + run: npm install + - name: npm run compile + working-directory: editors/code + run: npm run compile + - name: Package Extension + working-directory: editors/code + run: vsce package + - env: + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + name: Upload Extension Package + uses: "actions/upload-release-asset@v1.0.2" + with: + asset_content_type: application/octet-stream + asset_name: elp-linux-otp-23.vsix + asset_path: editors/code/erlang-language-platform-*.vsix + upload_url: "${{ steps.get_release_url.outputs.upload_url }}" macos-release-otp-25: needs: - linux-release-otp-25 @@ -190,6 +241,30 @@ jobs: asset_name: elp-macos.tar.gz asset_path: elp-macos.tar.gz upload_url: "${{ steps.get_release_url.outputs.upload_url }}" + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 18 + - name: Install VSCE + run: npm install -g vsce + - name: npm install + working-directory: editors/code + run: npm install + - name: npm run compile + working-directory: editors/code + run: npm run compile + - name: Package Extension + working-directory: editors/code + run: vsce package + - env: + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + name: Upload Extension Package + uses: "actions/upload-release-asset@v1.0.2" + with: + asset_content_type: application/octet-stream + asset_name: elp-macos-otp-25.vsix + asset_path: editors/code/erlang-language-platform-*.vsix + upload_url: "${{ steps.get_release_url.outputs.upload_url }}" macos-release-otp-23: needs: - linux-release-otp-25 @@ -242,6 +317,30 @@ jobs: asset_name: elp-macos-otp-23.tar.gz asset_path: elp-macos-otp-23.tar.gz upload_url: "${{ steps.get_release_url.outputs.upload_url }}" + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 18 + - name: Install VSCE + run: npm install -g vsce + - name: npm install + working-directory: editors/code + run: npm install + - name: npm run compile + working-directory: editors/code + run: npm run compile + - name: Package Extension + working-directory: editors/code + run: vsce package + - env: + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + name: Upload Extension Package + uses: "actions/upload-release-asset@v1.0.2" + with: + asset_content_type: application/octet-stream + asset_name: elp-macos-otp-23.vsix + asset_path: editors/code/erlang-language-platform-*.vsix + upload_url: "${{ steps.get_release_url.outputs.upload_url }}" name: erlang-language-platform release on: release: diff --git a/editors/code/package-lock.json b/editors/code/package-lock.json index 6dad7b5d05..7ce9df3708 100644 --- a/editors/code/package-lock.json +++ b/editors/code/package-lock.json @@ -1,12 +1,12 @@ { "name": "erlang-language-platform", - "version": "1.0.0", + "version": "0.3.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "erlang-language-platform", - "version": "1.0.0", + "version": "0.3.0", "hasInstallScript": true, "license": "Apache2", "devDependencies": { diff --git a/editors/code/package.json b/editors/code/package.json index f0d3ff22ee..a1f6ca41e4 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -3,7 +3,7 @@ "description": "Erlang language server", "author": "Meta Platforms, Inc", "license": "Apache2", - "version": "1.0.0", + "version": "0.3.0", "repository": { "type": "git", "url": "https://github.com/WhatsApp/erlang-language-platform"