-
-
Notifications
You must be signed in to change notification settings - Fork 13
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
a613848
commit 4ea7343
Showing
5 changed files
with
168 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,139 @@ | ||
name: "Unit tests" | ||
on: | ||
workflow_dispatch: | ||
workflow_call: | ||
schedule: | ||
- cron: '0 2 * * *' | ||
push: | ||
paths: | ||
- tests/** | ||
- lib/** | ||
|
||
env: | ||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
PR_NUMBER: ${{ github.event.number }} | ||
|
||
jobs: | ||
|
||
test: | ||
name: "Unit tests" | ||
runs-on: ubuntu-latest | ||
outputs: | ||
matrix: ${{steps.json.outputs.JSON_CONTENT}} | ||
steps: | ||
|
||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
path: 'config' | ||
|
||
- name: "Make JSON" | ||
id: json | ||
run: | | ||
echo 'JSON_CONTENT<<EOF' >> $GITHUB_OUTPUT | ||
# define docker images where we will run test install | ||
dockerimages=("debian:bookworm" "debian:trixie" "ubuntu:jammy" "ubuntu:noble") | ||
# read tests cases and loop them | ||
tests=($(grep -rw config/tests/*.conf -e "ENABLED=true" | cut -d"/" -f3 | cut -d"." -f1)) | ||
for i in "${tests[@]}"; do | ||
unset RELEASE | ||
source config/tests/${i}.conf | ||
if [[ -z "${RELEASE}" ]]; then RELEASE=all; fi | ||
# if we speficy releases, we need to loop docker images and use if there is a match | ||
if [[ $RELEASE != all || -z $RELEASE ]]; then | ||
for j in ${dockerimages[@]}; do | ||
elements=($(echo $RELEASE | tr ':' "\n")) | ||
for SELECTED_RELEASE in "${elements[@]}"; do | ||
if [[ $j == *"${SELECTED_RELEASE}"* ]]; then | ||
echo "{\"package\":\"${i}\",\"image\":\"$j\"}" | ||
fi | ||
done | ||
done | ||
else | ||
for j in ${dockerimages[@]}; do | ||
echo "{\"package\":\"${i}\",\"image\":\"$j\"}" | ||
done | ||
fi | ||
|
||
done | jq -s >> $GITHUB_OUTPUT | ||
echo 'EOF' >> $GITHUB_OUTPUT | ||
|
||
gradle: | ||
needs: test | ||
strategy: | ||
fail-fast: false | ||
max-parallel: 32 | ||
matrix: | ||
image: ${{ fromJSON(needs.test.outputs.matrix) }} | ||
|
||
name: "I" | ||
runs-on: ubuntu-latest | ||
container: | ||
image: "${{ matrix.image.image }}" | ||
steps: | ||
|
||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
path: 'config' | ||
|
||
- name: Install | ||
run: | | ||
# source vars | ||
. "config/tests/${{ matrix.image.package }}.conf" | ||
echo ${TEST_TITLE} | ||
|
||
export DEBIAN_FRONTEND=noninteractive | ||
RELEASE=$(echo "${{ matrix.image.image }}" | cut -d":" -f2) | ||
apt update | ||
apt -y install wget gpg | ||
|
||
# add armbian repository | ||
URL=apt.armbian.com | ||
wget https://${URL}/armbian.key -O key | ||
gpg --dearmor < key | tee /usr/share/keyrings/armbian.gpg > /dev/null | ||
chmod go+r /usr/share/keyrings/armbian.gpg | ||
echo "deb [signed-by=/usr/share/keyrings/armbian.gpg] http://${URL} $RELEASE main ${RELEASE}-utils ${RELEASE}-desktop" | tee /etc/apt/sources.list.d/armbian.list | ||
apt update -y | ||
apt upgrade -y | ||
apt -y install sudo procps systemd whiptail jq lsb-release iproute2 | ||
|
||
# install packages / except howdy as its too large | ||
export DEBIAN_FRONTEND=noninteractive | ||
cd config | ||
eval "$PREINSTALL" | ||
sudo bash bin/armbian-configng --cmd "${{ matrix.image.package }}" | ||
eval "$CONDITION" | ||
|
||
# stats | ||
FILENAME="data-"$(echo ${{ matrix.image.image }} | sed "s/:/-/g")"-${{ matrix.image.package }}.teststats" | ||
echo $RELEASE >> ../${FILENAME} | ||
bash bin/armbian-configng --cmd | grep "${{ matrix.image.package }}" | xargs >> ../${FILENAME} | ||
echo " " >> ../${FILENAME} | ||
|
||
- name: Upload test | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: TESTDATA | ||
path: data-*.teststats | ||
|
||
stop: | ||
name: "Merge test artifacts" | ||
if: always() | ||
needs: gradle | ||
runs-on: ubuntu-latest | ||
steps: | ||
|
||
- name: "Download changes" | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: TESTDATA | ||
|
||
- name: Install | ||
run: | | ||
echo "# Succesful tests:" >> $GITHUB_STEP_SUMMARY | ||
cat ./*.teststats | sed '$ s/.$//' >> $GITHUB_STEP_SUMMARY |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
ENABLED=true | ||
PREINSTALL="bash bin/armbian-configng --cmd S18" | ||
CONDITION="[ ! -f /usr/bin/zsh ]" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
ENABLED=true | ||
CONDITION="[ -f /usr/bin/zsh ]" |