Skip to content

Remove useless step in the common IDE release pipeline #1

Remove useless step in the common IDE release pipeline

Remove useless step in the common IDE release pipeline #1

name: IDE Experience Reusable Automated Release

Check failure on line 1 in .github/workflows/ide-automated-release.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/ide-automated-release.yml

Invalid workflow file

(Line: 54, Col: 3): The workflow must contain at least one job with no dependencies.
env:
JIRA_PROJECT_KEY: ${{ inputs.jira-project-key }}
USE_JIRA_SANDBOX: ${{ inputs.is-test-run }}
on:
workflow_call:
inputs:
jira-project-key:
description: "Jira project key"
required: true
type: string
project-name:
description: "Project name to describe it in REL ticket, like 'SonarLint Core'"
required: true
type: string
pm-email:
description: "Product manager email to assign the REL ticket after release is done, defaults to IDE XP PM"
required: false
type: string
default: "alexander.rage@sonarsource.com"
short-description:
description: "A brief summary of what the release contains"
required: true
type: string
is-test-run:
description: "For testing: use Jira sandbox and create draft releases in GitHub"
required: false
type: boolean
default: false
branch:
description: "Branch from which to do the release"
required: true
type: string
default: "master"
documentation-status:
description: "Status of the documentation field for Jira Release"
required: false
type: string
default: 'N/A'
with-optional-checks:
description: "True if you want the workflow to fail on releasability optional checks, false to ignore optional checks"
required: false
type: boolean
default: true
outputs:
new-version:
description: "New version to release"
value: ${{ jobs.release-in-jira.outputs.new-version }}
jobs:
prepare-release:
name: Prepare release
runs-on: github-ubuntu-latest-s
needs: pre-release-checks
permissions:
statuses: read
contents: read
id-token: write
outputs:
release-version: ${{ steps.get-release-version.outputs.release-version }}
jira-version-name: ${{ steps.get-jira-version.outputs.jira-version-name }}
jira-release-url: ${{ steps.get-jira-release-notes.outputs.jira-release-url }}
due-date: ${{ steps.calculate-due-date.outputs.due-date }}
steps:
# Full version (with build number)
- name: Get Release Version
id: get-release-version
uses: SonarSource/release-github-actions/get-release-version@v1
with:
branch: ${{ inputs.branch }}
# Short version
- name: Get Jira Version
id: get-jira-version
uses: SonarSource/release-github-actions/get-jira-version@v1
# We need only link from here
- name: Get Jira Release Notes
id: get-jira-release-notes
uses: SonarSource/release-github-actions/get-jira-release-notes@v1
# Due date value
- name: Calculate due date
id: calculate-due-date
run: |
DUE_DATE=$(date -d "+ 2 days" +"%Y-%m-%d")
echo "Setting due date to 2 days from now: $DUE_DATE"
echo "due-date=$DUE_DATE" >> $GITHUB_OUTPUT
create-release-ticket:
name: Create release ticket
runs-on: github-ubuntu-latest-s
needs: prepare-release
permissions:
statuses: read
contents: read
id-token: write
outputs:
release-ticket-key: ${{ steps.create-ticket.outputs.release-ticket-key }}
release-ticket-url: ${{ steps.create-ticket.outputs.release-ticket-url }}
steps:
- name: Create Jira Release Ticket
id: create-ticket
uses: SonarSource/release-github-actions/create-jira-release-ticket@v1
with:
project-name: ${{ inputs.project-name }}
short-description: ${{ inputs.short-description }}
documentation-status: ${{ inputs.documentation-status }}
due-date: ${{ needs.prepare-release.outputs.due-date }}
jira-release-url: ${{ needs.prepare-release.outputs.jira-release-url }}
start-progress: true
version: ${{ needs.prepare-release.outputs.release-version }}
publish-github-release:
name: Publish github release
runs-on: github-ubuntu-latest-s
needs: [ prepare-release, create-release-ticket ]
permissions:
id-token: write
contents: write
actions: write
outputs:
github-release-url: ${{ steps.publish-github-release.outputs.release-url }}
steps:
- name: Publish GitHub Release
id: publish-github-release
uses: SonarSource/release-github-actions/publish-github-release@v1
with:
release-version: ${{ needs.prepare-release.outputs.release-version }}
release-notes: ${{ format('For full release notes, see [JIRA]({0})', needs.prepare-release.outputs.jira-release-url) }}
draft: ${{ inputs.is-test-run }}
branch: ${{ inputs.branch }}
release-in-jira:
name: Release in Jira
runs-on: github-ubuntu-latest-s
needs: [ prepare-release, publish-github-release, create-release-ticket ]
permissions:
statuses: read
contents: read
id-token: write
outputs:
new-version: ${{ steps.create-jira-version.outputs.jira-new-version-name }}
steps:
- name: Release in Jira
uses: SonarSource/release-github-actions/release-jira-version@v1
with:
jira-version-name: ${{ needs.prepare-release.outputs.jira-version-name }}
- name: Create new release in jira
id: create-jira-version
uses: SonarSource/release-github-actions/create-jira-version@v1
with:
jira-version-name: ${{ needs.prepare-release.outputs.jira-version-name }}
- name: Move release ticket to Technical release Done
uses: SonarSource/release-github-actions/update-release-ticket-status@v1
with:
release-ticket-key: ${{ needs.create-release-ticket.outputs.release-ticket-key }}
status: "Technical Release Done"
assignee: ${{ inputs.pm-email }} # TODO take it from vault
summarize_release:
name: Release
runs-on: github-ubuntu-latest-s
if: always()
needs: [ pre-release-checks, prepare-release, publish-github-release, create-release-ticket, release-in-jira ]
steps:
- name: Post Summary to Workflow
run: |
ALL_SUCCESS=$([[ "${{ needs.pre-release-checks.result }}" == "success" && \
"${{ needs.prepare-release.result }}" == "success" && \
"${{ needs.publish-github-release.result }}" == "success" && \
"${{ needs.create-release-ticket.result }}" == "success" && \
"${{ needs.release-in-jira.result }}" == "success" ]] && echo "true" || echo "false")
if [[ "$ALL_SUCCESS" == "true" ]]; then
echo "### 🎉🚀 Congratulations! Release Successful! 🚀🎉" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Summary of the release:**" >> $GITHUB_STEP_SUMMARY
else
echo "### ❌💥 Release Failed! 💥❌" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Summary of the failed release:**" >> $GITHUB_STEP_SUMMARY
fi
echo "- **Released Version:** ${{ needs.prepare-release.outputs.release-version }}" >> $GITHUB_STEP_SUMMARY
echo "- **New Version:** ${{ needs.release-in-jira.outputs.new-version }}" >> $GITHUB_STEP_SUMMARY
echo "- **Jira Release URL:** ${{ needs.prepare-release.outputs.jira-release-url }}" >> $GITHUB_STEP_SUMMARY
echo "- **Release Ticket URL:** ${{ needs.create-release-ticket.outputs.release-ticket-url }}" >> $GITHUB_STEP_SUMMARY
echo "- **GitHub Release URL:** ${{ needs.publish-github-release.outputs.github-release-url }}" >> $GITHUB_STEP_SUMMARY
if [[ "$ALL_SUCCESS" == "true" ]]; then
echo "" >> $GITHUB_STEP_SUMMARY
echo "PS: Don't forget to review and merge the bump version!" >> $GITHUB_STEP_SUMMARY
echo "For more information please check the release instructions at:" >> $GITHUB_STEP_SUMMARY
echo "https://xtranet-sonarsource.atlassian.net/wiki/spaces/CodeRemedi/pages/3464134704/Release+processes" >> $GITHUB_STEP_SUMMARY
else
echo "" >> $GITHUB_STEP_SUMMARY
echo "For fixes to common issues and other useful information please check the release instructions at:" >> $GITHUB_STEP_SUMMARY
echo "https://xtranet-sonarsource.atlassian.net/wiki/spaces/CodeRemedi/pages/3464134704/Release+processes" >> $GITHUB_STEP_SUMMARY
fi