on: push: tags: - 'v*.*.*' env: GIT_PAT: ${{ secrets.GIT_PAT }} PORTAL_ENDPOINT: ${{ secrets.PORTAL_ENDPOINT }} PORTAL_API_KEY: ${{ secrets.PORTAL_API_KEY }} jobs: build-and-publish: runs-on: self-hosted steps: - name: Determine Environment id: determine-env run: | TAG_REF=${GITHUB_REF#refs/tags/} IFS='.' read -ra VERSION <<< "${TAG_REF#v}" PATCH_VERSION=${VERSION[2]} if [[ $PATCH_VERSION -eq 0 ]]; then echo "ENVIRONMENT=master" >> $GITHUB_ENV echo "cache-prefix=master" >> $GITHUB_ENV echo "::set-output name=cache-prefix::master" else echo "ENVIRONMENT=staging" >> $GITHUB_ENV echo "cache-prefix=staging" >> $GITHUB_ENV echo "::set-output name=cache-prefix::staging" fi echo "TAG_REF=${TAG_REF}" >> $GITHUB_ENV - name: Checkout code uses: actions/checkout@v4 - name: Install Dependencies run: | apt-get update apt-get install -y build-essential clang flex bison g++ gawk gcc-multilib g++-multilib gettext libncurses-dev libssl-dev python3-distutils rsync unzip zlib1g-dev file wget python3-setuptools swig npm install -g pkg@5.8.1 - name: Add Custom Files run: | echo $GIT_PAT git clone https://$GIT_PAT:x-oauth-basic@git.difuse.io/Difuse/difos-files.git cd difos-files ./setup-all.sh ${{ github.workspace }} $GIT_PAT - name: Build run: | ./scripts/feeds update -a ./scripts/feeds install -a cp -rf configs/dmsbg100.config .config make defconfig FORCE_UNSAFE_CONFIGURE=1 CONFIG_TARGET_ROOTFS_INITRAMFS=n make clean -j16 FORCE_UNSAFE_CONFIGURE=1 CONFIG_TARGET_ROOTFS_INITRAMFS=n make download -j16 FORCE_UNSAFE_CONFIGURE=1 CONFIG_TARGET_ROOTFS_INITRAMFS=n make world -j16 - name: Publish Packages to Portal run: | difosDir='.' cd $difosDir folder_name=opkg-v$TAG_REF-$ENVIRONMENT mkdir -p $folder_name cp -rf ./bin/packages/aarch64_cortex-a53/* $folder_name/ tar -czvf $folder_name.tar.gz $folder_name curl -L -X POST -H 'Content-Type: multipart/form-data' -F "file=@$folder_name.tar.gz" https://$PORTAL_ENDPOINT/software/upload/opkg/${{ env.PORTAL_API_KEY }} - name: Publish Release run: | difosDir='.' cd $difosDir sdFile=$(find ./bin/ -name "*difos*" | grep sdcard | head -n1) sqFile=$(find ./bin/ -name "*difos*" | grep squash | head -n1) curl -L -X POST -H 'Content-Type: multipart/form-data' -F "file=@$sdFile" https://$PORTAL_ENDPOINT/software/upload/sd/$ENVIRONMENT/${{ env.PORTAL_API_KEY }} curl -L -X POST -H 'Content-Type: multipart/form-data' -F "file=@$sqFile" https://$PORTAL_ENDPOINT/software/upload/sysupgrade/$ENVIRONMENT/${{ env.PORTAL_API_KEY }}