Armbian #642
This file contains hidden or 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
| name: Armbian | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| asset: | |
| description: 'Asset' | |
| type: choice | |
| options: [kernel, uboot, firmware] | |
| default: kernel | |
| required: true | |
| branch: | |
| description: 'Branch' | |
| type: choice | |
| options: [legacy, vendor, current, edge] | |
| default: current | |
| required: true | |
| board: | |
| description: 'Board' | |
| required: true | |
| gitbranch: | |
| description: 'Override Git branch of Armbian repo' | |
| gitowner: | |
| description: 'Override Git owner of Armbian repo' | |
| bcmdhd-sdio: | |
| description: 'Enable bcmdhd WiFi driver in SDIO mode' | |
| type: boolean | |
| default: false | |
| rebase: | |
| description: 'Rebase onto latest armbian/main' | |
| type: boolean | |
| default: true | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.inputs.asset }}-${{ github.event.inputs.branch }}-${{ github.event.inputs.board }}-${{ github.event.inputs.bcmdhd-sdio }} | |
| cancel-in-progress: true | |
| permissions: {} | |
| jobs: | |
| build: | |
| name: "${{ github.event.inputs.asset }} - ${{ github.event.inputs.branch }} - ${{ github.event.inputs.board }}" | |
| runs-on: ubuntu-24.04-arm | |
| steps: | |
| - name: Clone Armbian repo | |
| run: | | |
| owner='${{ github.event.inputs.gitowner }}' | |
| [ "$owner" ] || owner='MichaIng' | |
| branch='${{ github.event.inputs.gitbranch }}' | |
| [ "$branch" ] || branch='dietpi' | |
| git clone -b "$branch" "https://github.com/$owner/build" | |
| [ '${{ github.event.inputs.rebase }}' == 'false' ] && exit 0 || : | |
| cd build | |
| git config user.name "$GITHUB_REPOSITORY_OWNER" | |
| git config user.email '${{ github.repository.owner.email }}' | |
| if [ "$owner" != 'MichaIng' ] | |
| then | |
| git remote add dietpi https://github.com/MichaIng/build | |
| git fetch dietpi dietpi | |
| git rebase dietpi/dietpi | |
| elif [ "$branch" != 'dietpi' ] | |
| then | |
| git fetch origin dietpi | |
| git rebase origin/dietpi | |
| fi | |
| if [ "$owner" != 'armbian' ] | |
| then | |
| git remote add upstream https://github.com/armbian/build | |
| git fetch upstream main | |
| git rebase upstream/main | |
| elif [ "$branch" != 'main' ] | |
| then | |
| git fetch origin main | |
| git rebase origin/main | |
| fi | |
| # Cherry-pick commit to switch bcmdhd WiFi driver to SDIO mode | |
| if [ '${{ github.event.inputs.bcmdhd-sdio }}' = 'true' ] && [ '${{ github.event.inputs.asset }}' = 'kernel' ] && [ '${{ github.event.inputs.branch }}' = 'vendor' ] | |
| then | |
| git cherry-pick origin/bcmdhd-sdio || git cherry-pick dietpi/bcmdhd-sdio | |
| fi | |
| - name: Obtain version suffix | |
| run: | | |
| cd build | |
| read -r version < VERSION | |
| case '${{ github.event.inputs.asset }}' in | |
| firmware) package='armbian-firmware';; | |
| uboot) package='linux-u-boot-${{ github.event.inputs.board }}-${{ github.event.inputs.branch }}';; | |
| kernel) | |
| family=$(. 'config/boards/${{ github.event.inputs.board }}.'* &> /dev/null; echo "$BOARDFAMILY") | |
| echo "Board family is: $family" | |
| family=$(BRANCH='${{ github.event.inputs.branch }}'; . "config/sources/families/$family.conf" &> /dev/null; echo "${LINUXFAMILY:-$family}") | |
| echo "Linux family is: $family" | |
| package="linux-dtb-${{ github.event.inputs.branch }}-$family" | |
| ;; | |
| *) echo 'ERROR: Invalid asset "${{ github.event.inputs.asset }}"'; exit 1;; | |
| esac | |
| # Dedicated kernel packages with bcmdhd driver in SDIO mode | |
| if [ '${{ github.event.inputs.bcmdhd-sdio }}' = 'true' ] && [ '${{ github.event.inputs.asset }}' = 'kernel' ] && [ '${{ github.event.inputs.branch }}' = 'vendor' ] | |
| then | |
| package="${package}_bcmdhd-sdio" | |
| fi | |
| if curl -fO "https://dietpi.com/downloads/binaries/$package.deb" | |
| then | |
| cur_version=$(dpkg-deb -f "$package.deb" Version) | |
| rm "$package.deb" | |
| cur_suffix=${cur_version#*-dietpi} | |
| echo "Current package version is: $cur_version" | |
| fi | |
| echo "New Armbian version is: $version" | |
| [ "$version-dietpi$cur_suffix" = "$cur_version" ] && version="$version-dietpi$((cur_suffix+1))" || version="$version-dietpi1" | |
| echo "New package version will be: $version" | |
| echo "$version" > VERSION | |
| - name: Build asset | |
| run: | | |
| cd build | |
| ./compile.sh '${{ github.event.inputs.asset }}' BRANCH='${{ github.event.inputs.branch }}' BOARD='${{ github.event.inputs.board }}' | |
| - name: Upload | |
| run: | | |
| # SSH server and client keys | |
| mkdir ~/.ssh | |
| umask 377 | |
| echo '${{ secrets.KNOWN_HOSTS }}' > ~/.ssh/known_hosts | |
| echo '${{ secrets.SSH_KEY }}' > ~/.ssh/id_ed25519 | |
| # Generate file lists | |
| files= | |
| urls='"https://dietpi.com/downloads/binaries/testing/"' | |
| cd build/output/debs | |
| for i in * | |
| do | |
| # Dedicated kernel packages with bcmdhd driver in SDIO mode | |
| if [ '${{ github.event.inputs.bcmdhd-sdio }}' = 'true' ] && [ '${{ github.event.inputs.asset }}' = 'kernel' ] && [ '${{ github.event.inputs.branch }}' = 'vendor' ] | |
| then | |
| mv -v "$i" "${i%%_*}_bcmdhd-sdio.deb" | |
| i="${i%%_*}_bcmdhd-sdio.deb" | |
| else | |
| mv -v "$i" "${i%%_*}.deb" | |
| i="${i%%_*}.deb" | |
| fi | |
| files="$files,$i" | |
| urls="$urls,\"https://dietpi.com/downloads/binaries/testing/$i\"" | |
| done | |
| files=${files#,} | |
| echo "Uploading file(s) $files to URL(s) $urls ..." | |
| # Upload | |
| curl -T "{$files}" --key ~/.ssh/id_ed25519 '${{ secrets.UPLOAD_URL }}all/' | |
| curl 'https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE }}/purge_cache' -H 'Authorization: Bearer ${{ secrets.CF_TOKEN }}' -H 'Content-Type: application/json' --data "{\"files\":[$urls]}" |