diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 9d35281..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,126 +0,0 @@ -name: Create GitHub Release - -env: - NODE_VERSION: 22 - PNPM_VERSION: 10.7.1 - -on: - push: - tags: - - v* - -# Workflow need write access to the repository to create a release -permissions: - contents: write - -jobs: - release: - runs-on: ubuntu-latest - steps: - - name: Check out the repository - uses: actions/checkout@v4 - - - name: Setup pnpm - uses: pnpm/action-setup@v4 - with: - version: ${{ env.PNPM_VERSION }} - run_install: false - - - name: Set up Node.js - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODE_VERSION }} - cache: pnpm - - - name: Install dependencies - run: pnpm install - - - name: List files - run: ls -alt - - - name: Run markdownlint - run: pnpm lint:md - - - name: Run ESLint - run: pnpm lint:ts - - # Convert grammar to PList format & Test compile & Run ESBuild & Generate VSIX file - - name: Create production build - run: pnpm build:prod - - - name: Create build.txt with version - run: pnpm build:txt - - - name: Extract changelog - run: | - # Import version from package.json using pnpm - export VERSION=$(pnpm pkg get version | tr -d '"') - - pnpm extract-changelog -e $VERSION - - - name: Set up variables - uses: actions/github-script@v7 - with: - script: | - const tag = context.ref.replace('refs/tags/', ''); - - const refRes = await github.rest.git.getRef({ - owner: context.repo.owner, - repo: context.repo.repo, - ref: `tags/${tag}`, - }); - - const { object } = refRes.data; - - let tagMessage = ''; - if (object.type === 'tag') { - // Annotated tag - const tagObj = await github.rest.git.getTag({ - owner: context.repo.owner, - repo: context.repo.repo, - tag_sha: object.sha, - }); - tagMessage = (tagObj.data.message || '').trim(); - } else { - // Lightweight tag - tagMessage = ''; - } - - const isPreRelease = tagMessage.toLowerCase() === 'prerelease'; - - core.exportVariable('TAG_NAME', tag); - core.exportVariable('IS_PRERELEASE', isPreRelease.toString()); - - - name: Create GitHub Release - uses: softprops/action-gh-release@v2 - with: - files: | - syntaxes/out/adblock.plist - out/vscode-adblock.vsix - draft: false - prerelease: ${{ env.IS_PRERELEASE }} - body_path: ./out/TEMP_CHANGES.md - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - notify: - name: Send Slack notification - needs: release - # Note: 'always()' is needed to run the notify job even if the test job was failed - if: - ${{ - always() && - github.repository == 'AdguardTeam/VscodeAdblockSyntax' && - github.event_name == 'push' - }} - runs-on: ubuntu-latest - steps: - - name: Send Slack notification - uses: 8398a7/action-slack@v3 - with: - status: ${{ needs.release.result }} - fields: workflow, repo, message, commit, author, eventName, ref, job - job_name: release - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} diff --git a/bamboo-specs/build-prerelease.yaml b/bamboo-specs/build-prerelease.yaml index e3485ce..e06eeba 100644 --- a/bamboo-specs/build-prerelease.yaml +++ b/bamboo-specs/build-prerelease.yaml @@ -64,18 +64,24 @@ Build: file: out/build.txt scope: RESULT namespace: inject + - script: + interpreter: SHELL + scripts: + - | + set -e + + # Extract related changes from changelog + pnpm exec changelog-tools extract --extract-version ${bamboo.inject.version} > ./EXTRACTED_CHANGES.md - any-task: plugin-key: com.atlassian.bamboo.plugins.vcs:task.vcs.tagging configuration: selectedRepository: defaultRepository tagName: v${bamboo.inject.version} - # annotated tag - description: prerelease final-tasks: - script: interpreter: SHELL scripts: - - "./bamboo-specs/scripts/cleanup.sh out/vscode-adblock.vsix" + - "./bamboo-specs/scripts/cleanup.sh out/vscode-adblock.vsix,syntaxes/out/adblock.plist,EXTRACTED_CHANGES.md" # Store the .vsix file as a build artifact artifacts: - name: vscode-adblock.vsix @@ -83,6 +89,16 @@ Build: pattern: vscode-adblock.vsix shared: true required: true + - name: EXTRACTED_CHANGES.md + location: . + pattern: EXTRACTED_CHANGES.md + shared: true + required: true + - name: adblock.plist + location: syntaxes/out + pattern: adblock.plist + shared: true + required: true requirements: - adg-docker: true diff --git a/bamboo-specs/build.yaml b/bamboo-specs/build.yaml index 34b2748..c7d6adf 100644 --- a/bamboo-specs/build.yaml +++ b/bamboo-specs/build.yaml @@ -64,6 +64,14 @@ Build: file: out/build.txt scope: RESULT namespace: inject + - script: + interpreter: SHELL + scripts: + - | + set -e + + # Extract related changes from changelog + pnpm exec changelog-tools extract --extract-version ${bamboo.inject.version} > ./EXTRACTED_CHANGES.md - any-task: plugin-key: com.atlassian.bamboo.plugins.vcs:task.vcs.tagging configuration: @@ -73,7 +81,7 @@ Build: - script: interpreter: SHELL scripts: - - "./bamboo-specs/scripts/cleanup.sh out/vscode-adblock.vsix" + - "./bamboo-specs/scripts/cleanup.sh out/vscode-adblock.vsix,syntaxes/out/adblock.plist,EXTRACTED_CHANGES.md" # Store the .vsix file as a build artifact artifacts: - name: vscode-adblock.vsix @@ -81,6 +89,16 @@ Build: pattern: vscode-adblock.vsix shared: true required: true + - name: EXTRACTED_CHANGES.md + location: . + pattern: EXTRACTED_CHANGES.md + shared: true + required: true + - name: adblock.plist + location: syntaxes/out + pattern: adblock.plist + shared: true + required: true requirements: - adg-docker: true diff --git a/bamboo-specs/deploy-prerelease.yaml b/bamboo-specs/deploy-prerelease.yaml index 74f93ec..5cc55c8 100644 --- a/bamboo-specs/deploy-prerelease.yaml +++ b/bamboo-specs/deploy-prerelease.yaml @@ -7,6 +7,7 @@ release-naming: ${bamboo.inject.version} environments: - marketplace.visualstudio.com - open-vsx.org + - GitHub marketplace.visualstudio.com: docker: @@ -102,3 +103,42 @@ open-vsx.org: - webhook: name: Deploy webhook url: http://prod.jirahub.service.eu.consul/v1/webhook/bamboo + +GitHub: + triggers: [] + tasks: + - clean + - checkout: + repository: bamboo-deploy-publisher + path: bamboo-deploy-publisher + force-clean-build: true + - artifact-download: + artifacts: + - name: vscode-adblock.vsix + - name: EXTRACTED_CHANGES.md + - name: adblock.plist + - script: + interpreter: SHELL + scripts: + - |- + set -x + set -e + + # Fix mixed logs + exec 2>&1 + + ls -laht + + # publish to Github Releases + GITHUB_TOKEN="${bamboo.githubPublicRepoPassword}" \ + ./bamboo-deploy-publisher/deploy.sh vscode-adblock-syntax-github-prerelease + final-tasks: [] + requirements: + - adg-docker: 'true' + notifications: + - events: + - deployment-started-and-finished + recipients: + - webhook: + name: Deploy webhook + url: http://prod.jirahub.service.eu.consul/v1/webhook/bamboo diff --git a/bamboo-specs/deploy.yaml b/bamboo-specs/deploy.yaml index 997aa79..4b2f8b0 100644 --- a/bamboo-specs/deploy.yaml +++ b/bamboo-specs/deploy.yaml @@ -7,6 +7,7 @@ release-naming: ${bamboo.inject.version} environments: - marketplace.visualstudio.com - open-vsx.org + - GitHub marketplace.visualstudio.com: docker: @@ -102,3 +103,42 @@ open-vsx.org: - webhook: name: Deploy webhook url: http://prod.jirahub.service.eu.consul/v1/webhook/bamboo + +GitHub: + triggers: [] + tasks: + - clean + - checkout: + repository: bamboo-deploy-publisher + path: bamboo-deploy-publisher + force-clean-build: true + - artifact-download: + artifacts: + - name: vscode-adblock.vsix + - name: EXTRACTED_CHANGES.md + - name: adblock.plist + - script: + interpreter: SHELL + scripts: + - |- + set -x + set -e + + # Fix mixed logs + exec 2>&1 + + ls -laht + + # publish to Github Releases + GITHUB_TOKEN="${bamboo.githubPublicRepoPassword}" \ + ./bamboo-deploy-publisher/deploy.sh vscode-adblock-syntax-github-release + final-tasks: [] + requirements: + - adg-docker: 'true' + notifications: + - events: + - deployment-started-and-finished + recipients: + - webhook: + name: Deploy webhook + url: http://prod.jirahub.service.eu.consul/v1/webhook/bamboo diff --git a/bamboo-specs/permissions-prerelease.yaml b/bamboo-specs/permissions-prerelease.yaml index 3443104..ec490c8 100644 --- a/bamboo-specs/permissions-prerelease.yaml +++ b/bamboo-specs/permissions-prerelease.yaml @@ -20,3 +20,9 @@ environment-permissions: permissions: - view - deploy + - GitHub: + - groups: + - extensions-developers + permissions: + - view + - deploy diff --git a/bamboo-specs/permissions.yaml b/bamboo-specs/permissions.yaml index 01925d4..5c8be25 100644 --- a/bamboo-specs/permissions.yaml +++ b/bamboo-specs/permissions.yaml @@ -20,3 +20,9 @@ environment-permissions: permissions: - view - deploy + - GitHub: + - groups: + - extensions-developers + permissions: + - view + - deploy diff --git a/package.json b/package.json index d917537..23684f5 100644 --- a/package.json +++ b/package.json @@ -100,6 +100,7 @@ "watch:server": "pnpm esbuild:server --sourcemap --watch" }, "devDependencies": { + "@adguard/changelog-tools": "^0.0.1", "@swc/core": "^1.3.76", "@swc/jest": "^0.2.28", "@types/fs-extra": "^11.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 316df2b..52044f0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,6 +14,9 @@ importers: .: devDependencies: + '@adguard/changelog-tools': + specifier: ^0.0.1 + version: 0.0.1 '@swc/core': specifier: ^1.3.76 version: 1.11.18 @@ -227,6 +230,11 @@ packages: resolution: {integrity: sha512-+g7dkggf7qY+WckjdbUUb+MJq/C8Bc1xX7dn7kEQSBkD9pJxAcp3d391R2OYdQdgR1FNUZ+FnuJfk60ZetkNPg==} engines: {node: '>=22'} + '@adguard/changelog-tools@0.0.1': + resolution: {integrity: sha512-tV3k8j6vgbMnMulRGx4SySls6yQETjryijBO+Lg7QR5nsLmOd0w7zaXFwxD9cG8xy72TA+B8n4argre2ie6JuA==} + engines: {node: '>=20'} + hasBin: true + '@adguard/css-tokenizer@1.2.0': resolution: {integrity: sha512-cUj5j/AU5z/T4//5M6KnIJBpykAY4QbDsoiQ2DaWX/r2XkepMkTb8DhIbUHJD/QLGEyLeQLpi+nlxAgf4NTRRQ==} @@ -4737,6 +4745,17 @@ snapshots: xregexp: 5.1.2 zod: 3.24.4 + '@adguard/changelog-tools@0.0.1': + dependencies: + commander: 14.0.2 + escape-string-regexp: 5.0.0 + remark-inline-links: 7.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + '@adguard/css-tokenizer@1.2.0': {} '@adguard/ecss-tree@2.0.1':