nuttx/.github/workflows/build.yml
Brennan Ashton 370eb169fd Restore Git Credentials on NuttX repo
Something change on the GitHub side that has broken credentials
between the the fetch and buld workflow steps.  There is no
way to tell the checkout action to only re-auth so we have it
checkout the repo again, but it will use what it already has.

In the future we can change fetch step to just compute the
target refs and store them in a script that we can call to
set the environment variables for the targets much like
this patch.

Signed-off-by: Brennan Ashton <bashton@brennanashton.com>
2020-05-05 15:26:51 +08:00

235 lines
7.2 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:
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:
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: 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: Export NuttX Repo SHA
run: echo "::set-env name=nuttx_sha::`git -C sources/nuttx rev-parse HEAD`"
- name: Refresh Git Credentials
uses: actions/checkout@v2
with:
repository: apache/incubator-nuttx
ref: ${{ env.nuttx_sha }}
path: sources/nuttx
fetch-depth: 1
- name: Get Tags for NuttX Repo
run: git -C sources/nuttx fetch --tags
- name: Run builds
uses: ./sources/testing/.github/actions/ci-container
env:
BLOBDIR: /tools/blobs
with:
run: |
cd sources/testing
./cibuild.sh -x 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: 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: Export NuttX Repo SHA
run: echo "::set-env name=nuttx_sha::`git -C sources/nuttx rev-parse HEAD`"
- name: Refresh Git Credentials
uses: actions/checkout@v2
with:
repository: apache/incubator-nuttx
ref: ${{ env.nuttx_sha }}
path: sources/nuttx
fetch-depth: 1
- name: Get Tags for NuttX Repo
run: git -C sources/nuttx fetch --tags
- name: Run Builds
run: |
cd sources/testing
./cibuild.sh -i -x testlist/${{matrix.boards}}.dat