name: "Rebuild Armbian" author: "https://github.com/armbian" description: "Build Armbian Linux" inputs: armbian_token: description: "GitHub installation access token" required: true armbian_runner_clean: description: "Make some space on GH runners" required: false default: "" armbian_artifacts: descriptions: "Upload PATH" required: false default: "build/output/images/" armbian_target: description: "Build image or kernel" required: false default: "kernel" armbian_branch: description: "Choose framework branch" required: false default: "main" armbian_kernel_branch: description: "Choose kernel branch" required: false default: "current" armbian_release: description: "Choose userspace release" required: false default: "jammy" armbian_version: description: "Set different version" required: false default: "" armbian_board: description: "Select hardware platform" required: false default: "uefi-x86" armbian_ui: description: "Armbian user interface" required: false default: "server" armbian_compress: description: "Armbian compress method" required: false default: "sha,img,xz" armbian_extensions: description: "Armbian lists of extensions" required: false default: "" armbian_userpatches: description: "Armbian userpatches path" required: false default: "" armbian_pgp_key: description: "Armbian PGP key" required: false default: "" armbian_pgp_password: description: "Armbian PGP password" required: false default: "" armbian_release_tittle: description: "Armbian image" required: false default: "Armbian image" armbian_release_body: description: "Armbian images" required: false default: "Build with [Armbian tools](https://github.com/armbian/build)" armbian_release_tag: description: "Armbian release tag" required: false runs: using: "composite" steps: - name: Free Github Runner if: ${{ inputs.armbian_runner_clean != '' }} uses: descriptinc/free-disk-space@main with: android: true dotnet: true haskell: true large-packages: true docker-images: true swap-storage: true - name: "Import GPG key" if: ${{ inputs.armbian_pgp_key != '' }} uses: crazy-max/ghaction-import-gpg@v6 with: gpg_private_key: ${{ inputs.armbian_pgp_key }} passphrase: ${{ inputs.armbian_pgp_password }} - name: "Checkout Armbian os" uses: actions/checkout@v5 with: repository: armbian/os fetch-depth: 0 clean: false path: os - name: "Checkout Armbian build framework" uses: actions/checkout@v5 with: repository: armbian/build ref: ${{ inputs.armbian_branch }} clean: false path: build - name: "Checkout customisations" uses: actions/checkout@v5 with: fetch-depth: 0 clean: false path: custom - shell: bash run: | # read version from upstream Armbian OS cat os/stable.json | jq '.version' | sed "s/\"//g" | sed 's/^/ARMBIAN_VERSION=/' >> $GITHUB_ENV [[ "${{ inputs.armbian_version }}" != '' ]] && echo "ARMBIAN_VERSION=${{ inputs.armbian_version }}" >> $GITHUB_ENV # copy os userpatches and custom mkdir -pv build/userpatches rsync -av os/userpatches/. build/userpatches/ if [[ -d custom/userpatches ]]; then rsync -av custom/userpatches/. build/userpatches/ fi - shell: bash run: | # userspace decode if [[ "${{ inputs.armbian_ui }}" == minimal ]]; then BUILD_DESKTOP="no" BUILD_MINIMAL="yes" elif [[ "${{ inputs.armbian_ui }}" == server ]]; then BUILD_DESKTOP="no" BUILD_MINIMAL="no" else BUILD_DESKTOP="yes" BUILD_MINIMAL="no" DESKTOP_ENVIRONMENT="${{ inputs.armbian_ui }}" DESKTOP_APPGROUPS_SELECTED="" DESKTOP_ENVIRONMENT_CONFIG_NAME="config_base" fi # go to build folder cd build # default build command below doesn't prepare host dependencies sudo ./compile.sh requirements sudo chown -R $USER:$USER . # execute build command ./compile.sh "${{ inputs.armbian_target }}" \ REVISION="${{ env.ARMBIAN_VERSION }}" \ BOARD="${{ inputs.armbian_board }}" \ BRANCH="${{ inputs.armbian_kernel_branch }}" \ RELEASE="${{ inputs.armbian_release }}" \ KERNEL_CONFIGURE="no" \ BUILD_DESKTOP="${BUILD_DESKTOP}" \ BUILD_MINIMAL="${BUILD_MINIMAL}" \ DESKTOP_ENVIRONMENT="${DESKTOP_ENVIRONMENT}" \ DESKTOP_APPGROUPS_SELECTED="${DESKTOP_APPGROUPS_SELECTED}" \ DESKTOP_ENVIRONMENT_CONFIG_NAME="${DESKTOP_ENVIRONMENT_CONFIG_NAME}" \ ENABLE_EXTENSIONS="${{ inputs.armbian_extensions }}" \ COMPRESS_OUTPUTIMAGE="${{ inputs.armbian_compress }}" \ SHARE_LOG="yes" \ EXPERT="yes" - name: Sign shell: bash if: ${{ inputs.armbian_pgp_password != '' }} run: | echo ${{ inputs.armbian_pgp_password }} | \ gpg --passphrase-fd 0 --armor --detach-sign --pinentry-mode loopback --batch --yes \ build/output/images/*.img*.xz - uses: ncipollo/release-action@v1 with: tag: ${{ inputs.armbian_release_tag != '' && inputs.armbian_release_tag || env.ARMBIAN_VERSION }} name: "${{ inputs.armbian_release_tittle }}" artifacts: "${{ inputs.armbian_artifacts }}*" allowUpdates: true removeArtifacts: false replacesArtifacts: true makeLatest: true token: "${{ inputs.armbian_token }}" body: | ${{ inputs.armbian_release_body }} branding: icon: "check" color: "red"