CI: build: add support for per branch tools container
Add support in build shared workflow for per branch tools container. With pr the target branch is parsed and the right container is used. To use the stable container for local testing the branch needs to have the prefix openwrt-[0-9][0-9].[0-9][0-9]- (example openwrt-21.02-fixup) Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
This commit is contained in:
		
							
								
								
									
										29
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							| @@ -31,6 +31,7 @@ jobs: | |||||||
|     outputs: |     outputs: | ||||||
|       owner_lc: ${{ steps.lower_owner.outputs.owner_lc }} |       owner_lc: ${{ steps.lower_owner.outputs.owner_lc }} | ||||||
|       ccache_hash: ${{ steps.ccache_hash.outputs.ccache_hash }} |       ccache_hash: ${{ steps.ccache_hash.outputs.ccache_hash }} | ||||||
|  |       container_tag: ${{ steps.determine_tools_container.outputs.container_tag }} | ||||||
|  |  | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
| @@ -50,12 +51,38 @@ jobs: | |||||||
|            | md5sum | awk '{ print $1 }') |            | md5sum | awk '{ print $1 }') | ||||||
|           echo "ccache_hash=$CCACHE_HASH" >> $GITHUB_OUTPUT |           echo "ccache_hash=$CCACHE_HASH" >> $GITHUB_OUTPUT | ||||||
|  |  | ||||||
|  |       # Per branch tools container tag | ||||||
|  |       # By default stick to latest | ||||||
|  |       # For official test targetting openwrt stable branch | ||||||
|  |       # Get the branch or parse the tag and push dedicated tools containers | ||||||
|  |       # For local test to use the correct container for stable release testing | ||||||
|  |       # you need to use for the branch name a prefix of openwrt-[0-9][0-9].[0-9][0-9]- | ||||||
|  |       - name: Determine tools container tag | ||||||
|  |         id: determine_tools_container | ||||||
|  |         run: | | ||||||
|  |           CONTAINER_TAG=latest | ||||||
|  |           if [ -n "${{ github.base_ref }}" ]; then | ||||||
|  |             if echo "${{ github.base_ref }}" | grep -q -E 'openwrt-[0-9][0-9]\.[0-9][0-9]'; then | ||||||
|  |               CONTAINER_TAG="${{ github.base_ref }}" | ||||||
|  |             fi | ||||||
|  |           elif [ ${{ github.ref_type }} == "branch" ]; then | ||||||
|  |             if echo "${{ github.ref_name }}" | grep -q -E 'openwrt-[0-9][0-9]\.[0-9][0-9]-'; then | ||||||
|  |               CONTAINER_TAG="$(echo ${{ github.ref_name }} | sed 's/^\(openwrt-[0-9][0-9]\.[0-9][0-9]\)-.*/\1/')" | ||||||
|  |             fi | ||||||
|  |           elif [ ${{ github.ref_type }} == "tag" ]; then | ||||||
|  |             if echo "${{ github.ref_name }}" | grep -q -E 'v[0-9][0-9]\.[0-9][0-9]\..+'; then | ||||||
|  |               CONTAINER_TAG=openwrt-"$(echo ${{ github.ref_name }} | sed 's/v\([0-9][0-9]\.[0-9][0-9]\)\..\+/\1/')" | ||||||
|  |             fi | ||||||
|  |           fi | ||||||
|  |           echo "Tools container to use tools:$CONTAINER_TAG" | ||||||
|  |           echo "container_tag=$CONTAINER_TAG" >> $GITHUB_OUTPUT | ||||||
|  |  | ||||||
|   build: |   build: | ||||||
|     name: Build with external toolchain |     name: Build with external toolchain | ||||||
|     needs: setup_build |     needs: setup_build | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|  |  | ||||||
|     container: ghcr.io/${{ needs.setup_build.outputs.owner_lc }}/tools:latest |     container: ghcr.io/${{ needs.setup_build.outputs.owner_lc }}/tools:${{ needs.setup_build.outputs.container_tag }} | ||||||
|  |  | ||||||
|     permissions: |     permissions: | ||||||
|       contents: read |       contents: read | ||||||
|   | |||||||
							
								
								
									
										29
									
								
								.github/workflows/check-kernel-patches.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								.github/workflows/check-kernel-patches.yml
									
									
									
									
										vendored
									
									
								
							| @@ -18,6 +18,7 @@ jobs: | |||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     outputs: |     outputs: | ||||||
