diff --git a/.github/RELEASE_TEMPLATE.md b/.github/RELEASE_TEMPLATE.md new file mode 100644 index 00000000..0ef19cba --- /dev/null +++ b/.github/RELEASE_TEMPLATE.md @@ -0,0 +1,18 @@ +# Module Release Notes + +**Module Name:** lifecycle +**Release Tag:** $RELEASE_TAG +**Origin Release Tag:** $PREVIOUS_RELEASE_TAG +**Release Commit Hash:** $COMMIT_SHA +**Release Date:** $RELEASE_DATE + +## Overview +This document provides an overview of the changes, improvements, and bug fixes included in the software module release version $RELEASE_TAG +as compared to the module's origin release (which is usually the previous release). + +## Disclaimer +This release is not intended for production use, as it does not include a safety argumentation or a completed safety assessment. +The work products compiled in the safety package are created with care according to the [S-CORE process](https://eclipse-score.github.io/process_description/main/index.html). However, as a non-profit, open-source organization, the project cannot assume any liability for its content. + +For details on the features, see https://eclipse-score.github.io/score/main/features/lifecycle/index.html + diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..819448a4 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,116 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +# +# This workflow automates the release process for the lifecycle repository. +# It is triggered manually to build, test, and validate release artifacts. +# The workflow creates a draft release with a filled-out description for +# maintainers to approve and publish. + +name: Release +run-name: Release ${{ inputs.tag }} +permissions: + contents: read +on: + workflow_dispatch: + inputs: + tag: + description: 'Release tag (e.g., v1.0.0)' + required: true + type: string +concurrency: + group: release +jobs: + build-linux: + uses: ./.github/workflows/build.yml + + build-qnx: + uses: ./.github/workflows/build_qnx8.yml + permissions: + contents: read + pull-requests: read + secrets: inherit + + coverage-report: + uses: ./.github/workflows/code_coverage.yml + + # lint: + # uses: ./.github/workflows/lint.yml + # sanitizers: + # uses: ./.github/workflows/sanitizers_linux.yml + + create-release: + needs: [build-linux, build-qnx, coverage-report] + runs-on: ubuntu-latest + permissions: + contents: write + env: + COVERAGE_ARCHIVE: ${{ github.event.repository.name }}-${{ inputs.tag }}-cpp-coverage + steps: + - name: Checkout Repository + uses: actions/checkout@v6 + - name: Get Current Date and Previous Release Tag + env: + GH_TOKEN: ${{ github.token }} + run: | + PREVIOUS_TAG=$(gh release view --json tagName --jq '.tagName' 2>/dev/null || echo "N/A") + echo "RELEASE_DATE=$(date --rfc-3339=date)" >> $GITHUB_ENV + echo "PREVIOUS_RELEASE_TAG=$PREVIOUS_TAG" >> $GITHUB_ENV + - name: Generate Release Body + env: + RELEASE_TAG: ${{ inputs.tag }} + COMMIT_SHA: ${{ github.sha }} + ACTION_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} + run: | + envsubst '$RELEASE_TAG $PREVIOUS_RELEASE_TAG $COMMIT_SHA $RELEASE_DATE $ACTION_RUN_URL' < .github/RELEASE_TEMPLATE.md > release_body.md + - name: Find Latest Release Note + run: | + LATEST_RELEASE_NOTE=$( + for f in docs/release_notes/release_note_v_*.rst; do + [ -e "$f" ] || continue + ver=$(basename "$f" .rst | sed 's/release_note_v_//' | tr '_' '.') + echo "$ver $f" + done | sort -t '.' -k1,1n -k2,2n -k3,3n | tail -1 | awk '{print $2}' + ) + echo "LATEST_RELEASE_NOTE=$LATEST_RELEASE_NOTE" >> "$GITHUB_ENV" + - name: Append Release Note to Release Body + if: env.LATEST_RELEASE_NOTE != '' + run: | + printf '\n---\n\n## Changes to the Module\n\n' >> release_body.md + sed -n '/^Changes to the Module$/,$p' "$LATEST_RELEASE_NOTE" | sed '1,2d' >> release_body.md + - name: Download Coverage Report Artifact + uses: actions/download-artifact@v7 + with: + name: ${{ format('{0}_cpp_coverage{1}', github.event.repository.name, '_cpp') }} + path: ${{ env.COVERAGE_ARCHIVE }} + - name: Create Coverage Report Archive + run: | + tar --sort=name --owner=0 --group=0 --numeric-owner \ + -cJf "$COVERAGE_ARCHIVE.tar.xz" "$COVERAGE_ARCHIVE" + - name: Create Draft Release + uses: softprops/action-gh-release@v2 + id: draft_release + with: + tag_name: ${{ inputs.tag }} + body_path: release_body.md + draft: true + generate_release_notes: true + target_commitish: ${{ github.sha }} + files: | + ${{ env.COVERAGE_ARCHIVE }}.tar.xz + - name: Summary + run: | + echo "### Draft Release Created :rocket:" >> $GITHUB_STEP_SUMMARY + echo "Tag: **${{ inputs.tag }}**" >> $GITHUB_STEP_SUMMARY + echo "Branch: \`${{ github.ref_name }}\`" >> $GITHUB_STEP_SUMMARY + echo "Commit: \`${{ github.sha }}\`" >> $GITHUB_STEP_SUMMARY + echo "Maintainers can review at: ${{ steps.draft_release.outputs.url }}" >> $GITHUB_STEP_SUMMARY diff --git a/docs/index.rst b/docs/index.rst index 3dfd4d99..f1ebd433 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -43,3 +43,14 @@ To run tests: .. code-block:: bash bazel test //tests/... + + +Release Notes +------------- + +Release notes collection. + +.. toctree:: + :maxdepth: 1 + + release_notes/index diff --git a/docs/release_notes/index.rst b/docs/release_notes/index.rst new file mode 100644 index 00000000..a109c37e --- /dev/null +++ b/docs/release_notes/index.rst @@ -0,0 +1,37 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +.. _lifecycle_release_notes: + +Release notes +============= + +Overview +-------- + +This document provides an overview of the changes, improvements, and bug fixes included in the software module release version v0.2.0 +as compared to the module's origin release (which is usually the previous release). + +Disclaimer +---------- + +This release note does not "release for production", as it does not come with a safety argumentation and a performed safety assessment. +The work products compiled in the safety package are created with care according to a process satisfying standards, but the as the project, +being a non-profit and open source organization, can not take over any liability for its content. + +.. toctree:: + :maxdepth: 1 + :caption: Content + + ./release_note_v_0_2_0.rst \ No newline at end of file diff --git a/docs/release_notes/release_note_v_0_2_0.rst b/docs/release_notes/release_note_v_0_2_0.rst new file mode 100644 index 00000000..983a3a91 --- /dev/null +++ b/docs/release_notes/release_note_v_0_2_0.rst @@ -0,0 +1,94 @@ +.. + # ******************************************************************************* + # Copyright (c) 2025 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + + +.. document:: lifecycle Release Note + :id: doc__lifecycle_release_note + :status: valid + :safety: ASIL_B + :security: NO + :realizes: wp__module_sw_release_note + :tags: + + +Overview +======== + +This document provides an overview of the changes, improvements, and bug fixes included in the software module release version vx.x.z +as compared to the module's origin release (which is usually the previous release). + +Disclaimer +========== + +This release note does not "release for production", as it does not come with a safety argumentation and a performed safety assessment. +The work products compiled in the safety package are created with care according to a process satisfying standards, but the as the project, +being a non-profit and open source organization, can not take over any liability for its content. + +Changes to the Module +===================== + +New Features +------------ + +- **New Configuration Schema:** Introduce first version of JSON schema intended for Launch Manager configuration. +- **Heartbeat monitor API:** Health monitoring library provides heartbeat monitor API. +- **Logic monitor API:** Health monitoring library provides logic monitor API. + +Improvements +------------ + +- **Quality improvements:** testing and documentation updates. + +Bug Fixes +--------- + +- + +Other Changes by Label +---------------------- + +- + +Compatibility +------------- + +- The following platforms are supported using the [bazel_cpp_toolchains](https://github.com/eclipse-score/bazel_cpp_toolchains): + + - `x86_64-unknown-linux-gnu` + - `aarch64-unknown-linux-gnu` + - `x86_64-unknown-nto-qnx800` + - `aarch64-unknown-nto-qnx800` + +Performed Verification +---------------------- + +- Build on all supported platforms +- Unit test execution on all supported platforms + +Known Issues +------------ + +- + +Known Vulnerabilities +--------------------- + +- + +Upgrade Instructions +-------------------- + +- Backward compatibility with the previous release is not guaranteed. + +*For any questions or support, please contact the [Project Team](https://github.com/orgs/eclipse-score/projects/33) or raise an issue/discussion.*