Skip to content
Merged
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
120 changes: 0 additions & 120 deletions .github/workflows/publish.yml

This file was deleted.

142 changes: 117 additions & 25 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,28 +1,67 @@
name: Release

on:
schedule:
- cron: '0 8 * * 1' # Every Monday at 08:00 UTC
workflow_dispatch:
push:
branches:
- main

permissions:
contents: write
issues: write
pull-requests: write

concurrency:
Comment thread
skyrpex marked this conversation as resolved.
group: release
cancel-in-progress: false

permissions:
contents: write

jobs:
test:
name: Test
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: Compile
run: npx vsce package
env:
LOCALSTACK_WEB_AUTH_REDIRECT: https://app.localstack.cloud/redirect
NODE_ENV: ci

- name: Test
run: xvfb-run -a npx vscode-test

release:
name: Release
runs-on: ubuntu-latest
needs: test
outputs:
release_created: ${{ steps.release.outputs.release_created }}
tag_name: ${{ steps.release.outputs.tag_name }}
version: ${{ steps.release.outputs.version }}
steps:
- uses: googleapis/release-please-action@v4
id: release
with:
token: ${{ secrets.GITHUB_TOKEN }}
release-type: node

build:
name: Build
runs-on: ubuntu-latest
needs: release
if: ${{ needs.release.outputs.release_created == 'true' }}
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}

- name: Setup Node
uses: actions/setup-node@v4
Expand All @@ -32,19 +71,72 @@ jobs:
- name: Install dependencies
run: npm ci

- name: Configure git
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"

- name: Bump version, update changelog, and tag
run: |
BEFORE=$(node -p "require('./package.json').version")
npx --yes commit-and-tag-version
AFTER=$(node -p "require('./package.json').version")

if [ "$BEFORE" != "$AFTER" ]; then
git push --follow-tags origin main
else
echo "No releasable commits — skipping push"
fi
- name: Build VSIX
run: npx vsce package
env:
LOCALSTACK_WEB_AUTH_REDIRECT: https://app.localstack.cloud/redirect
NODE_ENV: production
ANALYTICS_API_URL: https://analytics.localstack.cloud/v1/events

- name: Upload VSIX artifact
uses: actions/upload-artifact@v4
with:
name: vsix
path: "*.vsix"

publish-github-release-artifact:
name: Publish artifact to GitHub Release
runs-on: ubuntu-latest
needs: [build, release]
if: ${{ needs.release.outputs.release_created == 'true' }}
steps:
- name: Download VSIX
uses: actions/download-artifact@v4
with:
name: vsix

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

- name: Upload Release Artifact
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh release upload ${{ needs.release.outputs.tag_name }} *.vsix

publish-vscode-marketplace:
name: Publish to VS Marketplace
runs-on: ubuntu-latest
needs: [build, release]
if: ${{ needs.release.outputs.release_created == 'true' }}
steps:
- name: Download VSIX
uses: actions/download-artifact@v4
with:
name: vsix

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

- name: Publish to VS Marketplace
run: npx @vscode/vsce publish --packagePath *.vsix
env:
VSCE_PAT: ${{ secrets.VSCE_PAT }}

publish-ovsx:
name: Publish to Open VSX
runs-on: ubuntu-latest
needs: [build, release]
if: ${{ needs.release.outputs.release_created == 'true' }}
steps:
- name: Download VSIX
uses: actions/download-artifact@v4
with:
name: vsix

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

- name: Publish to Open VSX
run: npx ovsx publish *.vsix -p $OVSX_PAT
env:
OVSX_PAT: ${{ secrets.OVSX_PAT }}
Loading