From 572d2a1fcf93f20a872cfa3956822c73aadf055b Mon Sep 17 00:00:00 2001 From: akfoster Date: Sat, 25 Jan 2025 16:50:59 -0800 Subject: [PATCH] Continuous Delivery | Pre Release Build and Publish (#1430) * pre-release workflow * remove staging environment * expand to match PR#1318 * add permissions to resolve warning --- .github/workflows/prerelease-publish.yml | 86 ++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 .github/workflows/prerelease-publish.yml diff --git a/.github/workflows/prerelease-publish.yml b/.github/workflows/prerelease-publish.yml new file mode 100644 index 0000000000..863ab921c9 --- /dev/null +++ b/.github/workflows/prerelease-publish.yml @@ -0,0 +1,86 @@ +name: Pre-release Publisher + +on: + release: + types: [prereleased] + workflow_dispatch: + +permissions: + contents: write + packages: write + actions: read + checks: read + deployments: read + discussions: read + issues: read + pages: read + pull-requests: read + repository-projects: read + security-events: read + statuses: read + +jobs: + test: + uses: ./.github/workflows/test.yml + + publish-prerelease: + needs: test + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "20.15.1" + cache: "npm" + + # Cache root dependencies + - name: Cache root dependencies + uses: actions/cache@v4 + id: root-cache + with: + path: node_modules + key: ${{ runner.os }}-npm-${{ hashFiles('package-lock.json') }} + + # Cache webview-ui dependencies + - name: Cache webview-ui dependencies + uses: actions/cache@v4 + id: webview-cache + with: + path: webview-ui/node_modules + key: ${{ runner.os }}-npm-webview-${{ hashFiles('webview-ui/package-lock.json') }} + + - name: Install root dependencies + if: steps.root-cache.outputs.cache-hit != 'true' + run: npm ci + + - name: Install webview-ui dependencies + if: steps.webview-cache.outputs.cache-hit != 'true' + run: cd webview-ui && npm ci + + - name: Build Extension + run: npm run build + + - name: Install Publishing Tools + run: npm install -g vsce ovsx + + - name: Package and Publish Pre-release + env: + VSCE_PAT: ${{ secrets.VSCE_PAT }} + OVSX_PAT: ${{ secrets.OVSX_PAT }} + run: | + current_package_version=$(node -p "require('./package.json').version") + vsce package + vsce publish --pre-release -p ${{ secrets.VSCE_PAT }} + echo "Successfully published pre-release version $current_package_version to VS Code Marketplace" + + - name: Create GitHub Pre-release + uses: softprops/action-gh-release@v1 + with: + files: "*.vsix" + generate_release_notes: true + prerelease: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}