Skip to main content

automated-release-setup

Use this skill whenever the user asks to "set up automated release", "configure release automation", "add automated release workflow", or any variation of setting up the automated release workflow for a SonarSource analyzer project. This skill gathers project details, creates workflow files, updates existing release workflows, and sets up vault permissions.

Ir para a instalação

Informações da origem

Repositório
SonarSource/release-github-actions
Última atividade na origem
31 de agosto de 2026 às 12:50
Idioma detectado do SKILL.md
inglês
Estrelas
7
Forks
1

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
automated-release-setup
description
Use this skill whenever the user asks to "set up automated release", "configure release automation", "add automated release workflow", or any variation of setting up the automated release workflow for a SonarSource analyzer project. This skill gathers project details, creates workflow files, updates existing release workflows, and sets up vault permissions.
# Setup Automated Release Workflow Help the user set up the automated release workflow by gathering required information and creating the necessary workflow files. ### Step 1: Gather Required Information Ask the user for the following details using AskUserQuestion: 1. **Project Name**: Display name (e.g., "SonarCOBOL", "SonarApex") 2. **Plugin Name**: Short identifier used in secrets (e.g., "cobol", "apex") 3. **Jira Project Key**: Jira project key (e.g., "SONARCOBOL", "SONARAPEX") 4. **PM Email**: Product Manager email address 5. **Slack Channel**: Check the existing `release.yml` for `slackChannel` value first - reuse it if present, otherwise ask the user 6. **Build System**: Maven (pom.xml) or Gradle (gradle.properties) 7. **SonarQube for IDE Integration**: Whether to create integration tickets for SonarQube for IDE: - **SLVS** (SonarQube for Visual Studio) - **SLVSCODE** (SonarQube for VS Code) - **SLCORE** (SonarLint Core) - **SLE** (SonarQube for Eclipse) - **SLI** (SonarQube for IntelliJ) 8. **CLI Integration**: Whether to create an integration ticket for the SonarQube CLI scanner. 9. **Version Bump**: Whether the automated release workflow should bump the project version after the release (i.e., prepare the next development iteration). If yes, also ask: - **Bump Version PR Labels**: Optional comma-separated list of labels to apply to the version bump pull request (e.g., `update-next-dev,skip-qa`). Leave empty if no labels are needed. ### Step 1b: Check Existing release.yml Before asking for all information, read the existing `.github/workflows/release.yml` file to extract: - **slackChannel**: Reuse the existing Slack channel configuration for the automated release workflow This ensures consistency between the release and automated-release workflows. ### Step 1c: Detect Workflow File Extension Before creating any workflow files, check whether the existing workflows in `.github/workflows/` use `.yml` or `.yaml` as the file extension: ```bash ls .github/workflows/ ``` - If most existing files use `.yml`, create new workflow files with the `.yml` extension. - If most existing files use `.yaml`, create new workflow files with the `.yaml` extension. - If there is a mix, prefer `.yml` (GitHub Actions default). Apply this detected extension consistently when naming all new workflow files (e.g., `automated-release.yml` or `automated-release.yaml`). ### Step 2: Check Prerequisites Remind the user of these prerequisites and **ask for confirmation** using AskUserQuestion: 1. **Jira Configuration**: - Add `Jira Tech User GitHub` as Administrator on the Jira project - Add the same user to Jira sandbox for dry-run testing (required for `dry-run: true` mode) - **Ask the user to confirm both**: - "Have you added 'Jira Tech User GitHub' as Administrator on the {JIRA_PROJECT_KEY} project?" (Production) - "Have you added 'Jira Tech User GitHub' as Administrator on the {JIRA_PROJECT_KEY} project in the Jira sandbox?" (For dry-run testing) - The user must verify this manually at: Project settings → People → Administrator role - Sandbox URL: https://sonarsource-sandbox-608.atlassian.net/ 2. **Vault Permissions** (re-terraform-aws-vault): - Create a PR to add the `release-automation` secret to the repository's config in the squad config file - File: `orders/{squad}.yaml` (e.g., `orders/analysis-jvm-squad.yaml`) - This creates secret `sonar-{plugin-name}-release-automation` - Example PR: https://github.com/SonarSource/re-terraform-aws-vault/pull/8406 - **Important**: The skill should create this PR automatically (see Step 5b) 3. **Release Workflow**: - Ensure `release.yml` supports `workflow_dispatch` with inputs: `version`, `releaseId`, `dryRun` ### Step 3: Create Workflow Files Create only the `automated-release` workflow file (using the detected extension from Step 1c). **Do not create a separate `bump-versions` workflow** — version bumping is handled directly by the reusable workflow when `bump-version: true` is passed. #### 3.1 Create `automated-release{EXT}` (standard, no SonarQube for IDE integration, no version bump) ```yaml name: Automated Release on: workflow_dispatch: inputs: short-description: description: "Short description for the REL ticket" required: true type: string sqc-integration: description: "Integrate into SQC" type: boolean default: true sqs-integration: description: "Integrate into SQS" type: boolean default: true branch: description: "Branch from which to do the release" required: true default: "master" type: string new-version: description: "Next Jira version to create after the release (e.g. 2.2), NOT the version being released; if left empty, the current Jira version's last component is incremented (e.g. 2.1 -> 2.2)" required: false type: string rule-props-changed: description: > "@RuleProperty" changed? See SC-4654 type: boolean default: false verbose: description: "Enable verbose logging" type: boolean default: false dry-run: description: "Test mode: uses Jira sandbox and creates draft GitHub release" type: boolean default: false jobs: release: name: Release uses: SonarSource/release-github-actions/.github/workflows/automated-release.yml@v1 permissions: statuses: read id-token: write contents: write actions: write pull-requests: write with: project-name: "${PROJECT_NAME}" plugin-name: "${PLUGIN_NAME}" jira-project-key: "${JIRA_PROJECT_KEY}" rule-props-changed: ${{ github.event.inputs.rule-props-changed }} short-description: ${{ github.event.inputs.short-description }} new-version: ${{ github.event.inputs.new-version }} sqc-integration: ${{ github.event.inputs.sqc-integration == 'true' }} sqs-integration: ${{ github.event.inputs.sqs-integration == 'true' }} branch: ${{ github.event.inputs.branch }} pm-email: "${PM_EMAIL}" slack-channel: "${SLACK_CHANNEL}" verbose: ${{ github.event.inputs.verbose == 'true' }} use-jira-sandbox: ${{ github.event.inputs.dry-run == 'true' }} is-draft-release: ${{ github.event.inputs.dry-run == 'true' }} ``` #### 3.2 Create `automated-release{EXT}` (standard, no SonarQube for IDE integration, **with version bump**) When the user wants version bumping, add `bump-version: true` (and optionally `bump-version-pr-labels`) to the `with:` block: ```yaml name: Automated Release on: workflow_dispatch: inputs: short-description: description: "Short description for the REL ticket" required: true type: string sqc-integration: description: "Integrate into SQC" type: boolean default: true sqs-integration: description: "Integrate into SQS" type: boolean default: true branch: description: "Branch from which to do the release" required: true default: "master" type: string new-version: description: "Next Jira version to create after the release (e.g. 2.2), NOT the version being released; if left empty, the current Jira version's last component is incremented (e.g. 2.1 -> 2.2)" required: false type: string rule-props-changed: description: > "@RuleProperty" changed? See SC-4654 type: boolean default: false verbose: description: "Enable verbose logging" type: boolean default: false dry-run: description: "Test mode: uses Jira sandbox and creates draft GitHub release" type: boolean default: false jobs: release: name: Release uses: SonarSource/release-github-actions/.github/workflows/automated-release.yml@v1 permissions: statuses: read id-token: write contents: write actions: write pull-requests: write with: project-name: "${PROJECT_NAME}" plugin-name: "${PLUGIN_NAME}" jira-project-key: "${JIRA_PROJECT_KEY}" rule-props-changed: ${{ github.event.inputs.rule-props-changed }} short-description: ${{ github.event.inputs.short-description }} new-version: ${{ github.event.inputs.new-version }} sqc-integration: ${{ github.event.inputs.sqc-integration == 'true' }} sqs-integration: ${{ github.event.inputs.sqs-integration == 'true' }} branch: ${{ github.event.inputs.branch }} pm-email: "${PM_EMAIL}" slack-channel: "${SLACK_CHANNEL}" verbose: ${{ github.event.inputs.verbose == 'true' }} use-jira-sandbox: ${{ github.event.inputs.dry-run == 'true' }} is-draft-release: ${{ github.event.inputs.dry-run == 'true' }} bump-version: true bump-version-pr-labels: "${BUMP_VERSION_PR_LABELS}" # omit this line if no labels ``` #### 3.3 Create `automated-release{EXT}` (with SonarQube for IDE integration, no version bump) ```yaml name: Automated Release on: workflow_dispatch: inputs: short-description: description: "Short description for the REL ticket" required: true type: string sq-ide-short-description: description: "Short description for the SonarQube for IDE tickets (leave empty to skip IDE tickets)" required: false type: string sqc-integration: description: "Integrate into SQC" type: boolean default: true sqs-integration: description: "Integrate into SQS" type: boolean default: true slvs-integration: description: "Create SLVS ticket (SonarQube for Visual Studio)" type: boolean default: false slvscode-integration: description: "Create SLVSCODE ticket (SonarQube for VS Code)" type: boolean default: false slcore-integration: description: "Create SLCORE ticket (SonarLint Core)" type: boolean default: false sle-integration: description: "Create SLE ticket (SonarQube for Eclipse)" type: boolean default: false sli-integration: description: "Create SLI ticket (SonarQube for IntelliJ)" type: boolean default: false branch: description: "Branch from which to do the release" required: true default: "master" type: string new-version: description: "Next Jira version to create after the release (e.g. 2.2), NOT the version being released; if left empty, the current Jira version's last component is incremented (e.g. 2.1 -> 2.2)" required: false type: string rule-props-changed: description: > "@RuleProperty" changed? See SC-4654 type: boolean default: false verbose: description: "Enable verbose logging" type: boolean default: false dry-run: description: "Test mode: uses Jira sandbox and creates draft GitHub release" type: boolean default: false jobs: release: name: Release uses: SonarSource/release-github-actions/.github/workflows/automated-release.yml@v1 permissions: statuses: read id-token: write contents: write actions: write pull-requests: write with: project-name: "${PROJECT_NAME}" plugin-name: "${PLUGIN_NAME}" jira-project-key: "${JIRA_PROJECT_KEY}" rule-props-changed: ${{ github.event.inputs.rule-props-changed }} short-description: ${{ github.event.inputs.short-description }} new-version: ${{ github.event.inputs.new-version }} sqc-integration: ${{ github.event.inputs.sqc-integration == 'true' }} sqs-integration: ${{ github.event.inputs.sqs-integration == 'true' }} create-slvs-ticket: ${{ github.event.inputs.slvs-integration == 'true' }} create-slvscode-ticket: ${{ github.event.inputs.slvscode-integration == 'true' }} create-slcore-ticket: ${{ github.event.inputs.slcore-integration == 'true' }} create-sle-ticket: ${{ github.event.inputs.sle-integration == 'true' }} create-sli-ticket: ${{ github.event.inputs.sli-integration == 'true' }} sq-ide-short-description: ${{ github.event.inputs.sq-ide-short-description }} branch: ${{ github.event.inputs.branch }} pm-email: "${PM_EMAIL}" slack-channel: "${SLACK_CHANNEL}" verbose: ${{ github.event.inputs.verbose == 'true' }} use-jira-sandbox: ${{ github.event.inputs.dry-run == 'true' }} is-draft-release: ${{ github.event.inputs.dry-run == 'true' }} ``` #### 3.4 Create `automated-release{EXT}` (with SonarQube for IDE integration **and** version bump) Add `bump-version: true` (and optionally `bump-version-pr-labels`) to the SonarQube for IDE variant's `with:` block, same as in 3.2. #### 3.5 Create `automated-release{EXT}` (with SQ-CLI integration, no version bump, no SonarQube for IDE integration) ```yaml name: Automated Release on: workflow_dispatch: inputs: short-description: description: "Short description for the REL ticket" required: true type: string cli-integration: description: "Create CLI ticket (SonarQube CLI scanner)" type: boolean default: false sq-cli-short-description: description: "Short description for the CLI ticket (leave empty to use the main short-description)" required: false type: string sqc-integration: description: "Integrate into SQC" type: boolean default: true sqs-integration: description: "Integrate into SQS" type: boolean default: true branch: description: "Branch from which to do the release" required: true default: "master" type: string new-version: description: "Next Jira version to create after the release (e.g. 2.2), NOT the version being released; if left empty, the current Jira version's last component is incremented (e.g. 2.1 -> 2.2)" required: false type: string rule-props-changed: description: > "@RuleProperty" changed? See SC-4654 type: boolean default: false verbose: description: "Enable verbose logging" type: boolean default: false
Ver no GitHub
Este SKILL.md e muito grande, entao o SkillsMP mostra aqui apenas a primeira secao. Ver no GitHub