nuttx/.github/workflows/build.yml
Brennan Ashton 570aa3cdac CI: Allow builds to pass even if final artifact upload fails
We are seeing higher cases of artifact upload failures
in github.  Other projects are also seeing this as has been
reported at https://github.com/actions/upload-artifact/issues/116

There is a fix that was just merged in the base library:
https://github.com/actions/toolkit/pull/675

So Hopefully we can revert this before too long.

Signed-off-by: Brennan Ashton <bashton@brennanashton.com>
2020-12-23 10:32:31 +01:00

212 lines
6.4 KiB
YAML

# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
name: Build
on:
pull_request:
paths-ignore:
- 'Documentation/**'
push:
paths-ignore:
- 'Documentation/**'
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 nuttx repo tags
run: git -C sources/nuttx fetch --tags
- 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: Tar sources
run: tar zcf sources.tar.gz sources
- name: Archive Source Bundle
uses: actions/upload-artifact@v1
with:
name: source-bundle
path: sources.tar.gz
Linux:
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, other, sim]
steps:
- name: Download Source Artifact
uses: actions/download-artifact@v1
with:
name: source-bundle
path: .
- name: Extract sources
run: tar zxf 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: Export NuttX Repo SHA
run: echo "nuttx_sha=`git -C sources/nuttx rev-parse HEAD`" >> $GITHUB_ENV
- name: Run builds
uses: ./sources/testing/.github/actions/ci-container
env:
BLOBDIR: /tools/blobs
with:
run: |
echo "::add-matcher::sources/nuttx/.github/gcc.json"
export CCACHE_DIR=`pwd`/ccache
mkdir $CCACHE_DIR
cd sources/testing
export ARTIFACTDIR=`pwd`/../../buildartifacts
./cibuild.sh -A -c testlist/${{matrix.boards}}.dat
ccache -s
- uses: actions/upload-artifact@v2
with:
name: linux-builds
path: buildartifacts/
continue-on-error: true
macOS:
runs-on: macos-10.15
needs: Fetch-Source
strategy:
matrix:
boards: [arm-12, other, sim]
steps:
- name: Download Source Artifact
uses: actions/download-artifact@v1
with:
name: source-bundle
path: .
- name: Extract sources
run: tar zxf sources.tar.gz
- name: Restore Tools Cache
id: cache-tools
uses: actions/cache@v2
env:
cache-name: ${{ runner.os }}-cache-tools
with:
path: prebuilt
key: ${{ runner.os }}-tools-${{ hashFiles('./sources/testing/cibuild.sh') }}
- name: Export NuttX Repo SHA
run: echo "nuttx_sha=`git -C sources/nuttx rev-parse HEAD`" >> $GITHUB_ENV
- name: Run Builds
run: |
echo "::add-matcher::sources/nuttx/.github/gcc.json"
export CCACHE_DIR=`pwd`/ccache
mkdir $CCACHE_DIR
cd sources/testing
export ARTIFACTDIR=`pwd`/../../buildartifacts
./cibuild.sh -i -A -c testlist/${{matrix.boards}}.dat
ccache -s
- uses: actions/upload-artifact@v2
with:
name: macos-builds
path: buildartifacts/
continue-on-error: true