mirror of
				https://github.com/FreeRTOS/FreeRTOS-Kernel.git
				synced 2025-11-04 11:09:01 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			137 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			137 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
name: Kernel-Auto-Release
 | 
						|
 | 
						|
on:
 | 
						|
  workflow_dispatch:
 | 
						|
    inputs:
 | 
						|
      commit_id:
 | 
						|
        description: 'Commit ID'
 | 
						|
        required: true
 | 
						|
        default: 'HEAD'
 | 
						|
      version_number:
 | 
						|
        description: 'Version Number (Ex. 10.4.4)'
 | 
						|
        required: true
 | 
						|
        default: '10.4.4'
 | 
						|
      main_br_version:
 | 
						|
        description: "Version String for task.h on main branch (leave empty to leave as-is)."
 | 
						|
        required: false
 | 
						|
        default: ''
 | 
						|
 | 
						|
jobs:
 | 
						|
  release-packager:
 | 
						|
    permissions:
 | 
						|
      id-token: write
 | 
						|
    name: Release Packager
 | 
						|
    runs-on: ubuntu-latest
 | 
						|
    steps:
 | 
						|
      # Install python 3
 | 
						|
      - name: Tool Setup
 | 
						|
        uses: actions/setup-python@v2
 | 
						|
        with:
 | 
						|
          architecture:   x64
 | 
						|
        env:
 | 
						|
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
						|
 | 
						|
      # Currently FreeRTOS/.github/scripts houses the release script. Download it for upcoming usage
 | 
						|
      - name: Checkout FreeRTOS Release Tools
 | 
						|
        uses: actions/checkout@v4.1.1
 | 
						|
        with:
 | 
						|
          repository: FreeRTOS/FreeRTOS
 | 
						|
          path: tools
 | 
						|
 | 
						|
      # Simpler git auth if we use checkout action and forward the repo to release script
 | 
						|
      - name: Checkout FreeRTOS Kernel
 | 
						|
        uses: actions/checkout@v4.1.1
 | 
						|
        with:
 | 
						|
          path: local_kernel
 | 
						|
          fetch-depth: 0
 | 
						|
 | 
						|
      - name: Configure git identity
 | 
						|
        env:
 | 
						|
          ACTOR: ${{ github.actor }}
 | 
						|
        run: |
 | 
						|
          git config --global user.name "$ACTOR"
 | 
						|
          git config --global user.email "$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 }}
 | 
						|
        working-directory: ./local_kernel
 | 
						|
        run: |
 | 
						|
          git checkout -b "$VERSION_NUMBER" "$COMMIT_ID"
 | 
						|
          echo "COMMIT_SHA_1=$(git rev-parse HEAD)" >> $GITHUB_ENV
 | 
						|
 | 
						|
      - name: Update source files with version info
 | 
						|
        env:
 | 
						|
          VERSION_NUMBER: ${{ github.event.inputs.version_number }}
 | 
						|
          MAIN_BR_VERSION_NUMBER: ${{ github.event.inputs.main_br_version }}
 | 
						|
          COMMIT_SHA_1: ${{ env.COMMIT_SHA_1 }}
 | 
						|
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
						|
        run: |
 | 
						|
          # Install deps and run
 | 
						|
          pip install -r ./tools/.github/scripts/release-requirements.txt
 | 
						|
          ./tools/.github/scripts/update_src_version.py FreeRTOS --kernel-repo-path=local_kernel --kernel-commit="$COMMIT_SHA_1" --new-kernel-version="$VERSION_NUMBER" --new-kernel-main-br-version="$MAIN_BR_VERSION_NUMBER"
 | 
						|
          exit $?
 | 
						|
 | 
						|
      - name : Update version number in manifest.yml
 | 
						|
        env:
 | 
						|
          VERSION_NUMBER: ${{ github.event.inputs.version_number }}
 | 
						|
        working-directory: ./local_kernel
 | 
						|
        run: |
 | 
						|
          ./.github/scripts/manifest_updater.py -v "$VERSION_NUMBER"
 | 
						|
          exit $?
 | 
						|
 | 
						|
      - name : Commit version number change in manifest.yml
 | 
						|
        env:
 | 
						|
          VERSION_NUMBER: ${{ github.event.inputs.version_number }}
 | 
						|
        working-directory: ./local_kernel
 | 
						|
        run: |
 | 
						|
          git add .
 | 
						|
          git commit -m '[AUTO][RELEASE]: Update version number in manifest.yml'
 | 
						|
          git push -u origin "$VERSION_NUMBER"
 | 
						|
 | 
						|
      - name: Generate SBOM
 | 
						|
        uses: FreeRTOS/CI-CD-Github-Actions/sbom-generator@main
 | 
						|
        with:
 | 
						|
          repo_path: ./local_kernel
 | 
						|
          source_path: ./
 | 
						|
 | 
						|
      - name: commit SBOM file
 | 
						|
        env:
 | 
						|
          VERSION_NUMBER: ${{ github.event.inputs.version_number }}
 | 
						|
        working-directory: ./local_kernel
 | 
						|
        run: |
 | 
						|
          git add .
 | 
						|
          git commit -m '[AUTO][RELEASE]: Update SBOM'
 | 
						|
          git push -u origin "$VERSION_NUMBER"
 | 
						|
          echo "COMMIT_SHA_2=$(git rev-parse HEAD)" >> $GITHUB_ENV
 | 
						|
 | 
						|
      - name: Release
 | 
						|
        env:
 | 
						|
          VERSION_NUMBER: ${{ github.event.inputs.version_number }}
 | 
						|
          MAIN_BR_VERSION_NUMBER: ${{ github.event.inputs.main_br_version }}
 | 
						|
          COMMIT_SHA_2: ${{ env.COMMIT_SHA_2 }}
 | 
						|
          REPO_OWNER: ${{ github.repository_owner }}
 | 
						|
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
						|
        run: |
 | 
						|
          # Install deps and run
 | 
						|
          pip install -r ./tools/.github/scripts/release-requirements.txt
 | 
						|
          ./tools/.github/scripts/release.py "$REPO_OWNER" --kernel-repo-path=local_kernel --kernel-commit="$COMMIT_SHA_2" --new-kernel-version="$VERSION_NUMBER" --new-kernel-main-br-version="$MAIN_BR_VERSION_NUMBER"
 | 
						|
          exit $?
 | 
						|
 | 
						|
      - name: Backup Release Asset
 | 
						|
        uses: FreeRTOS/CI-CD-Github-Actions/artifact-backup@main
 | 
						|
        with:
 | 
						|
          # This is dependent on the release script putting this zip file
 | 
						|
          # in this exact location.
 | 
						|
          artifact_path: ./FreeRTOS-KernelV${{ github.event.inputs.version_number }}.zip
 | 
						|
          release_tag: ${{ github.event.inputs.version_number }}
 | 
						|
 | 
						|
      - name: Cleanup
 | 
						|
        env:
 | 
						|
          VERSION_NUMBER: ${{ github.event.inputs.version_number }}
 | 
						|
        working-directory: ./local_kernel
 | 
						|
        run: |
 | 
						|
          # Delete the branch created for Tag by SBOM generator
 | 
						|
          git push -u origin --delete "$VERSION_NUMBER"
 |