1name: Release automation 2 3on: 4 workflow_dispatch: 5 inputs: 6 commit_id: 7 description: 'Commit ID to tag and create a release for' 8 required: true 9 version_number: 10 description: 'Release Version Number (Eg, v1.0.0)' 11 required: true 12 13jobs: 14 tag-commit: 15 name: Tag commit 16 runs-on: ubuntu-latest 17 steps: 18 - name: Checkout code 19 uses: actions/checkout@v2 20 with: 21 ref: ${{ github.event.inputs.commit_id }} 22 - name: Configure git identity 23 run: | 24 git config --global user.name ${{ github.actor }} 25 git config --global user.email ${{ github.actor }}@users.noreply.github.com 26 - name: create a new branch that references commit id 27 run: git checkout -b ${{ github.event.inputs.version_number }} ${{ github.event.inputs.commit_id }} 28 - name: Generate SBOM 29 uses: FreeRTOS/CI-CD-Github-Actions/sbom-generator@main 30 with: 31 repo_path: ./ 32 source_path: ./source 33 - name: commit SBOM file 34 run: | 35 git add . 36 git commit -m 'Update SBOM' 37 git push -u origin ${{ github.event.inputs.version_number }} 38 - name: Tag Commit and Push to remote 39 run: | 40 git tag ${{ github.event.inputs.version_number }} -a -m "FreeRTOS-Plus-TCP Library ${{ github.event.inputs.version_number }}" 41 git push origin --tags 42 - name: Verify tag on remote 43 run: | 44 git tag -d ${{ github.event.inputs.version_number }} 45 git remote update 46 git checkout tags/${{ github.event.inputs.version_number }} 47 git diff ${{ github.event.inputs.commit_id }} tags/${{ github.event.inputs.version_number }} 48 create-zip: 49 needs: tag-commit 50 name: Create ZIP and verify package for release asset. 51 runs-on: ubuntu-latest 52 steps: 53 - name: Install ZIP tools 54 run: sudo apt-get install zip unzip 55 - name: Checkout code 56 uses: actions/checkout@v2 57 with: 58 ref: ${{ github.event.inputs.commit_id }} 59 path: FreeRTOS-Plus-TCP 60 submodules: recursive 61 - name: Checkout disabled submodules 62 run: | 63 cd FreeRTOS-Plus-TCP 64 git submodule update --init --checkout --recursive 65 - name: Create ZIP 66 run: | 67 zip -r FreeRTOS-Plus-TCP-${{ github.event.inputs.version_number }}.zip FreeRTOS-Plus-TCP -x "*.git*" 68 ls ./ 69 - name: Validate created ZIP 70 run: | 71 mkdir zip-check 72 mv FreeRTOS-Plus-TCP-${{ github.event.inputs.version_number }}.zip zip-check 73 cd zip-check 74 unzip FreeRTOS-Plus-TCP-${{ github.event.inputs.version_number }}.zip -d FreeRTOS-Plus-TCP-${{ github.event.inputs.version_number }} 75 ls FreeRTOS-Plus-TCP-${{ github.event.inputs.version_number }} 76 diff -r -x "*.git*" FreeRTOS-Plus-TCP-${{ github.event.inputs.version_number }}/FreeRTOS-Plus-TCP/ ../FreeRTOS-Plus-TCP/ 77 cd ../ 78 - name: Build 79 run: | 80 cd zip-check/FreeRTOS-Plus-TCP-${{ github.event.inputs.version_number }}/FreeRTOS-Plus-TCP 81 sudo apt-get install -y lcov 82 sudo apt-get install unifdef 83 cmake -S test/unit-test -B test/unit-test/build/ 84 make -C test/unit-test/build/ all 85 - name: Test 86 run: | 87 cd zip-check/FreeRTOS-Plus-TCP-${{ github.event.inputs.version_number }}/FreeRTOS-Plus-TCP 88 pushd test/unit-test/build/ 89 ctest -E system --output-on-failure 90 popd 91 make -C test/unit-test/build/ coverage 92 lcov --list --rc lcov_branch_coverage=1 test/unit-test/build/coverage.info 93 cd .. 94 - name: Create artifact of ZIP 95 uses: actions/upload-artifact@v2 96 with: 97 name: FreeRTOS-Plus-TCP-${{ github.event.inputs.version_number }}.zip 98 path: zip-check/FreeRTOS-Plus-TCP-${{ github.event.inputs.version_number }}.zip 99 deploy-doxygen: 100 needs: tag-commit 101 name: Deploy doxygen documentation 102 runs-on: ubuntu-latest 103 steps: 104 - name: Doxygen generation 105 uses: FreeRTOS/CI-CD-Github-Actions/doxygen-generation@main 106 with: 107 ref: ${{ github.event.inputs.version_number }} 108 add_release: "true" 109 create-release: 110 needs: 111 - create-zip 112 - deploy-doxygen 113 name: Create Release and Upload Release Asset 114 runs-on: ubuntu-latest 115 steps: 116 - name: Create Release 117 id: create_release 118 uses: actions/create-release@v1 119 env: 120 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 121 with: 122 tag_name: ${{ github.event.inputs.version_number }} 123 release_name: ${{ github.event.inputs.version_number }} 124 body: Release ${{ github.event.inputs.version_number }} of the FreeRTOS-Plus-TCP Library. 125 draft: false 126 prerelease: false 127 - name: Download ZIP artifact 128 uses: actions/download-artifact@v2 129 with: 130 name: FreeRTOS-Plus-TCP-${{ github.event.inputs.version_number }}.zip 131 - name: Upload Release Asset 132 id: upload-release-asset 133 uses: actions/upload-release-asset@v1 134 env: 135 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 136 with: 137 upload_url: ${{ steps.create_release.outputs.upload_url }} 138 asset_path: ./FreeRTOS-Plus-TCP-${{ github.event.inputs.version_number }}.zip 139 asset_name: FreeRTOS-Plus-TCP-${{ github.event.inputs.version_number }}.zip 140 asset_content_type: application/zip 141