Workflow to test submitted crate builds (#96)
This commit is contained in:
committed by
GitHub
parent
1be5c6ca63
commit
2b91cef7d2
@@ -0,0 +1,71 @@
|
||||
name: Build Crate
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- 'index/**.toml'
|
||||
|
||||
jobs:
|
||||
|
||||
build:
|
||||
name: Build crate on ${{ matrix.os }}::${{ matrix.tag}}
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
os:
|
||||
- macos-latest
|
||||
- ubuntu-latest
|
||||
- windows-latest
|
||||
tag:
|
||||
- centos-latest-community-2019
|
||||
- community-current
|
||||
- debian-stable
|
||||
- ubuntu-lts
|
||||
exclude: # inclusions don't allow to add arrays of values to a scenario
|
||||
- os: macos-latest
|
||||
tag: centos-latest-community-2019
|
||||
- os: macos-latest
|
||||
tag: community-current
|
||||
- os: macos-latest
|
||||
tag: debian-stable
|
||||
- os: windows-latest
|
||||
tag: centos-latest-community-2019
|
||||
- os: windows-latest
|
||||
tag: community-current
|
||||
- os: windows-latest
|
||||
tag: debian-stable
|
||||
|
||||
steps:
|
||||
- name: Check out alire-index
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 3 # Needed to be able to diff and obtain changed files
|
||||
|
||||
- name: Set up GNAT toolchain (FSF)
|
||||
if: matrix.os == 'ubuntu-latest'
|
||||
uses: ada-actions/toolchain@dev
|
||||
with:
|
||||
distrib: fsf # faster install?
|
||||
|
||||
- name: Set up GNAT toolchain (Community)
|
||||
if: matrix.os != 'ubuntu-latest'
|
||||
uses: ada-actions/toolchain@dev
|
||||
with:
|
||||
distrib: community
|
||||
|
||||
- name: Set up `alr`
|
||||
uses: mosteo/setup-alire@exp
|
||||
|
||||
- name: Test crate (Linux)
|
||||
if: matrix.os == 'ubuntu-latest' # docker testing only for linuxes
|
||||
uses: mosteo/actions@docker-run/v1
|
||||
with:
|
||||
image: alire/gnat:${{matrix.tag}}
|
||||
command: scripts/gh-build-crate.sh
|
||||
|
||||
- name: Test crate (Windows/MacOS)
|
||||
if: matrix.os != 'ubuntu-latest' # native testing in Windows/MacOS
|
||||
run: scripts/gh-build-crate.sh
|
||||
shell: bash
|
||||
Executable
+71
@@ -0,0 +1,71 @@
|
||||
#!/bin/bash
|
||||
|
||||
trap 'echo "ERROR at line ${LINENO} (code: $?)" >&2' ERR
|
||||
trap 'echo "Interrupted" >&2 ; exit 1' INT
|
||||
|
||||
set -o errexit
|
||||
set -o nounset
|
||||
|
||||
# get changes from second parent of this merge commit
|
||||
COMMIT=`git rev-list --parents -n1 HEAD | cut -f3 -d' '`
|
||||
echo COMMIT for diff is $COMMIT
|
||||
CHANGES=`git diff-tree --no-commit-id --name-only -r $COMMIT`
|
||||
|
||||
# Import the out-of-docker built alr
|
||||
export PATH+=:${PWD}/alire/bin
|
||||
|
||||
# Configure index
|
||||
alr index --name local --add ./index
|
||||
|
||||
# Bulk changes for the record
|
||||
echo Changed files: $CHANGES
|
||||
|
||||
# Test crate
|
||||
for file in $CHANGES; do
|
||||
|
||||
if [[ $file == index.toml ]]; then
|
||||
echo Skipping index metadata file: $file
|
||||
continue
|
||||
fi
|
||||
|
||||
if [[ $file != *.toml ]]; then
|
||||
echo Skipping non-crate file: $file
|
||||
continue
|
||||
fi
|
||||
|
||||
if ! [ -f ./$file ]; then
|
||||
echo Skipping deleted file: $file
|
||||
continue
|
||||
fi
|
||||
|
||||
# Checks passed, this is a crate we must test
|
||||
|
||||
crate=$(basename $file .toml)
|
||||
echo Testing crate: $crate
|
||||
|
||||
# Show info for the record
|
||||
echo PLATFORM-INDEPENDENT CRATE INFO
|
||||
alr show $crate
|
||||
alr show --external $crate
|
||||
alr show --external-detect $crate
|
||||
|
||||
echo PLATFORM-DEPENDENT CRATE INFO
|
||||
alr show --system $crate
|
||||
alr show --external --system $crate
|
||||
alr show --external-detect --system $crate
|
||||
|
||||
if $(alr show $crate --system | grep -q 'Available when: False'); then
|
||||
echo Skipping crate build: UNAVAILABLE on system
|
||||
continue
|
||||
fi
|
||||
|
||||
echo BUILDING CRATE
|
||||
alr get --build -n $crate
|
||||
|
||||
echo LISTING EXECUTABLES
|
||||
cd ${crate}_*
|
||||
alr run --list
|
||||
cd ..
|
||||
|
||||
echo CRATE BUILD ENDED SUCCESSFULLY
|
||||
done
|
||||
Reference in New Issue
Block a user