does this fix anything #121
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: 'build and release' | |
env: | |
BUN_VERSION: '1.0.35' | |
ARTIFACT_NAME_VSIX: vsix | |
VSIX_NAME: vscode-pyright.vsix | |
VSIX_DIR: packages/vscode-pyright | |
NPM_PACKAGE_DIR: packages/pyright | |
on: push | |
jobs: | |
build-and-publish-node: | |
runs-on: ubuntu-latest | |
permissions: | |
id-token: write | |
contents: write | |
packages: write | |
pull-requests: read | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- uses: oven-sh/setup-bun@v1 | |
with: | |
bun-version: ${{ env.BUN_VERSION }} | |
- name: Get npm cache directory | |
id: npm-cache | |
shell: bash | |
run: | | |
echo "dir=$(npm config get cache)" >> $GITHUB_OUTPUT | |
- run: bun run install:all | |
- id: current-version | |
run: echo ::set-output name=CURRENT_VERSION::$(bun --print "require(\"./lerna.json\").version") | |
- if: github.ref == 'refs/heads/main' | |
run: echo ::set-output name=VERSION_INFO::$(npm view $(bun --print "require(\"./package.json\").name")@=${{ steps.current-version.outputs.CURRENT_VERSION }}) | |
id: version-was-changed | |
working-directory: ${{ env.NPM_PACKAGE_DIR }} | |
- name: Build VSIX | |
working-directory: ${{ env.VSIX_DIR }} | |
run: | | |
npm run package | |
mv basedpyright-*.vsix ${{ env.VSIX_NAME }} | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.ARTIFACT_NAME_VSIX }} | |
path: ${{ env.VSIX_DIR }}/${{ env.VSIX_NAME }} | |
# publish npm canary version on every push to every branch except main | |
- name: set version for npm canary | |
if: github.ref != 'refs/heads/main' | |
run: npm version ${{ steps.current-version.outputs.CURRENT_VERSION }}-$GITHUB_SHA --git-tag-version false | |
working-directory: ${{ env.NPM_PACKAGE_DIR }} | |
- name: publish package - npm canary | |
if: github.ref != 'refs/heads/main' | |
uses: JS-DevTools/npm-publish@v1 | |
with: | |
token: ${{ secrets.NPM_TOKEN }} | |
access: public | |
tag: canary | |
package: ${{ env.NPM_PACKAGE_DIR }}/package.json | |
- name: publish package - npm | |
# publish npm & pypi packages, vscode extension and github release if the version in lerna.json was changed: | |
if: github.ref == 'refs/heads/main' && steps.version-was-changed.outputs.VERSION_INFO == '' | |
uses: JS-DevTools/npm-publish@v1 | |
with: | |
token: ${{ secrets.NPM_TOKEN }} | |
access: public | |
package: ${{ env.NPM_PACKAGE_DIR }}/package.json | |
# https://code.visualstudio.com/api/working-with-extensions/publishing-extension#get-a-personal-access-token | |
- name: publish VSIX - visual studio marketplace | |
if: github.ref == 'refs/heads/main' && steps.version-was-changed.outputs.VERSION_INFO == '' | |
run: ./node_modules/.bin/vsce publish --packagePath ${{ env.VSIX_NAME }} --pat ${{ secrets.VSCE_TOKEN }} --noVerify | |
working-directory: ${{ env.VSIX_DIR }} | |
- name: publish VSIX - open VSX | |
if: github.ref == 'refs/heads/main' && steps.version-was-changed.outputs.VERSION_INFO == '' | |
run: ./node_modules/.bin/ovsx publish --packagePath ${{ env.VSIX_NAME }} --pat ${{ secrets.OPEN_VSX_TOKEN }} | |
working-directory: ${{ env.VSIX_DIR }} | |
build-wheels: | |
name: Build wheels on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v3 | |
- name: Install cibuildwheel | |
run: ./pw pdm install --group=cibuild | |
- name: Build wheels | |
run: python -m cibuildwheel --output-dir dist | |
# to supply options, put them in 'env', like: | |
# env: | |
# CIBW_SOME_OPTION: value | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }} | |
path: ./dist/*.whl | |
publish-pypi-and-github-release: | |
runs-on: ubuntu-latest | |
needs: | |
- build-wheels | |
- build-and-publish-node | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
path: ./dist/*.whl | |
- name: publish package - pypi | |
if: github.ref == 'refs/heads/main' | |
run: ./pw pdm publish | |
- uses: marvinpinto/[email protected] | |
if: github.ref == 'refs/heads/main' | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
prerelease: false | |
files: | | |
dist/* | |
${{ env.VSIX_DIR }}/${{ env.VSIX_NAME }} | |
automatic_release_tag: v${{ steps.current-version.outputs.CURRENT_VERSION }} |