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:
Christian Marangi 2022-11-27 19:53:08 +01:00
parent 75550771ae
commit abe8a48242
No known key found for this signature in database
GPG Key ID: AC001D09ADBFEAD7
2 changed files with 56 additions and 2 deletions

View File

@ -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

View File

@ -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