You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2020/04/23 18:47:47 UTC
[incubator-nuttx] branch master updated: CI: Add logic for
determining which branches of OS App and Testing repos should be used
This is an automated email from the ASF dual-hosted git repository.
xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new 63b3737 CI: Add logic for determining which branches of OS App and Testing repos should be used
63b3737 is described below
commit 63b3737b77be510029a2c3e85c5c6a56afcc1b77
Author: Brennan Ashton <ba...@brennanashton.com>
AuthorDate: Thu Apr 23 00:40:21 2020 -0700
CI: Add logic for determining which branches of OS App and Testing repos should be used
---
.github/workflows/build.yml | 272 +++++++++++++++++++++++++++++---------------
1 file changed, 182 insertions(+), 90 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 625ca99..d59c9e0 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -14,109 +14,201 @@ name: Build
on:
pull_request:
+ push:
+ branches:
+ - master
+ - 'releases/*'
+ tags:
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:
- runs-on: ubuntu-18.04
+ needs: Fetch-Source
+ runs-on: ubuntu-latest
env:
DOCKER_BUILDKIT: 1
strategy:
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]
- steps:
- - name: Checkout nuttx repo
- uses: actions/checkout@v2
- with:
- repository: apache/incubator-nuttx
- path: nuttx
- fetch-depth: 0
-
- - name: Fetch nuttx tags
- run: |
- cd nuttx
- git fetch --tags
+ 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]
- - name: Checkout apps repo
- uses: actions/checkout@v2
- with:
- repository: apache/incubator-nuttx-apps
- path: apps
- fetch-depth: 0
-
- - name: Checkout testing repo
- uses: actions/checkout@v2
- with:
- repository: apache/incubator-nuttx-testing
- path: testing
-
- - name: Docker Login
- uses: azure/docker-login@v1
- with:
- login-server: docker.pkg.github.com
- username: ${GITHUB_ACTOR}
- password: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Docker Pull
- uses: nick-invision/retry@v1
- with:
- timeout_minutes: 10
- max_attempts: 3
- retry_wait_seconds: 10
- command: docker pull docker.pkg.github.com/apache/incubator-nuttx-testing/nuttx-ci-linux
-
- - name: Run builds
- uses: ./testing/.github/actions/ci-container
- env:
- BLOBDIR: /tools/blobs
- with:
- run: |
- cd testing
- ./cibuild.sh -x -G testlist/${{matrix.boards}}.dat
+ steps:
+ - name: Fetch Cached Source
+ id: cache-source
+ uses: actions/cache@v1
+ with:
+ path: sources-cache
+ key: build-sources-${{ github.run_id }}
+ - name: Prevent Updating Source Cache
+ if: steps.cache-source.outputs.cache-hit == 'true'
+ run: mv sources-cache sources
+ - name: Download Source Artifact
+ if: steps.cache-source.outputs.cache-hit != 'true'
+ uses: actions/download-artifact@v1
+ with:
+ name: source-bundle
+ path: ./
+ - name: Extract Source Artifact
+ if: steps.cache-source.outputs.cache-hit != 'true'
+ run: tar -xf sources.tar.gz
+
+ - name: Docker Login
+ uses: azure/docker-login@v1
+ with:
+ login-server: docker.pkg.github.com
+ username: ${GITHUB_ACTOR}
+ password: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Docker Pull
+ uses: nick-invision/retry@v1
+ with:
+ timeout_minutes: 10
+ max_attempts: 3
+ retry_wait_seconds: 10
+ command: docker pull docker.pkg.github.com/apache/incubator-nuttx-testing/nuttx-ci-linux
+
+ - name: Run builds
+ uses: ./sources/testing/.github/actions/ci-container
+ env:
+ BLOBDIR: /tools/blobs
+ with:
+ run: |
+ git -C sources/nuttx fetch --tags
+ cd sources/testing
+ ./cibuild.sh -x -G testlist/${{matrix.boards}}.dat
macOS:
runs-on: macos-10.15
-
+ needs: Fetch-Source
strategy:
matrix:
boards: [arm-12, mips-riscv-x86-xtensa, sim]
-
steps:
- - name: Checkout nuttx repo
- uses: actions/checkout@v2
- with:
- repository: apache/incubator-nuttx
- path: nuttx
- fetch-depth: 0
-
- - name: Fetch nuttx tags
- run: |
- cd nuttx
- git fetch --tags
-
- - name: Checkout apps repo
- uses: actions/checkout@v2
- with:
- repository: apache/incubator-nuttx-apps
- path: apps
- fetch-depth: 0
-
- - name: Checkout testing repo
- uses: actions/checkout@v2
- with:
- repository: apache/incubator-nuttx-testing
- path: testing
-
- - name: Restore cache
- id: cache-tools
- uses: actions/cache@v1
- env:
- cache-name: ${{ runner.os }}-cache-tools
- with:
- path: prebuilt
- key: ${{ runner.os }}-tools-${{ hashFiles('./testing/cibuild.sh') }}
-
- - name: Run builds
- run: |
- cd testing
- ./cibuild.sh -i -x -G testlist/${{matrix.boards}}.dat
+ - name: Fetch Cached Source
+ id: cache-source
+ uses: actions/cache@v1
+ with:
+ path: sources-cache
+ key: build-sources-${{ github.run_id }}
+ - name: Prevent Updating Source Cache
+ if: steps.cache-source.outputs.cache-hit == 'true'
+ run: mv sources-cache sources
+ - name: Download Source Artifact
+ if: steps.cache-source.outputs.cache-hit != 'true'
+ uses: actions/download-artifact@v1
+ with:
+ name: source-bundle
+ path: ./
+ - name: Extract Source Artifact
+ if: steps.cache-source.outputs.cache-hit != 'true'
+ run: tar -xf sources.tar.gz
+
+ - name: Restore Tools Cache
+ id: cache-tools
+ uses: actions/cache@v1
+ env:
+ cache-name: ${{ runner.os }}-cache-tools
+ with:
+ path: prebuilt
+ key: ${{ runner.os }}-tools-${{ hashFiles('./sources/testing/cibuild.sh') }}
+
+ - name: Run Builds
+ run: |
+ git -C sources/nuttx fetch --tags
+ cd sources/testing
+ ./cibuild.sh -i -x -G testlist/${{matrix.boards}}.dat