Publish VSCode Extension #19
Workflow file for this run
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: Publish VSCode Extension | |
on: | |
workflow_dispatch: | |
inputs: | |
publish_marketplace: | |
type: boolean | |
default: false | |
description: publish to marketplace | |
publish_github: | |
type: boolean | |
default: false | |
description: publish to GitHub release | |
release_tag: | |
type: string | |
description: Tag to release (empty for latest tag) | |
required: false | |
jobs: | |
build-test-publish: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check if all checkboxes are unchecked | |
id: check_checkboxes | |
run: | | |
if [[ ${{ inputs.publish_marketplace }} == false && ${{ inputs.publish_github }} == false ]]; then | |
echo "All checkboxes are unchecked. Exiting workflow." | |
exit 1 | |
fi | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Verify and set release tag | |
id: set_release_tag | |
run: | | |
git fetch --prune --unshallow --tags | |
release_tag=${{ inputs.release_tag }} | |
if [ -z "$release_tag" ]; then | |
echo "Input tag is empty. Fetching latest tag." | |
release_tag=$(git describe --tags $(git rev-list --tags --max-count=1)) | |
if [ -z "$release_tag" ]; then | |
echo "No latest tag available. Exiting workflow." | |
exit 1 | |
fi | |
else | |
if ! git rev-parse -q --verify "refs/tags/$release_tag" >/dev/null; then | |
echo "Invalid tag '$release_tag'. Exiting workflow." | |
exit 1 | |
fi | |
fi | |
echo "::set-output name=tag::$release_tag" | |
- name: Checkout to latest tag | |
run: git checkout ${{ steps.set_release_tag.outputs.tag }} | |
- name: Debug info | |
run: | | |
echo "Ref: ${{ github.ref }}" | |
echo "Release tag: ${{ steps.set_release_tag.outputs.tag }}" | |
echo "Publish marketplace input: ${{ inputs.publish_marketplace }}" | |
echo "Publish GitHub input: ${{ inputs.publish_github }}" | |
- name: Install Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 18.x | |
- run: npm install | |
- run: xvfb-run -a npm test | |
- name: Publish to marketplace | |
if: inputs.publish_marketplace | |
# run: npm run deploy | |
run: | | |
echo "Publish to marketplace" | |
echo "fake failure" | |
exit 1 | |
env: | |
VSCE_PAT: ${{ secrets.VSCE_PAT }} | |
- name: Get repository name | |
if: ${{ !cancelled() && inputs.publish_github }} | |
id: get_repo_name | |
run: | | |
repo_full_name=${{ github.repository }} | |
repo_name=${repo_full_name#*/} | |
echo "::set-output name=name::$repo_name" | |
- name: Debug info (check if is run) | |
run: | | |
echo "Ref: ${{ github.ref }}" | |
echo "Release tag: ${{ steps.set_release_tag.outputs.tag }}" | |
echo "Publish marketplace input: ${{ inputs.publish_marketplace }}" | |
echo "Publish GitHub input: ${{ inputs.publish_github }}" | |
- name: Publish to GitHub release | |
if: ${{ !cancelled() && inputs.publish_github }} | |
run: echo "Publish to GitHub release" | |
# uses: softprops/action-gh-release@v1 | |
# with: | |
# files: | | |
# *.vsix | |
# tag_name: ${{ steps.set_release_tag.outputs.tag }} | |
# name: ${{ steps.get_repo_name.outputs.name }} ${{ steps.set_release_tag.outputs.tag }} | |
# body: | | |
# Release ${{ steps.get_repo_name.outputs.name }} ${{ steps.set_release_tag.outputs.tag }}. | |
# draft: false | |
# prerelease: false | |
# token: ${{ secrets.GITHUB_TOKEN }} |