Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 3 additions & 12 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,8 @@ jobs:
- name: Install dependencies
run: npm ci

- name: Format
run: npx biome ci .

- name: Lint
run: npx eslint
run: make lint

test:
name: Test
Expand All @@ -46,14 +43,8 @@ jobs:
- name: Install dependencies
run: npm ci

- name: Type check
run: npx tsc

- name: Compile
run: npx vsce package
- name: Test
run: make test
env:
LOCALSTACK_WEB_AUTH_REDIRECT: https://app.localstack.cloud/redirect?name=VSCode
NODE_ENV: ci

- name: Test
run: xvfb-run -a npx vscode-test
77 changes: 77 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
name: Publish Extension

on:
push:
workflow_dispatch:
inputs:
publish_vs_marketplace:
description: 'Publish to VS Marketplace'
required: true
type: boolean
default: false
publish_open_vsx:
description: 'Publish to Open VSX'
required: true
type: boolean
default: false

permissions:
contents: read

jobs:
publish:
name: Build and Publish
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v5

- name: Setup Node
uses: actions/setup-node@v4
with:
cache: npm

- name: Install dependencies
run: npm ci

- name: Lint
run: make lint

- name: Test
run: make test
env:
LOCALSTACK_WEB_AUTH_REDIRECT: https://app.localstack.cloud/redirect?name=VSCode
NODE_ENV: ci

- name: Set version from branch name
run: |
BRANCH_NAME="${GITHUB_REF#refs/heads/}"
echo "VERSION=$BRANCH_NAME" >> $GITHUB_ENV
echo "Using version: $BRANCH_NAME"

- name: Build VSIX package
run: make vsix
env:
LOCALSTACK_WEB_AUTH_REDIRECT: https://app.localstack.cloud/redirect?name=VSCode
NODE_ENV: production
ANALYTICS_API_URL: https://analytics.localstack.cloud/v1/events

- name: Publish to VS Marketplace
if: ${{ inputs.publish_vs_marketplace }}
run: make publish-marketplace
env:
VSCE_PAT: ${{ secrets.VSCE_PAT }}

- name: Publish to Open VSX
if: ${{ inputs.publish_open_vsx }}
run: make publish-ovsx
env:
OVSX_PAT: ${{ secrets.OVSX_PAT }}

- name: Upload VSIX artifact
uses: actions/upload-artifact@v4
with:
name: localstack-${{ env.VERSION }}.vsix
path: localstack-${{ env.VERSION }}.vsix
retention-days: 7
42 changes: 33 additions & 9 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,11 +1,35 @@
.PHONY: vsix publish
.PHONY: vsix publish publish-ovsx publish-marketplace lint test

# VERSION can be set via environment variable or defaults to the version in package.json
VERSION ?= $(shell node -p "require('./package.json').version")

lint:
@echo "Running format check..."
npx biome ci .
@echo "Running linter..."
npx eslint

test:
@echo "Running type check..."
npx tsc
@echo "Compiling extension..."
npx vsce package
@echo "Running tests..."
xvfb-run -a npx vscode-test

vsix:
@echo "Packaging VS Code extension into VSIX file..."
LOCALSTACK_WEB_AUTH_REDIRECT=https://app.localstack.cloud/redirect?name=VSCode NODE_ENV=production ANALYTICS_API_URL=https://analytics.localstack.cloud/v1/events npx vsce package
@hash=$$(git rev-parse --short HEAD); \
mv localstack-1.0.0.vsix localstack-1.0.0-$$hash.vsix

publish:
@echo "Publishing VS Code extension..."
LOCALSTACK_WEB_AUTH_REDIRECT=https://app.localstack.cloud/redirect?name=VSCode NODE_ENV=production ANALYTICS_API_URL=https://analytics.localstack.cloud/v1/events npx vsce publish
@echo "Packaging VS Code extension into VSIX file (version: $(VERSION))..."
npx vsce package $(VERSION)
@echo "Created: localstack-$(VERSION).vsix"

publish-marketplace:
@echo "Publishing VS Code extension to VS Marketplace..."
@echo "Verifying PAT..."
npx vsce show localstack -p $(VSCE_PAT)
# npx vsce publish localstack-$(VERSION).vsix -p $(VSCE_PAT)

publish-ovsx:
@echo "Publishing VS Code extension to Open VSX..."
@echo "Verifying PAT..."
npx ovsx verify-pat localstack -p $(OVSX_PAT)
# npx ovsx publish localstack-$(VERSION).vsix -p $(OVSX_PAT)
Loading