CI: Add logic for determining which branches of OS App and Testing repos should be used

This commit is contained in:
Brennan Ashton 2020-04-23 00:40:21 -07:00 committed by Xiang Xiao
parent fe0ba38580
commit 63b3737b77

View File

@ -14,41 +14,138 @@ name: Build
on: on:
pull_request: pull_request:
push:
branches:
- master
- 'releases/*'
tags:
jobs: jobs:
Fetch-Source:
runs-on: ubuntu-latest
steps:
- name: Determine Target Branches
id: gittargets
shell: bash
run: |
TESTING_REF="master" # Always use master for testing
OS_REF=""
APPS_REF=""
REF=$GITHUB_REF
# If a base ref is set this is a PR and we will want to use
# the base ref instead of the ref that triggered the event
if [ ${GITHUB_BASE_REF} ]; then
REF=refs/heads/$GITHUB_BASE_REF
fi
echo "Working with ref: $REF"
# We modify for all tags and release branches
if [[ $REF =~ refs/heads/releases/*|refs/tags/* ]]; then
if [[ $REF =~ refs/heads/* ]]
then
REF_NAME=${REF##refs/heads/}
echo "Working with a branch: $REF_NAME"
else
REF_NAME=${REF##refs/tags/}
echo "Working with a tag: $REF_NAME"
fi
# Determine the repo and leave that unset to use the normal checkout behavior
# of using the merge commit instead of HEAD
case $GITHUB_REPOSITORY in
"apache/incubator-nuttx")
# OS
echo "Triggered by change in OS"
APPS_REF=$REF_NAME
;;
"apache/incubator-nuttx-apps" )
# APPS
OS_REF=$REF_NAME
echo "Triggered by change in APPS"
;;
*)
echo "Trigger by change on $GITHUB_REPOSITORY. This is unexpected."
;;
esac
fi
echo ::set-output name=os_ref::$OS_REF
echo ::set-output name=apps_ref::$APPS_REF
echo ::set-output name=testing_ref::$TESTING_REF
- name: Checkout nuttx repo
uses: actions/checkout@v2
with:
repository: apache/incubator-nuttx
ref: ${{ steps.gittargets.outputs.os_ref }}
path: sources/nuttx
fetch-depth: 1
- name: Checkout apps repo
uses: actions/checkout@v2
with:
repository: apache/incubator-nuttx-apps
ref: ${{ steps.gittargets.outputs.apps_ref }}
path: sources/apps
fetch-depth: 1
- name: Checkout testing repo
uses: actions/checkout@v2
with:
repository: apache/incubator-nuttx-testing
ref: ${{ steps.gittargets.outputs.testing_ref }}
path: sources/testing
fetch-depth: 1
- name: Create Source Bundle
run: tar -czf sources.tar.gz sources
- name: Archive Source Bundle
uses: actions/upload-artifact@v1
with:
name: source-bundle
path: sources.tar.gz
- name: Cache Source
id: cache-source
uses: actions/cache@v1
with:
path: sources
key: build-sources-${{ github.run_id }}
Linux: Linux:
runs-on: ubuntu-18.04 needs: Fetch-Source
runs-on: ubuntu-latest
env: env:
DOCKER_BUILDKIT: 1 DOCKER_BUILDKIT: 1
strategy: strategy:
matrix: matrix:
boards: [arm-01, arm-02, arm-03, arm-04, arm-05, arm-06, arm-07, arm-08, arm-09, arm-10, arm-11, arm-12, arm-13, mips-riscv-x86-xtensa, sim] boards: [arm-01, arm-02, arm-03, arm-04, arm-05, arm-06, arm-07, arm-08, arm-09, arm-10, arm-11, arm-12, arm-13, mips-riscv-x86-xtensa, sim]
steps: steps:
- name: Checkout nuttx repo - name: Fetch Cached Source
uses: actions/checkout@v2 id: cache-source
uses: actions/cache@v1
with: with:
repository: apache/incubator-nuttx path: sources-cache
path: nuttx key: build-sources-${{ github.run_id }}
fetch-depth: 0 - name: Prevent Updating Source Cache
if: steps.cache-source.outputs.cache-hit == 'true'
- name: Fetch nuttx tags run: mv sources-cache sources
run: | - name: Download Source Artifact
cd nuttx if: steps.cache-source.outputs.cache-hit != 'true'
git fetch --tags uses: actions/download-artifact@v1
- name: Checkout apps repo
uses: actions/checkout@v2
with: with:
repository: apache/incubator-nuttx-apps name: source-bundle
path: apps path: ./
fetch-depth: 0 - name: Extract Source Artifact
if: steps.cache-source.outputs.cache-hit != 'true'
- name: Checkout testing repo run: tar -xf sources.tar.gz
uses: actions/checkout@v2
with:
repository: apache/incubator-nuttx-testing
path: testing
- name: Docker Login - name: Docker Login
uses: azure/docker-login@v1 uses: azure/docker-login@v1
@ -66,57 +163,52 @@ jobs:
command: docker pull docker.pkg.github.com/apache/incubator-nuttx-testing/nuttx-ci-linux command: docker pull docker.pkg.github.com/apache/incubator-nuttx-testing/nuttx-ci-linux
- name: Run builds - name: Run builds
uses: ./testing/.github/actions/ci-container uses: ./sources/testing/.github/actions/ci-container
env: env:
BLOBDIR: /tools/blobs BLOBDIR: /tools/blobs
with: with:
run: | run: |
cd testing git -C sources/nuttx fetch --tags
cd sources/testing
./cibuild.sh -x -G testlist/${{matrix.boards}}.dat ./cibuild.sh -x -G testlist/${{matrix.boards}}.dat
macOS: macOS:
runs-on: macos-10.15 runs-on: macos-10.15
needs: Fetch-Source
strategy: strategy:
matrix: matrix:
boards: [arm-12, mips-riscv-x86-xtensa, sim] boards: [arm-12, mips-riscv-x86-xtensa, sim]
steps: steps:
- name: Checkout nuttx repo - name: Fetch Cached Source
uses: actions/checkout@v2 id: cache-source
uses: actions/cache@v1
with: with:
repository: apache/incubator-nuttx path: sources-cache
path: nuttx key: build-sources-${{ github.run_id }}
fetch-depth: 0 - name: Prevent Updating Source Cache
if: steps.cache-source.outputs.cache-hit == 'true'
- name: Fetch nuttx tags run: mv sources-cache sources
run: | - name: Download Source Artifact
cd nuttx if: steps.cache-source.outputs.cache-hit != 'true'
git fetch --tags uses: actions/download-artifact@v1
- name: Checkout apps repo
uses: actions/checkout@v2
with: with:
repository: apache/incubator-nuttx-apps name: source-bundle
path: apps path: ./
fetch-depth: 0 - name: Extract Source Artifact
if: steps.cache-source.outputs.cache-hit != 'true'
run: tar -xf sources.tar.gz
- name: Checkout testing repo - name: Restore Tools Cache
uses: actions/checkout@v2
with:
repository: apache/incubator-nuttx-testing
path: testing
- name: Restore cache
id: cache-tools id: cache-tools
uses: actions/cache@v1 uses: actions/cache@v1
env: env:
cache-name: ${{ runner.os }}-cache-tools cache-name: ${{ runner.os }}-cache-tools
with: with:
path: prebuilt path: prebuilt
key: ${{ runner.os }}-tools-${{ hashFiles('./testing/cibuild.sh') }} key: ${{ runner.os }}-tools-${{ hashFiles('./sources/testing/cibuild.sh') }}
- name: Run builds - name: Run Builds
run: | run: |
cd testing git -C sources/nuttx fetch --tags
cd sources/testing
./cibuild.sh -i -x -G testlist/${{matrix.boards}}.dat ./cibuild.sh -i -x -G testlist/${{matrix.boards}}.dat