diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e95aad3f..8d215120 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,163 +1,29 @@ name: Release automation +permissions: + contents: write + pull-requests: write + on: workflow_dispatch: inputs: - commit_id: - description: 'Commit ID to tag and create a release for' - required: true version_number: description: 'Release Version Number (Eg, v1.0.0)' required: true + branch: + description: 'Branch to release from' + required: false + default: 'main' jobs: - tag-commit: - name: Generate SBOM and tag commit - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - ref: ${{ github.event.inputs.commit_id }} - - name: Configure git identity - run: | - git config --global user.name ${{ github.actor }} - git config --global user.email ${{ github.actor }}@users.noreply.github.com - - name: create a new branch that references commit id - env: - VERSION_NUMBER: ${{ github.event.inputs.version_number }} - COMMIT_ID: ${{ github.event.inputs.commit_id }} - run: git checkout -b "$VERSION_NUMBER" "$COMMIT_ID" - - name: Generate SBOM - uses: FreeRTOS/CI-CD-Github-Actions/sbom-generator@main - with: - repo_path: ./ - source_path: ./source - - name: commit SBOM file - env: - VERSION_NUMBER: ${{ github.event.inputs.version_number }} - run: | - git add . - git commit -m 'Update SBOM' - git push -u origin "$VERSION_NUMBER" - - name: Tag Commit and Push to remote - env: - VERSION_NUMBER: ${{ github.event.inputs.version_number }} - run: | - git tag "$VERSION_NUMBER" -a -m "coreHTTP Library $VERSION_NUMBER" - git push origin --tags - - name: Verify tag on remote - env: - VERSION_NUMBER: ${{ github.event.inputs.version_number }} - COMMIT_ID: ${{ github.event.inputs.commit_id }} - run: | - git tag -d "$VERSION_NUMBER" - git remote update - git checkout tags/"$VERSION_NUMBER" - git diff "$COMMIT_ID" tags/"$VERSION_NUMBER" - create-zip: - needs: tag-commit - name: Create ZIP and verify package for release asset. - runs-on: ubuntu-latest - steps: - - name: Install ZIP tools - run: sudo apt-get install zip unzip - - name: Checkout code - uses: actions/checkout@v4 - with: - ref: ${{ github.event.inputs.commit_id }} - path: coreHTTP - submodules: recursive - - name: Checkout disabled submodules - run: | - cd coreHTTP - git submodule update --init --checkout --recursive - - name: Create ZIP - env: - VERSION_NUMBER: ${{ github.event.inputs.version_number }} - run: | - zip -r coreHTTP-"$VERSION_NUMBER".zip coreHTTP -x "*.git*" - ls ./ - - name: Validate created ZIP - env: - VERSION_NUMBER: ${{ github.event.inputs.version_number }} - run: | - mkdir zip-check - mv coreHTTP-"$VERSION_NUMBER".zip zip-check - cd zip-check - unzip coreHTTP-"$VERSION_NUMBER".zip -d coreHTTP-"$VERSION_NUMBER" - ls coreHTTP-"$VERSION_NUMBER" - diff -r -x "*.git*" coreHTTP-"$VERSION_NUMBER"/coreHTTP/ ../coreHTTP/ - cd ../ - - name: Build - env: - VERSION_NUMBER: ${{ github.event.inputs.version_number }} - run: | - cd zip-check/coreHTTP-"$VERSION_NUMBER"/coreHTTP - sudo apt-get install -y lcov - cmake -S test -B build/ \ - -G "Unix Makefiles" \ - -DCMAKE_BUILD_TYPE=Debug \ - -DCMAKE_C_FLAGS='--coverage -Wall -Wextra -DNDEBUG' - make -C build/ all - - name: Test - env: - VERSION_NUMBER: ${{ github.event.inputs.version_number }} - run: | - cd zip-check/coreHTTP-"$VERSION_NUMBER"/coreHTTP/build/ - ctest -E system --output-on-failure - cd .. - - name: Create artifact of ZIP - uses: actions/upload-artifact@v4 - with: - name: coreHTTP-${{ github.event.inputs.version_number }}.zip - path: zip-check/coreHTTP-${{ github.event.inputs.version_number }}.zip - deploy-doxygen: - needs: tag-commit - name: Deploy doxygen documentation - runs-on: ubuntu-latest - steps: - - name: Doxygen generation - uses: FreeRTOS/CI-CD-Github-Actions/doxygen-generation@main - with: - ref: ${{ github.event.inputs.version_number }} - add_release: "true" - create-release: - permissions: - id-token: write - needs: - - create-zip - - deploy-doxygen - name: Create Release and Upload Release Asset + release: + name: Create Release runs-on: ubuntu-latest steps: - - name: Create Release - id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ github.event.inputs.version_number }} - release_name: ${{ github.event.inputs.version_number }} - body: Release ${{ github.event.inputs.version_number }} of the coreHTTP Library. - draft: false - prerelease: false - - name: Download ZIP artifact - uses: actions/download-artifact@v4 - with: - name: coreHTTP-${{ github.event.inputs.version_number }}.zip - - name: Upload Release Asset - id: upload-release-asset - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./coreHTTP-${{ github.event.inputs.version_number }}.zip - asset_name: coreHTTP-${{ github.event.inputs.version_number }}.zip - asset_content_type: application/zip - - name: Backup Release Asset - uses: FreeRTOS/CI-CD-Github-Actions/artifact-backup@main + - name: Release + uses: FreeRTOS/CI-CD-Github-Actions/release@main with: - artifact_path: ./coreHTTP-${{ github.event.inputs.version_number }}.zip - release_tag: ${{ github.event.inputs.version_number }} + version_number: ${{ github.event.inputs.version_number }} + branch: ${{ github.event.inputs.branch }} + github_token: ${{ secrets.GITHUB_TOKEN }} + run_test_command: 'sudo apt-get install -y lcov && rm -rf ../build && cmake -S ./test -B ../build -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DBUILD_CLONE_SUBMODULES=ON -DUNITTEST=1 -DCOV_ANALYSIS=1 -DCMAKE_C_FLAGS="--coverage -Wall -Wextra -DNDEBUG" && make -C ../build all && cd ../build && ctest -E system --output-on-failure'