diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5b5139a..0dd9795 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -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 @@ -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 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..acc9c08 --- /dev/null +++ b/.github/workflows/publish.yml @@ -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 diff --git a/Makefile b/Makefile index 9d8e737..1d3fae1 100644 --- a/Makefile +++ b/Makefile @@ -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)