Compare commits

...

5 Commits
main ... v23.11

Author SHA1 Message Date
Igor
6fa5981348
Add default Armbian Github compile action (#6105) 2023-12-31 18:13:01 +01:00
Igor
0c992acd2b
Adjust text on main README.md (#6062) 2023-12-31 18:12:50 +01:00
Igor Pecovnik
a9ab97ff1c
Remove TOC as its generated automatically 2023-12-31 18:12:41 +01:00
Igor
a1096f80f0
Add two additional badges to show contributors and last commit
Also add additional start option "Stable branch". As sources are now (mainly) frozen, this is worth to mention and recommend.
2023-12-31 18:12:31 +01:00
Gunjan Gupta
d69350a884 freeze mainline kernel version 2023-11-28 23:21:53 +01:00
18 changed files with 294 additions and 79 deletions

103
README.md
View File

@ -4,23 +4,11 @@
</a><br>
<strong>Armbian Linux Build Framework</strong><br>
<br>
<a href=https://github.com/armbian/os><img alt="Artifacts generation" src="https://img.shields.io/github/actions/workflow/status/armbian/os/complete-artifact-matrix-all.yml?logo=githubactions&label=Build&style=for-the-badge&branch=main&logoColor=white"></a>
<a href=https://github.com/armbian/build/graphs/contributors><img alt="GitHub contributors" src="https://img.shields.io/github/contributors-anon/armbian/build?logo=stackexchange&label=Contributors&style=for-the-badge&branch=main&logoColor=white"></a>
<a href=https://github.com/armbian/os><img alt="Artifacts generation" src="https://img.shields.io/github/actions/workflow/status/armbian/os/complete-artifact-matrix-all.yml?logo=dependabot&label=CI%20Build&style=for-the-badge&branch=main&logoColor=white"></a>
<a href=https://github.com/armbian/build/commits/main><img alt="GitHub last commit (branch)" src="https://img.shields.io/github/last-commit/armbian/build/main?logo=github&label=Last%20commit&style=for-the-badge&branch=main&logoColor=white"></a>
</p>
## Table of contents
- [What does this project do?](#what-does-this-project-do)
- [Getting started](#getting-started)
- [Compared with industry standards](#compared-with-industry-standards)
- [Download prebuilt images](#download-prebuilt-images)
- [Project structure](#project-structure)
- [Contribution](#contribution)
- [Support](#support)
- [Contact](#contact)
- [Contributors](#contributors)
- [Partners](#armbian-partners)
- [License](#license)
## What does this project do?
- Builds custom **kernel**, **image** or a **distribution** optimized for low-resource hardware,
@ -29,14 +17,16 @@
## Getting started
### Basic requirements
### Requirements for self hosted
- x86_64 or aarch64 machine with at least 2GB of memory and ~35GB of disk space for a virtual machine, [WSL2](https://learn.microsoft.com/en-us/windows/wsl/install), container or bare metal installation
- Ubuntu Jammy 22.04.x amd64 or aarch64 for native building or any Docker capable amd64 / aarch64 Linux for containerised
- x86_64 / aarch64 machine
- at least 2GB of memory and ~35GB of disk space for VM, container or bare metal installation
- [Armbian / Ubuntu Jammy 22.04.x](https://github.com/armbian/sdk) for native building or any Docker capable Linux for containerised
- Windows 10/11 with WSL2 subsystem running Ubuntu Jammy 22.04.x
- Superuser rights (configured sudo or root access).
- Make sure all your system components are up-to-date. Outdated Docker binaries, for example, can cause trouble.
- Make sure your system is up-to-date! Outdated Docker binaries, for example, can cause trouble.
### Start with the build script
For stable branch use `--branch=v23.11`
```bash
apt-get -y install git
@ -59,30 +49,53 @@ Show work-in-progress areas in interactive mode:
./compile.sh EXPERT="yes"
```
Build minimal CLI Armbian Jammy image for Orangepi Zero. Use `current` kernel and write image to the SD card:
Build minimal CLI Armbian Jammy for Bananapi M5 with LTS kernel:
```bash
./compile.sh \
BOARD=orangepizero \
BOARD=bananapim5 \
BRANCH=current \
RELEASE=jammy \
BUILD_MINIMAL=yes \
BUILD_DESKTOP=no \
KERNEL_CONFIGURE=no \
CARD_DEVICE="/dev/sdX"
KERNEL_CONFIGURE=no
```
More information:
Build with GitHub actions: ([advanced version](https://github.com/armbian/os/blob/main/.github/workflows/complete-artifact-one-by-one.yml))
- [Building Armbian](https://docs.armbian.com/Developer-Guide_Build-Preparation/) — how to start, how to automate;
- [Build options](https://docs.armbian.com/Developer-Guide_Build-Options/) — all build options;
- [User configuration](https://docs.armbian.com/Developer-Guide_User-Configurations/) — how to add packages, patches, and override sources config;
```
name: "Build Armbian"
on:
workflow_dispatch:
jobs:
build-armbian:
runs-on: ubuntu-latest
steps:
- uses: armbian/build@main
with:
armbian_token: "${{ secrets.GITHUB_TOKEN }}" # GitHub token
armbian_release: "jammy" # userspace
armbian_target: "build" # build=image, kernel=kernel
armbian_board: "bananapim5" # build target
```
Generated image will be uploaded to your repository release. Note: GitHub upload file limit is 2Gb.
## Download prebuilt images
## More information:
- [quarterly released **supported** builds](https://www.armbian.com/download/?device_support=Standard%20support)
- [quarterly released **community maintained** builds](https://www.armbian.com/download/?device_support=Community%20maintained)
- [automatic released **rolling release** builds](https://github.com/armbian/os/releases/latest) (daily or when code changes)
- [Building Armbian](https://docs.armbian.com/Developer-Guide_Build-Preparation/) (how to start, how to automate)
- [Build options](https://docs.armbian.com/Developer-Guide_Build-Options/) (all build options)
- [User configuration](https://docs.armbian.com/Developer-Guide_User-Configurations/) (how to add packages, patches, and override sources config)
## Download prebuilt images releases
### Point
- [manually released **standard supported** builds](https://www.armbian.com/download/?device_support=Standard%20support) (quarterly)
### Rolling
- [automatically released **staging and standard supported** builds](https://github.com/armbian/os/releases/latest) (daily)
- [automatically released **community maintained** builds](https://github.com/armbian/community/releases/latest) (weekly)
## Compared with industry standards
@ -182,25 +195,15 @@ Function | Armbian | Yocto | Buildroot |
## Contribution
### You don't need to be a programmer to help!
### Want to help?
The easiest way to help is by "Starring" our repository - it helps more people find our code.
We always need those volunteering positions:
- [Check out our list of volunteer positions](https://forum.armbian.com/staffapplications/) and choose what you want to do ❤️
- [Mirror our download infrastructure](https://github.com/armbian/mirror/) ❤️
- [Donate](https://www.armbian.com/donate)! ❤️
- [Code reviewer](https://forum.armbian.com/staffapplications/application/23-code-reviewer/)
- [Build framework maintainer](https://forum.armbian.com/staffapplications/application/9-build-framework-maintainer/)
- [Test Automation Engineer](https://forum.armbian.com/staffapplications/application/19-test-automation-engineer/)
### Want to become a maintainer?
Please review the [Board Maintainers Procedures and Guidelines](https://docs.armbian.com/Board_Maintainers_Procedures_and_Guidelines/) and [apply](https://forum.armbian.com/staffapplications/application/8-single-board-computer-maintainer/) !
### Want to become a developer?
To help with development, review [this document](CONTRIBUTING.md) and move straight to the code:
- [release related tickets](https://www.armbian.com/participate/)
- [review pull requests](https://github.com/armbian/build/pulls?q=is%3Apr+is%3Aopen+review%3Arequired+label%3A%22Needs+review%22)
- ticket dashboard for [junior](https://armbian.atlassian.net/jira/dashboards/10000) and [seniors](https://armbian.atlassian.net/jira/dashboards/10103) developers
Just apply and follow!
## Support
@ -216,9 +219,9 @@ Free support:
## Contact
- [Forums](https://forum.armbian.com) for Participate in Armbian
- IRC: `#armbian` on Libera.chat
- IRC: `#armbian` on Libera.chat / oftc.net
- Discord: [https://discord.gg/armbian](https://discord.gg/armbian)
- Follow [@armbian](https://twitter.com/armbian) on X (formerly known as Twitter), [Fosstodon](https://fosstodon.org/@armbian) or [LinkedIn](https://www.linkedin.com/company/armbian).
- Follow [@armbian](https://twitter.com/armbian) on 𝕏 (formerly known as Twitter), [Fosstodon](https://fosstodon.org/@armbian) or [LinkedIn](https://www.linkedin.com/company/armbian).
- Bugs: [issues](https://github.com/armbian/build/issues) / [JIRA](https://armbian.atlassian.net/jira/dashboards/10000)
- Office hours: [Wednesday, 12 midday, 18 afternoon, CET](https://calendly.com/armbian/office-hours)

212
action.yml Normal file
View File

@ -0,0 +1,212 @@
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)"
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@v4
with:
repository: armbian/os
fetch-depth: 0
clean: false
path: os
- name: "Checkout Armbian build framework"
uses: actions/checkout@v4
with:
repository: armbian/build
fetch-depth: 0
clean: false
path: build
- name: "Checkout customisations"
uses: actions/checkout@v4
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/
#[[ -d custom/userpatches ]] &&
rsync -av custom/userpatches/. build/userpatches/
- 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 and checkout
cd build
git checkout ${{ inputs.armbian_branch }}
# 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: "${{ 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"

View File

@ -19,14 +19,14 @@ case $BRANCH in
legacy)
declare -g KERNEL_MAJOR_MINOR="5.15" # Major and minor versions of this kernel.
KERNELBRANCH='branch:linux-5.15.y'
KERNELBRANCH='tag:v5.15.139'
;;
current)
declare -g KERNEL_MAJOR_MINOR="6.1" # Major and minor versions of this kernel.
KERNELBRANCH='branch:linux-6.1.y'
KERNELBRANCH='tag:v6.1.63'
;;

View File

@ -40,13 +40,13 @@ case $BRANCH in
current)
declare -g KERNEL_MAJOR_MINOR="6.1" # Major and minor versions of this kernel. For mainline caching.
KERNELBRANCH='branch:linux-6.1.y'
KERNELBRANCH='tag:v6.1.63'
KERNELPATCHDIR='meson64-current'
;;
edge)
declare -g KERNEL_MAJOR_MINOR="6.6" # Major and minor versions of this kernel. For mainline caching.
KERNELBRANCH='branch:linux-6.6.y'
KERNELBRANCH='tag:v6.6.2'
KERNELPATCHDIR='meson64-edge'
;;

View File

@ -47,7 +47,7 @@ case $BRANCH in
current)
declare -g KERNEL_MAJOR_MINOR="6.1" # Major and minor versions of this kernel.
KERNELBRANCH="branch:linux-6.1.y"
KERNELBRANCH="tag:v6.1.63"
KERNELPATCHDIR='meson-'$BRANCH
;;
@ -55,7 +55,7 @@ case $BRANCH in
edge)
declare -g KERNEL_MAJOR_MINOR="6.6" # Major and minor versions of this kernel.
KERNELBRANCH="branch:linux-6.6.y"
KERNELBRANCH="tag:v6.6.2"
KERNELPATCHDIR='meson-'$BRANCH
;;

View File

@ -144,7 +144,7 @@ case $BRANCH in
current)
declare -g KERNEL_MAJOR_MINOR="6.1" # Major and minor versions of this kernel.
KERNELBRANCH="branch:linux-6.1.y"
KERNELBRANCH="tag:v6.1.63"
KERNELPATCHDIR='rockchip64-'$BRANCH
LINUXFAMILY=rockchip64
LINUXCONFIG='linux-rockchip64-'$BRANCH
@ -154,7 +154,7 @@ case $BRANCH in
KERNELPATCHDIR='rockchip64-'$BRANCH
declare -g KERNEL_MAJOR_MINOR="6.6" # Major and minor versions of this kernel.
KERNELBRANCH="branch:linux-6.6.y"
KERNELBRANCH="tag:v6.6.2"
LINUXFAMILY=rockchip64
LINUXCONFIG='linux-rockchip64-'$BRANCH

View File

@ -23,7 +23,7 @@ case "${BRANCH}" in
declare -g DISTRO_GENERIC_KERNEL=no
declare -g LINUXCONFIG="linux-uefi-${LINUXFAMILY}-${BRANCH}"
declare -g KERNEL_MAJOR_MINOR="5.15" # Major and minor versions of this kernel. For mainline caching.
declare -g KERNELBRANCH="branch:linux-5.15.y" # Branch or tag to build from. It should match MAJOR_MINOR
declare -g KERNELBRANCH="tag:v5.15.139" # Branch or tag to build from. It should match MAJOR_MINOR
declare -g KERNELPATCHDIR="uefi-${LINUXFAMILY}-${BRANCH}" # Might be empty.
;;
@ -32,7 +32,7 @@ case "${BRANCH}" in
declare -g DISTRO_GENERIC_KERNEL=no
declare -g LINUXCONFIG="linux-uefi-${LINUXFAMILY}-${BRANCH}"
declare -g KERNEL_MAJOR_MINOR="6.1" # Major and minor versions of this kernel. For mainline caching.
declare -g KERNELBRANCH="branch:linux-6.1.y" # Branch or tag to build from. It should match MAJOR_MINOR
declare -g KERNELBRANCH="tag:v6.1.63" # Branch or tag to build from. It should match MAJOR_MINOR
declare -g KERNELPATCHDIR="uefi-${LINUXFAMILY}-${BRANCH}" # Might be empty.
;;
@ -41,7 +41,7 @@ case "${BRANCH}" in
declare -g DISTRO_GENERIC_KERNEL=no
declare -g LINUXCONFIG="linux-uefi-${LINUXFAMILY}-${BRANCH}"
declare -g KERNEL_MAJOR_MINOR="6.6" # Major and minor versions of this kernel.
declare -g KERNELBRANCH='branch:linux-6.6.y'
declare -g KERNELBRANCH='tag:v6.6.2'
declare -g KERNELPATCHDIR="uefi-${LINUXFAMILY}-${BRANCH}" # Might be empty.
;;
esac

View File

@ -20,13 +20,13 @@ case "${BRANCH}" in
current)
declare -g KERNEL_MAJOR_MINOR="6.1"
declare -g KERNELBRANCH="branch:linux-6.1.y"
declare -g KERNELBRANCH="tag:v6.1.63"
;;
edge)
declare -g KERNEL_MAJOR_MINOR="6.5"
declare -g KERNELBRANCH='branch:linux-6.5.y'
declare -g KERNELBRANCH='tag:v6.5.12'
EXTRAWIFI="no"
;;

View File

@ -42,7 +42,7 @@ case $BRANCH in
current)
declare -g KERNEL_MAJOR_MINOR="6.1" # Major and minor versions of this kernel.
KERNELBRANCH="branch:linux-6.1.y"
KERNELBRANCH="tag:v6.1.63"
LINUXCONFIG='linux-media-'$BRANCH
KERNELPATCHDIR='media-'$BRANCH
LINUXFAMILY=media

View File

@ -21,7 +21,7 @@ case $BRANCH in
current)
declare -g KERNEL_MAJOR_MINOR="6.1" # Major and minor versions of this kernel.
KERNELBRANCH='branch:linux-6.1.y'
KERNELBRANCH='tag:v6.1.63'
;;

View File

@ -57,13 +57,13 @@ case $BRANCH in
current)
declare -g KERNEL_MAJOR_MINOR="5.15" # Major and minor versions of this kernel.
KERNELBRANCH='branch:linux-5.15.y'
KERNELBRANCH='tag:v5.15.139'
;;
edge)
declare -g KERNEL_MAJOR_MINOR="6.6" # Major and minor versions of this kernel.
KERNELBRANCH='branch:linux-6.6.y'
KERNELBRANCH='tag:v6.6.2'
;;
esac

View File

@ -28,7 +28,7 @@ case $BRANCH in
edge)
declare -g KERNEL_MAJOR_MINOR="6.1" # Major and minor versions of this kernel.
KERNELBRANCH='branch:linux-6.1.y'
KERNELBRANCH='tag:v6.1.63'
KERNELDIR='linux-odroidxu4'
;;

View File

@ -30,14 +30,14 @@ case $BRANCH in
current)
declare -g KERNEL_MAJOR_MINOR="6.1" # Major and minor versions of this kernel.
KERNELBRANCH='branch:linux-6.1.y'
KERNELBRANCH='tag:v6.1.63'
;;
edge)
declare -g KERNEL_MAJOR_MINOR="6.6" # Major and minor versions of this kernel.
KERNELBRANCH='branch:linux-6.6.y'
KERNELBRANCH='tag:v6.6.2'
;;

View File

@ -17,7 +17,7 @@ case $BRANCH in
edge)
declare -g KERNEL_MAJOR_MINOR="6.6" # Major and minor versions of this kernel (for armbian-next)
declare -g KERNELBRANCH='branch:linux-6.6.y'
declare -g KERNELBRANCH='tag:v6.6.2'
KERNELPATCHDIR='archive/rk3568-odroid-6.6' # @TODO fix # patches for overlays et al
;;

View File

@ -28,14 +28,14 @@ case $BRANCH in
current)
declare -g KERNEL_MAJOR_MINOR="6.1" # Major and minor versions of this kernel.
KERNELBRANCH='branch:linux-6.1.y'
KERNELBRANCH='tag:v6.1.63'
;;
edge)
declare -g KERNEL_MAJOR_MINOR="6.6" # Major and minor versions of this kernel.
KERNELBRANCH='branch:linux-6.6.y'
KERNELBRANCH='tag:v6.6.2'
;;
esac

View File

@ -15,7 +15,7 @@ case "${BRANCH}" in
edge)
declare -g KERNEL_MAJOR_MINOR="6.1" # Major and minor versions of this kernel. For mainline caching.
declare -g KERNELBRANCH='branch:linux-6.1.y'
declare -g KERNELBRANCH='tag:v6.1.63'
;;

View File

@ -9,7 +9,7 @@
BOOTBRANCH='tag:v2021.04'
declare -g KERNEL_MAJOR_MINOR="5.15" # Major and minor versions of this kernel.
KERNELBRANCH='branch:linux-5.15.y'
KERNELBRANCH='tag:v5.15.139'
ARCH=arm64
#UBOOT_TARGET_MAP=";;u-boot.bin"

View File

@ -10,14 +10,14 @@ function post_family_config__wsl2() {
function post_family_config_branch_current__wsl2() {
declare -g KERNEL_MAJOR_MINOR="6.1" # Major and minor versions of this kernel. For mainline caching.
declare -g KERNELBRANCH="branch:linux-6.1.y" # Branch or tag to build from. It should match MAJOR_MINOR
declare -g KERNELBRANCH="tag:v6.1.63" # Branch or tag to build from. It should match MAJOR_MINOR
declare -g KERNELPATCHDIR="archive/${LINUXFAMILY}-${KERNEL_MAJOR_MINOR}" # Microsoft patches
display_alert "Using mainline kernel ${KERNELBRANCH} for" "${BOARD}" "info"
}
function post_family_config_branch_edge__wsl2() {
declare -g KERNEL_MAJOR_MINOR="6.6" # Major and minor versions of this kernel. For mainline caching.
declare -g KERNELBRANCH="branch:linux-6.6.y" # Branch or tag to build from. It should match MAJOR_MINOR
declare -g KERNELBRANCH="tag:v6.6.2" # Branch or tag to build from. It should match MAJOR_MINOR
declare -g KERNELPATCHDIR="archive/${LINUXFAMILY}-${KERNEL_MAJOR_MINOR}" # Microsoft patches
display_alert "Using mainline kernel ${KERNELBRANCH} for" "${BOARD}" "info"
}