|       owner_lc: ${{ steps.lower_owner.outputs.owner_lc }} |       owner_lc: ${{ steps.lower_owner.outputs.owner_lc }} | ||||||
|  |       container_tag: ${{ steps.determine_tools_container.outputs.container_tag }} | ||||||
|  |  | ||||||
|     steps: |     steps: | ||||||
|       - name: Set lower case owner name |       - name: Set lower case owner name | ||||||
| @@ -27,12 +28,38 @@ jobs: | |||||||
|             | tr '[:upper:]' '[:lower:]') |             | tr '[:upper:]' '[:lower:]') | ||||||
|           echo "owner_lc=$OWNER_LC" >> $GITHUB_OUTPUT |           echo "owner_lc=$OWNER_LC" >> $GITHUB_OUTPUT | ||||||
|  |  | ||||||
|  |       # Per branch tools container tag | ||||||
|  |       # By default stick to latest | ||||||
|  |       # For official test targetting openwrt stable branch | ||||||
|  |       # Get the branch or parse the tag and push dedicated tools containers | ||||||
|  |       # For local test to use the correct container for stable release testing | ||||||
|  |       # you need to use for the branch name a prefix of openwrt-[0-9][0-9].[0-9][0-9]- | ||||||
|  |       - name: Determine tools container tag | ||||||
|  |         id: determine_tools_container | ||||||
|  |         run: | | ||||||
|  |           CONTAINER_TAG=latest | ||||||
|  |           if [ -n "${{ github.base_ref }}" ]; then | ||||||
|  |             if echo "${{ github.base_ref }}" | grep -q -E 'openwrt-[0-9][0-9]\.[0-9][0-9]'; then | ||||||
|  |               CONTAINER_TAG="${{ github.base_ref }}" | ||||||
|  |             fi | ||||||
|  |           elif [ ${{ github.ref_type }} == "branch" ]; then | ||||||
|  |             if echo "${{ github.ref_name }}" | grep -q -E 'openwrt-[0-9][0-9]\.[0-9][0-9]-'; then | ||||||
|  |               CONTAINER_TAG="$(echo ${{ github.ref_name }} | sed 's/^\(openwrt-[0-9][0-9]\.[0-9][0-9]\)-.*/\1/')" | ||||||
|  |             fi | ||||||
|  |           elif [ ${{ github.ref_type }} == "tag" ]; then | ||||||
|  |             if echo "${{ github.ref_name }}" | grep -q -E 'v[0-9][0-9]\.[0-9][0-9]\..+'; then | ||||||
|  |               CONTAINER_TAG=openwrt-"$(echo ${{ github.ref_name }} | sed 's/v\([0-9][0-9]\.[0-9][0-9]\)\..\+/\1/')" | ||||||
|  |             fi | ||||||
|  |           fi | ||||||
|  |           echo "Tools container to use tools:$CONTAINER_TAG" | ||||||
|  |           echo "container_tag=$CONTAINER_TAG" >> $GITHUB_OUTPUT | ||||||
|  |  | ||||||
|   check-patch: |   check-patch: | ||||||
|     name: Check Kernel patches |     name: Check Kernel patches | ||||||
|     needs: setup_build |     needs: setup_build | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|  |  | ||||||
|     container: ghcr.io/${{ needs.setup_build.outputs.owner_lc }}/tools:latest |     container: ghcr.io/${{ needs.setup_build.outputs.owner_lc }}/tools:${{ needs.setup_build.outputs.container_tag }} | ||||||
|  |  | ||||||
|     permissions: |     permissions: | ||||||
|       contents: read |       contents: read | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Christian Marangi
					Christian Marangi