Skip to content

Merge pull request #454 from viperproject/auto-update-viperserver #1765

Merge pull request #454 from viperproject/auto-update-viperserver

Merge pull request #454 from viperproject/auto-update-viperserver #1765

Workflow file for this run

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# Copyright (c) 2011-2021 ETH Zurich.
name: Test and create release (when run manually)
on:
push: # run this workflow on every push
pull_request: # run this workflow on every pull_request
workflow_dispatch: # allow to manually trigger this workflow
inputs:
type:
type: choice
description: 'Specifies whether a stable release, nightly release or release candidate should be triggered.'
required: true
default: 'nightly'
options:
- stable
- nightly
- rc
tag_name:
description: 'Tag name for stable release.'
required: true
default: '-'
release_name:
description: 'Release title for stable release.'
required: true
default: '-'
# note that release-candidate builds are treated like 'stable' builds for now except that there is no deployment to the marketplaces in the end.
# in the future, this should be changed such that release-candidates result in a prerelease (like nightly builds).
# the following env variables configure the behavior of this workflow
# in particular, they control whether Viper-IDE is tested against certain ViperTools and a ViperServer JAR on push and pull requests
# this is particularly useful during debugging / testing as a new Viper-IDE release is not necessary for every change to the ViperServer JAR
env:
TEST_LOCAL_ON_PUSH_PR: false
# note that the following URL is extended with `/${{ matrix.viper-tools-zip-file }}` in the 'build-and-test' job:
TEST_LOCAL_ON_PUSH_PR_VIPERTOOLS_URL: https://github.com/viperproject/viper-ide/releases/download/v-2022-09-21-1611
# the following URL is not extended and downloading the destination is expected to return the viperserver.jar:
TEST_LOCAL_ON_PUSH_PR_VIPERSERVER_URL: https://polybox.ethz.ch/index.php/s/54sDcqHDJHelKBY/download
jobs:
build-and-test:
name: build-and-test - ${{ matrix.target }}
strategy:
# tests should not be stopped when they fail on one of the OSes:
fail-fast: false
matrix:
target: ["darwin-x64", "darwin-arm64", "linux-x64", "win32-x64"]
include:
- target: "darwin-x64"
os: macos-latest
viper-tools-zip-file: "ViperToolsMac.zip"
- target: "darwin-arm64"
os: ubuntu-latest # since GitHub does not have ARM macs, we can't test anyway and use Ubuntu instead for building
viper-tools-zip-file: "ViperToolsMacARM.zip"
- target: "linux-x64"
os: ubuntu-latest
viper-tools-zip-file: "ViperToolsLinux.zip"
- target: "win32-x64"
os: windows-latest
viper-tools-zip-file: "ViperToolsWin.zip"
runs-on: ${{ matrix.os }}
steps:
- name: Checkout Viper-IDE
uses: actions/checkout@v4
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: '18' # Should match the version in client/src/test/data/vscode-version
- name: Setup Java JDK
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'temurin'
- run: java --version
- name: Cache npm
uses: actions/cache@v4
with:
path: client/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
# npm ci fails to clone GitHub repos referenced in package.json with recent node versions
# the following work around has been proposed here: https://github.com/actions/setup-node/issues/214#issuecomment-810829250
- name: Reconfigure git to use HTTPS authentication
run: >
git config --global url."https://github.com/".insteadOf
ssh://git@github.com/
- run: npm ci --cache .npm --prefer-offline
working-directory: client
# there are two different scenarios in which different stuff should be tested:
# - regular changes to Viper-IDE: the normal test configuration should be used, which tests against the latest stable and
# nightly ViperTool releases. Any change to the Viper-IDE have ensure compatability
# - before releasing Viper-IDE together with some ViperTools, Viper-IDE has to be tested against the latest stable and
# nightly ViperTool releases AND the ViperTools that should be released.
- name: Download ViperTools to test against (only downloading previously created ViperTools)
if: ${{ contains(needs.create-viper-tools.result, 'success') }}
uses: actions/download-artifact@v4
with:
name: ViperTools
path: client/ViperTools
- name: Setup ViperTools folder
if: ${{ fromJSON(env.TEST_LOCAL_ON_PUSH_PR) && !contains(needs.create-viper-tools.result, 'success') }}
run: mkdir -p client/ViperTools
- name: Download ViperTools to test against (only downloading ViperTools for PUSH and PR operations if configured accordingly)
if: ${{ fromJSON(env.TEST_LOCAL_ON_PUSH_PR) && !contains(needs.create-viper-tools.result, 'success') }}
run: curl --fail --silent --show-error -L ${{ env.TEST_LOCAL_ON_PUSH_PR_VIPERTOOLS_URL }}/${{ matrix.viper-tools-zip-file }} --output ${{ matrix.viper-tools-zip-file }}
working-directory: client/ViperTools
- name: Unzip ViperTools (non-windows)
if: ${{ !startsWith(matrix.os, 'windows') && (fromJSON(env.TEST_LOCAL_ON_PUSH_PR) || contains(needs.create-viper-tools.result, 'success')) }}
run: unzip ${{ matrix.viper-tools-zip-file }} -d ExtractedTools
working-directory: client/ViperTools
- name: Unzip ViperTools (windows)
if: ${{ startsWith(matrix.os, 'windows') && (fromJSON(env.TEST_LOCAL_ON_PUSH_PR) || contains(needs.create-viper-tools.result, 'success')) }}
run: powershell Expand-Archive -LiteralPath ${{ matrix.viper-tools-zip-file }} -DestinationPath ExtractedTools
working-directory: client/ViperTools
- name: Download ViperServer JAR (only downloading ViperTools for PUSH and PR operations if configured accordingly)
if: ${{ fromJSON(env.TEST_LOCAL_ON_PUSH_PR) && !contains(needs.create-viper-tools.result, 'success') }}
run: curl --fail --silent --show-error -L ${{ env.TEST_LOCAL_ON_PUSH_PR_VIPERSERVER_URL }} --output viperserver.jar
working-directory: client/ViperTools/ExtractedTools/backends
- name: Create path to extracted tools (non-windows)
if: ${{ !startsWith(matrix.os, 'windows') && (fromJSON(env.TEST_LOCAL_ON_PUSH_PR) || contains(needs.create-viper-tools.result, 'success')) }}
run: |
echo "EXTRACTED_TOOLS_PATH=${{ github.workspace }}/client/ViperTools/ExtractedTools" >> $GITHUB_ENV
shell: bash
- name: Create path to extracted tools (windows)
if: ${{ startsWith(matrix.os, 'windows') && (fromJSON(env.TEST_LOCAL_ON_PUSH_PR) || contains(needs.create-viper-tools.result, 'success')) }}
# replace all backslashes by double backslashes to properly escape them in the resulting JSON
run: |
PATH='EXTRACTED_TOOLS_PATH=${{ github.workspace }}\client\ViperTools\ExtractedTools'
echo ${PATH//'\'/'\\'} >> $GITHUB_ENV
shell: bash
- name: Create an additional test config
if: ${{ fromJSON(env.TEST_LOCAL_ON_PUSH_PR) || contains(needs.create-viper-tools.result, 'success') }}
run: |
mkdir -p client/src/test/data/settings
echo '{
"viperSettings.buildVersion": "External",
"viperSettings.paths": {
"v": "674a514867b1",
"viperToolsPath": {
"windows": "${{ env.EXTRACTED_TOOLS_PATH }}",
"linux": "${{ env.EXTRACTED_TOOLS_PATH }}",
"mac": "${{ env.EXTRACTED_TOOLS_PATH }}"
}
},
"viperserver.trace.server": "verbose"
}' > client/src/test/data/settings/external.json
shell: bash
- name: Get config content
if: ${{ fromJSON(env.TEST_LOCAL_ON_PUSH_PR) || contains(needs.create-viper-tools.result, 'success') }}
run: cat client/src/test/data/settings/external.json
shell: bash
- name: Run tests (headless - non-ubuntu)
if: "!startsWith(matrix.os, 'ubuntu') && matrix.target != 'darwin-arm64'"
run: npm run test --full-trace -- --target=${{ matrix.target }}
working-directory: client
env:
VIPER_IDE_LOG_DIR: ${{ github.workspace }}/client/logs
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Run tests (headless - ubuntu only)
if: startsWith(matrix.os, 'ubuntu') && matrix.target != 'darwin-arm64'
run: xvfb-run -a npm run test --full-trace -- --target=${{ matrix.target }}
working-directory: client
env:
VIPER_IDE_LOG_DIR: ${{ github.workspace }}/client/logs
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload Viper-IDE log files
if: ${{ failure() || cancelled() }}
uses: actions/upload-artifact@v4
with:
name: TestLogs-${{ matrix.target }}
path: client/logs
- name: Clean 'dist' folder
run: npm run clean
working-directory: client
# `npm run package` resp. `@vscode/vsce` complains that it cannot find
# locate-java-home and vs-verification-toolbox dependencies (the two non-npm dependencies).
# this seems related to https://github.com/npm/cli/issues/791
# the current workaround is to `run npm install` first:
# this workaround is only necessary when using node 14
# - name: Run 'npm install' as a workaround to later being able to package Viper-IDE (ubuntu only)
# if: startsWith(matrix.os, 'ubuntu')
# run: npm install
# working-directory: client
# use @vscode/vsce to package the extension into a vsix file.
# sets a special field in package.json to indicate that the package is not a pre-release (it's one
# by default)
- name: Package Viper-IDE extension (stable release only)
if: ${{ github.event.inputs.type == 'stable' }}
run: npm run package -- --target=${{ matrix.target }} --out=viper-ide-${{ matrix.target }}.vsix
working-directory: client
- name: Package Viper-IDE extension (non-stable release only)
if: ${{ github.event.inputs.type != 'stable' }}
run: npm run package -- --target=${{ matrix.target }} --out=viper-ide-${{ matrix.target }}.vsix --pre-release
working-directory: client
# we have to list the files after packaging because packaging first downloads dependencies
- name: List all files that got packaged (ignore 'viper-ide-${{ matrix.target }}.vsix')
run: npx @vscode/vsce ls
working-directory: client
- name: Upload packaged Viper-IDE
uses: actions/upload-artifact@v4
with:
name: viper-ide-${{ matrix.target }}.vsix
path: client/viper-ide-${{ matrix.target }}.vsix
# note that we change into the tool folder to zip it. This avoids including the parent folder in the zip
- name: Zip ViperTools (non-windows)
if: ${{ !startsWith(matrix.os, 'windows') }}
run: zip -r ../${{ matrix.viper-tools-zip-file }} ./*
working-directory: client/dependencies/ViperTools
- name: Zip ViperTools (windows only)
if: ${{ startsWith(matrix.os, 'windows') }}
run: Compress-Archive -Path ./* -Destination ../${{ matrix.viper-tools-zip-file }}
working-directory: client/dependencies/ViperTools
- name: Upload ViperTools zip files
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.viper-tools-zip-file }}
path: client/dependencies/${{ matrix.viper-tools-zip-file }}
create-release:
# this job creates a nightly release or stable draft-release and adds viper-ide.vsix and Viper Tools as release assets
if: github.event_name == 'workflow_dispatch'
needs: build-and-test
runs-on: ubuntu-latest
steps:
# we have to checkout the repo to read client/package.json later on:
- name: Checkout Viper-IDE
uses: actions/checkout@v4
- name: Download packaged Viper IDE
uses: actions/download-artifact@v4
with:
pattern: viper-ide-*.vsix
merge-multiple: true
path: client
- name: Download ViperTools
uses: actions/download-artifact@v4
with:
pattern: ViperTools*.zip
merge-multiple: true
- name: Read versions
run: |
echo "BOOGIE_VERSION=$(cat boogie-version)" >> $GITHUB_ENV
echo "BOOGIE_VERSION_URL=https://github.com/viperproject/boogie-builder/releases/$BOOGIE_VERSION" >> $GITHUB_ENV
echo "VIPERSERVER_VERSION=$(cat viperserver-version)" >> $GITHUB_ENV
echo "VIPERSERVER_VERSION_URL=https://github.com/viperproject/viperserver/releases/$VIPERSERVER_VERSION" >> $GITHUB_ENV
echo "Z3_VERSION=$(cat z3-version)" >> $GITHUB_ENV
echo "Z3_VERSION_URL=https://github.com/Z3Prover/z3/releases/z3-$Z3_VERSION" >> $GITHUB_ENV
working-directory: client
- name: Create release tag
if: ${{ github.event.inputs.type != 'stable' && github.event.inputs.type != 'rc' }}
shell: bash
run: echo "TAG_NAME=$(date +v-%Y-%m-%d-%H%M)" >> $GITHUB_ENV
# use the following action if nightly releases should eventually be deleted
# - name: Create nightly release
# if: ${{ github.event.inputs.type != 'stable' && github.event.inputs.type != 'rc' }}
# id: create_nightly_release
# uses: viperproject/create-nightly-release@v1
# env:
# # This token is provided by Actions, you do not need to create your own token
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# with:
# tag_name: ${{ env.TAG_NAME }}
# release_name: Nightly Release ${{ env.TAG_NAME }}
# body: Based on ViperServer release ${{ github.event.inputs.viperserver_tag_name }}
# keep_num: 1 # keep the previous nightly release such that there are always two
# because e.g. prusti-dev depends on the nightly releases and updates only twice a month to the
# latest version, nightly releases should be kept
- name: Create nightly release
if: ${{ github.event.inputs.type != 'stable' && github.event.inputs.type != 'rc' }}
id: create_nightly_release
uses: actions/create-release@v1
env:
# This token is provided by Actions, you do not need to create your own token
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ env.TAG_NAME }}
release_name: Nightly Release ${{ env.TAG_NAME }}
body: |
Based on
- ViperServer release [`${{ env.VIPERSERVER_VERSION }}`](${{ env.VIPERSERVER_VERSION_URL }})
- [Z3 `${{ env.Z3_VERSION }}`](${{ env.Z3_VERSION_URL }})
- [Boogie release `${{ env.BOOGIE_VERSION }}`](${{ env.BOOGIE_VERSION_URL }})
draft: false
prerelease: true
- name: Store nightly release upload URL
if: ${{ github.event.inputs.type != 'stable' && github.event.inputs.type != 'rc' }}
shell: bash
run: echo "UPLOAD_URL=${{ steps.create_nightly_release.outputs.upload_url }}" >> $GITHUB_ENV
- name: Create stable draft-release
if: ${{ github.event.inputs.type == 'stable' || github.event.inputs.type == 'rc' }}
id: create_stable_release
uses: actions/create-release@v1
env:
# This token is provided by Actions, you do not need to create your own token
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.event.inputs.tag_name }}
release_name: ${{ github.event.inputs.release_name }}
body: |
Based on
- ViperServer release [`${{ env.VIPERSERVER_VERSION }}`](${{ env.VIPERSERVER_VERSION_URL }})
- [Z3 `${{ env.Z3_VERSION }}`](${{ env.Z3_VERSION_URL }})
- [Boogie release `${{ env.BOOGIE_VERSION }}`](${{ env.BOOGIE_VERSION_URL }})
draft: true
prerelease: false
- name: Store stable release upload URL
if: ${{ github.event.inputs.type == 'stable' || github.event.inputs.type == 'rc' }}
shell: bash
run: echo "UPLOAD_URL=${{ steps.create_stable_release.outputs.upload_url }}" >> $GITHUB_ENV
- name: Upload packaged Viper IDE for Linux
uses: actions/upload-release-asset@v1.0.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ env.UPLOAD_URL }}
asset_path: client/viper-ide-linux-x64.vsix
asset_name: viper-ide-linux-x64.vsix
asset_content_type: application/octet-stream
- name: Upload packaged Viper IDE for macOS
uses: actions/upload-release-asset@v1.0.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ env.UPLOAD_URL }}
asset_path: client/viper-ide-darwin-x64.vsix
asset_name: viper-ide-darwin-x64.vsix
asset_content_type: application/octet-stream
- name: Upload packaged Viper IDE for macOS ARM
uses: actions/upload-release-asset@v1.0.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ env.UPLOAD_URL }}
asset_path: client/viper-ide-darwin-arm64.vsix
asset_name: viper-ide-darwin-arm64.vsix
asset_content_type: application/octet-stream
- name: Upload packaged Viper IDE for Windows
uses: actions/upload-release-asset@v1.0.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ env.UPLOAD_URL }}
asset_path: client/viper-ide-win32-x64.vsix
asset_name: viper-ide-win32-x64.vsix
asset_content_type: application/octet-stream
- name: Upload ViperTools for Windows
uses: actions/upload-release-asset@v1.0.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ env.UPLOAD_URL }}
asset_path: ViperToolsWin.zip
asset_name: ViperToolsWin.zip
asset_content_type: application/zip
- name: Upload ViperTools for Ubuntu
uses: actions/upload-release-asset@v1.0.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ env.UPLOAD_URL }}
asset_path: ViperToolsLinux.zip
asset_name: ViperToolsLinux.zip
asset_content_type: application/zip
- name: Upload ViperTools for macOS Intel
uses: actions/upload-release-asset@v1.0.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ env.UPLOAD_URL }}
asset_path: ViperToolsMac.zip
asset_name: ViperToolsMac.zip
asset_content_type: application/zip
- name: Upload ViperTools for macOS ARM
uses: actions/upload-release-asset@v1.0.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ env.UPLOAD_URL }}
asset_path: ViperToolsMacARM.zip
asset_name: ViperToolsMacARM.zip
asset_content_type: application/zip
# compare version in client/package.json with last published version on
# VS Marketplace and deploy this version if newer.
# credits go to @fpoli!
- name: Obtain version information
run: |
VSCE_OUTPUT="$(
npx @vscode/vsce show viper-admin.viper --json
)"
if [[ $(echo $VSCE_OUTPUT | grep --fixed-strings --line-regexp undefined) ]]; then
LAST_PUBLISHED_VERSION="0"
else
LAST_PUBLISHED_VERSION="$(
echo $VSCE_OUTPUT | jq '.versions[0].version' --raw-output
)"
fi
CURRENT_VERSION="$(
cat client/package.json | jq '.version' --raw-output
)"
echo "LAST_PUBLISHED_VERSION=$LAST_PUBLISHED_VERSION" >> $GITHUB_ENV
echo "CURRENT_VERSION=$CURRENT_VERSION" >> $GITHUB_ENV
# publish 'stable' releases (release-candidates will be released as pre-releases below)
- name: Publish the extension to Visual Studio Marketplace for Linux
uses: HaaLeo/publish-vscode-extension@v1
if: ${{ github.event.inputs.type == 'stable' && env.CURRENT_VERSION != env.LAST_PUBLISHED_VERSION }}
with:
pat: ${{ secrets.VSCE_TOKEN }}
registryUrl: https://marketplace.visualstudio.com
extensionFile: client/viper-ide-linux-x64.vsix
packagePath: ''
- name: Publish the extension to Visual Studio Marketplace for macOS
uses: HaaLeo/publish-vscode-extension@v1
if: ${{ github.event.inputs.type == 'stable' && env.CURRENT_VERSION != env.LAST_PUBLISHED_VERSION }}
with:
pat: ${{ secrets.VSCE_TOKEN }}
registryUrl: https://marketplace.visualstudio.com
extensionFile: client/viper-ide-darwin-x64.vsix
packagePath: ''
- name: Publish the extension to Visual Studio Marketplace for macOS ARM
uses: HaaLeo/publish-vscode-extension@v1
if: ${{ github.event.inputs.type == 'stable' && env.CURRENT_VERSION != env.LAST_PUBLISHED_VERSION }}
with:
pat: ${{ secrets.VSCE_TOKEN }}
registryUrl: https://marketplace.visualstudio.com
extensionFile: client/viper-ide-darwin-arm64.vsix
packagePath: ''
- name: Publish the extension to Visual Studio Marketplace for Windows
uses: HaaLeo/publish-vscode-extension@v1
if: ${{ github.event.inputs.type == 'stable' && env.CURRENT_VERSION != env.LAST_PUBLISHED_VERSION }}
with:
pat: ${{ secrets.VSCE_TOKEN }}
registryUrl: https://marketplace.visualstudio.com
extensionFile: client/viper-ide-win32-x64.vsix
packagePath: ''
- name: Publish the extension to Open VSX Registry for Linux
uses: HaaLeo/publish-vscode-extension@v1
if: ${{ github.event.inputs.type == 'stable' && env.CURRENT_VERSION != env.LAST_PUBLISHED_VERSION }}
with:
pat: ${{ secrets.OPEN_VSX_TOKEN }}
registryUrl: https://open-vsx.org
extensionFile: client/viper-ide-linux-x64.vsix
packagePath: ''
- name: Publish the extension to Open VSX Registry for macOS
uses: HaaLeo/publish-vscode-extension@v1
if: ${{ github.event.inputs.type == 'stable' && env.CURRENT_VERSION != env.LAST_PUBLISHED_VERSION }}
with:
pat: ${{ secrets.OPEN_VSX_TOKEN }}
registryUrl: https://open-vsx.org
extensionFile: client/viper-ide-darwin-x64.vsix
packagePath: ''
- name: Publish the extension to Open VSX Registry for macOS ARM
uses: HaaLeo/publish-vscode-extension@v1
if: ${{ github.event.inputs.type == 'stable' && env.CURRENT_VERSION != env.LAST_PUBLISHED_VERSION }}
with:
pat: ${{ secrets.OPEN_VSX_TOKEN }}
registryUrl: https://open-vsx.org
extensionFile: client/viper-ide-darwin-arm64.vsix
packagePath: ''
- name: Publish the extension to Open VSX Registry for Windows
uses: HaaLeo/publish-vscode-extension@v1
if: ${{ github.event.inputs.type == 'stable' && env.CURRENT_VERSION != env.LAST_PUBLISHED_VERSION }}
with:
pat: ${{ secrets.OPEN_VSX_TOKEN }}
registryUrl: https://open-vsx.org
extensionFile: client/viper-ide-win32-x64.vsix
packagePath: ''
# publish 'rc' releases as pre-releases
- name: Publish the extension to Visual Studio Marketplace for Linux (as pre-release)
uses: HaaLeo/publish-vscode-extension@v1
if: ${{ github.event.inputs.type == 'rc' && env.CURRENT_VERSION != env.LAST_PUBLISHED_VERSION }}
with:
pat: ${{ secrets.VSCE_TOKEN }}
registryUrl: https://marketplace.visualstudio.com
extensionFile: client/viper-ide-linux-x64.vsix
packagePath: ''
preRelease: true
- name: Publish the extension to Visual Studio Marketplace for macOS (as pre-release)
uses: HaaLeo/publish-vscode-extension@v1
if: ${{ github.event.inputs.type == 'rc' && env.CURRENT_VERSION != env.LAST_PUBLISHED_VERSION }}
with:
pat: ${{ secrets.VSCE_TOKEN }}
registryUrl: https://marketplace.visualstudio.com
extensionFile: client/viper-ide-darwin-x64.vsix
packagePath: ''
preRelease: true
- name: Publish the extension to Visual Studio Marketplace for macOS ARM (as pre-release)
uses: HaaLeo/publish-vscode-extension@v1
if: ${{ github.event.inputs.type == 'rc' && env.CURRENT_VERSION != env.LAST_PUBLISHED_VERSION }}
with:
pat: ${{ secrets.VSCE_TOKEN }}
registryUrl: https://marketplace.visualstudio.com
extensionFile: client/viper-ide-darwin-arm64.vsix
packagePath: ''
preRelease: true
- name: Publish the extension to Visual Studio Marketplace for Windows (as pre-release)
uses: HaaLeo/publish-vscode-extension@v1
if: ${{ github.event.inputs.type == 'rc' && env.CURRENT_VERSION != env.LAST_PUBLISHED_VERSION }}
with:
pat: ${{ secrets.VSCE_TOKEN }}
registryUrl: https://marketplace.visualstudio.com
extensionFile: client/viper-ide-win32-x64.vsix
packagePath: ''
preRelease: true