Skip to content

gnuton is testing out GitHub Actions 🚀 #43

gnuton is testing out GitHub Actions 🚀

gnuton is testing out GitHub Actions 🚀 #43

name: Containers
run-name: ${{ github.actor }} is testing out GitHub Actions 🚀
on: [push]
jobs:
build-job:
name: build firmware
runs-on: ubuntu-latest
strategy:
matrix:
include:
- model: "dsl-ax82u"
sdk: "src-rt-5.02axhnd.675x"
ui: "none"
skip: "Y"
- model: "rt-ax82u"
sdk: "src-rt-5.02axhnd.675x"
ui: "none"
skip: "Y"
- model: "rt-ax82u_v2"
sdk: "src-rt-5.04axhnd.675x"
ui: "none"
skip: "Y"
- model: "rt-ax92u"
sdk: "src-rt-5.02axhnd"
ui: "none"
skip: "Y"
- model: "rt-ax5400"
sdk: "src-rt-5.04axhnd.675x"
ui: "none"
skip: "Y"
- model: "tuf-ax3000"
sdk: "src-rt-5.02axhnd.675x"
ui: "none"
skip: "Y"
- model: "tuf-ax5400"
sdk: "src-rt-5.02axhnd.675x"
ui: "none"
skip: "Y"
- model: "tuf-ax3000"
sdk: "src-rt-5.02axhnd.675x"
ui: "tuf"
skip: "Y"
- model: "tuf-ax5400"
sdk: "src-rt-5.02axhnd.675x"
ui: "tuf"
skip: "Y"
- model: "rt-ax95q"
sdk: "src-rt-5.02axhnd.675x"
ui: "none"
skip: "n"
- model: "rt-axe95q"
sdk: "src-rt-5.02axhnd.675x"
ui: "none"
skip: "n"
container:
image: gnuton/asuswrt-merlin-toolchains-docker:latest
env:
MERLINUPDATE: "y"
MODEL: ${{ matrix.model }}
SDK: ${{ matrix.sdk }}
UI: ${{ matrix.ui }}
GIT_REPO: "https://github.com/gnuton/asuswrt-merlin.ng.git"
PROJECT_DIR: "/project/asuswrt-merlin.ng"
HOME: "/home/docker"
CHANGELOG_FILE: "/tmp/CHANGELOG"
options: --user docker
volumes:
- ${{ github.workspace }}:/project
steps:
- name: "Fetch code"
run: |
pwd
echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event."
echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
sudo chmod 777 /project
cd /project
git clone --single-branch --depth 1 --branch master $GIT_REPO
ls /home/docker
- name: "Set version"
run: |
cd ${PROJECT_DIR}
export CIRCLE_TAG="${GITHUB_REF#refs/*/}"
if [[ $GITHUB_REF_TYPE == "branch" ]]; then
echo "Nothing to do. Not a release. Branch detected: ${CIRCLE_TAG}"
else
TAG=$(echo ${CIRCLE_TAG} | sed 's/^[^.]*\.//')
MAJOR_VER=$(echo "${TAG}" | sed -E 's/([0-9.]*)[_-]?(.*)/\1/')
MINOR_VER=$(echo "${TAG}" | sed -E 's/([0-9.]*)[_-]?(.*)/\2/')
sed -i "s/SERIALNO=.*/SERIALNO=${MAJOR_VER}/g" release/src-rt/version.conf
sed -i "s/EXTENDNO=.*/EXTENDNO=${MINOR_VER}/g" release/src-rt/version.conf
echo "Release detected. Updating version.conf with MAJOR_VER=${MAJOR_VER} and MINOR_VER=${MINOR_VER}"
fi
- name: Generate changelog
run: |
cd ${PROJECT_DIR}
python tools/get-last-notes.py > "${CHANGELOG_FILE}"
cat "${CHANGELOG_FILE}"
- name: "Build"
run: |
echo "----- I am: $(id) -----"
cd ${PROJECT_DIR}/release/${SDK}
echo "----- Files in dir: $(pwd) -----"
ls -alh
echo "----- Setting toolchains for ${SDK} -----"
if [[ ${SDK} == "src-rt-5.04axhnd.675x" ]]; then
source /home/docker/envs/bcm-hnd-ax-4.19.sh
elif [[ ${SDK} == "src-rt-5.02axhnd.675x" ]]; then
source /home/docker/envs/bcm-hnd.sh
elif [[ ${SDK} == "src-rt-5.02axhnd" ]]; then
source /home/docker/envs/bcm-hnd.sh
else
echo "SDK not supported"
exit -1
fi
echo "----- hack-ish fix ---------"
sudo ln -sf /home/docker/am-toolchains/brcm-arm-hnd /opt/toolchains
echo "----- Check envs dir ---------"
ls -alh /home/docker/envs/
echo "----- Debugging env vars -----"
env
echo "------ Setting UI as $UI ---------"
if [[ ${UI} == "tuf" ]]; then
echo "Enabling TUF UI"
sed -i 's/TUF_UI=n/TUF_UI=y/' ${PROJECT_DIR}/release/src-rt/target.mak
fi
echo "----- BUILD -----"
if [[ ${SKIP_BUILD} == "Y" ]]; then
echo "Skipping build"
exit 0
fi
echo "make ${MODEL}"
mkdir -p "${PROJECT_DIR}/release/${SDK}/image/"
touch "${PROJECT_DIR}/release/${SDK}/image/${MODEL}_puresqubi.w"
echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!"
echo "🍏 This job's status is ${{ job.status }}."
- name: "Prepare artifacts"
env:
ARTIFACTS_DIR: ${{ github.workspace }}/artifacts
run: |
export IMAGE_PATH=${PROJECT_DIR}/release/${SDK}/image/
mkdir -p "${ARTIFACTS_DIR}"
if [[ ${SKIP_BUILD} == "Y" ]]; then
echo "Nothing to persist. Skipping."
exit 0
fi
echo "Removing images with boot loader."
rm -rf ${IMAGE_PATH}/*cferom*
files=("${IMAGE_PATH}"/*squashfs.pkgtb "${IMAGE_PATH}"/*.w)
if [ ${#files[@]} -gt 0 ]; then
for f in "${files[@]}"; do
if [ -f "$f" ] && [ "${f##*.}" != "md5" ]; then
echo "Creating MD5 signature for $f"
md5sum "$f" > "$f.md5"
echo "Copying image $f to workspace"
cp "$f" "${ARTIFACTS_DIR}"
cp "$f.md5" "${ARTIFACTS_DIR}"
fi
done
else
echo "No *.squashfs.pkgtb or *.w files found in ${IMAGE_PATH}"
fi
if [ "${GITHUB_REF_TYPE}" != "tag" ]; then
echo "No CHANGELOG to copy. Not a release build."
else
# Changelogs are the same for each models since we are building from the same branch. We do use only the one generated by DSL-AX82U for now.
if [[ ${MODEL} == "dsl-ax82u" ]]; then
cp "${CHANGELOG_FILE}" workspace/release
fi
fi
- name: "Archive artifacts"
uses: actions/upload-artifact@v2
with:
name: release-${{ matrix.model }}
path: ${{ github.workspace }}/artifacts