armbian-build/.github/workflows/build-images.yml
2022-06-23 08:29:24 +02:00

323 lines
9.7 KiB
YAML

name: Build Images
#
# Generates beta, stable or RC images. You can select build runners. By default it generates all images, but you can build images only for one target
# Images are placed at www.arnmbian.com and nighly beta also at https://github.com/armbian/build/releases/tag/latest
#
on:
workflow_run:
workflows: ["Build train"]
types:
- completed
workflow_dispatch:
inputs:
choice:
type: choice
description: Build targets
options:
- beta
- stable
- rc
runner:
type: choice
description: Build runners for CLI
options:
- small
- ubuntu-latest
sourcerepo:
description: Source repository
required: false
default: 'nightly'
packagesrepo:
type: choice
description: Beta packages repository
options:
- yes
- no
advanced:
description: 'Single board (grep -w tinkerboard |)'
required: false
default: ''
jobs:
Cancel:
if: ${{ github.repository_owner == 'Armbian' && github.event.schedule == '' }}
name: "Cancel currently active"
runs-on: small
steps:
- uses: n1hility/cancel-previous-runs@v2
with:
token: ${{ secrets.GITHUB_TOKEN }}
fake:
if: ${{ github.repository_owner == 'Armbian' }}
runs-on: small
needs: [ Cancel ]
name: Source changes
outputs:
changes: ${{steps.list_releases.outputs.changes}}
steps:
- run: |
echo "not empty" > changes
- uses: actions/checkout@v3
if: ${{ github.repository_owner == 'Armbian' && github.event.inputs.choice != 'stable' && github.event.inputs.choice != 'rc' }}
with:
fetch-depth: 1
path: build
clean: false
ref: nightly
- name: "Get latest release version"
if: ${{ github.repository_owner == 'Armbian' && github.event.inputs.choice != 'stable' && github.event.inputs.choice != 'rc' }}
id: list_releases
run: |
RELE=$(curl -ks https://api.github.com/repos/armbian/build/releases/latest ^| grep "browser_download_url" | grep -o -P '(?<=trunk.).*(?=_)' | cut -d"_" -f1 | sort | uniq)
SOUR=$(cat build/VERSION | cut -d"." -f4-4)
# skip if version in git is the same as at release
if [[ "$RELE" == "$SOUR" ]]; then
echo ::set-output name=changes::$(echo 'true')
fi
- uses: actions/upload-artifact@v3
with:
path: changes
name: changes
if-no-files-found: ignore
generaterelease:
needs: [ fake ]
if: ${{ github.repository_owner == 'Armbian' && needs.fake.outputs.changes != 'true' }}
runs-on: ubuntu-latest
name: "Update latest release"
steps:
- run: |
echo "Env: ${{ github.event.inputs.choice }}"
echo "Env: ${{ github.event.inputs.runner }}"
echo "Env: ${{ github.event.inputs.sourcerepo }}"
echo "Branch: ${{ github.event.inputs.branch }}"
- uses: actions/checkout@v3
if: ${{ github.repository_owner == 'Armbian' && github.event.inputs.choice != 'stable' && github.event.inputs.choice != 'rc' }}
with:
fetch-depth: 1
- uses: dev-drprasad/delete-tag-and-release@v0.2.0
if: ${{ github.repository_owner == 'Armbian' && github.event.inputs.choice != 'stable' && github.event.inputs.choice != 'rc' }}
with:
delete_release: true
tag_name: latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: ncipollo/release-action@v1
if: ${{ github.repository_owner == 'Armbian' && github.event.inputs.choice != 'stable' && github.event.inputs.choice != 'rc' }}
with:
artifacts: "LICENSE"
tag: "latest"
name: "Build in progress"
bodyFile: ".github/Releases-wip.md"
allowUpdates: true
removeArtifacts: true
token: ${{ secrets.GITHUB_TOKEN }}
merge:
needs: [ generaterelease ]
uses: armbian/scripts/.github/workflows/merge-from-branch.yml@master
with:
branch: 'nightly'
runner: small
secrets:
GPG_KEY2: ${{ secrets.GPG_KEY2 }}
GPG_PASSPHRASE2: ${{ secrets.GPG_PASSPHRASE2 }}
x86:
needs: [ merge ]
uses: armbian/scripts/.github/workflows/build-with-docker.yml@master
with:
variant: 'cli:${{ github.event.inputs.choice }}'
sourcerepo: '${{ github.event.inputs.sourcerepo }}'
packagesrepo: '${{ github.event.inputs.packagesrepo }}'
runner: ubuntu-latest
part: 1
of: 1
include: 'grep uefi-x86 | ${{ github.event.inputs.advanced }}'
exclude: ''
uploading: false
secrets:
GPG_KEY1: ${{ secrets.GPG_KEY1 }}
GPG_PASSPHRASE1: ${{ secrets.GPG_PASSPHRASE1 }}
GPG_KEY2: ${{ secrets.GPG_KEY2 }}
GPG_PASSPHRASE2: ${{ secrets.GPG_PASSPHRASE2 }}
SCRIPTS_ACCESS_TOKEN: ${{ secrets.SCRIPTS_ACCESS_TOKEN }}
SSH_KEY_TORRENTS: ${{ secrets.KEY_TORRENTS }}
KNOWN_HOSTS_UPLOAD: ${{ secrets.KNOWN_HOSTS_UPLOAD }}
x86-desktop:
needs: [ merge ]
uses: armbian/scripts/.github/workflows/build-with-docker.yml@master
with:
variant: 'desktop:${{ github.event.inputs.choice }}'
sourcerepo: '${{ github.event.inputs.sourcerepo }}'
packagesrepo: '${{ github.event.inputs.packagesrepo }}'
runner: "big"
part: 1
of: 1
include: 'grep uefi-x86 | ${{ github.event.inputs.advanced }}'
exclude: ''
uploading: false
secrets:
GPG_KEY1: ${{ secrets.GPG_KEY1 }}
GPG_PASSPHRASE1: ${{ secrets.GPG_PASSPHRASE1 }}
GPG_KEY2: ${{ secrets.GPG_KEY2 }}
GPG_PASSPHRASE2: ${{ secrets.GPG_PASSPHRASE2 }}
SCRIPTS_ACCESS_TOKEN: ${{ secrets.SCRIPTS_ACCESS_TOKEN }}
SSH_KEY_TORRENTS: ${{ secrets.KEY_TORRENTS }}
KNOWN_HOSTS_UPLOAD: ${{ secrets.KNOWN_HOSTS_UPLOAD }}
cli1:
needs: [ merge ]
uses: armbian/scripts/.github/workflows/build-with-docker.yml@master
with:
variant: 'cli:${{ github.event.inputs.choice }}'
sourcerepo: '${{ github.event.inputs.sourcerepo }}'
packagesrepo: '${{ github.event.inputs.packagesrepo }}'
runner: ubuntu-latest
part: 1
of: 2
include: '${{ github.event.inputs.advanced }}'
exclude: 'grep -v uefi-x86 | '
uploading: false
secrets:
GPG_KEY1: ${{ secrets.GPG_KEY1 }}
GPG_PASSPHRASE1: ${{ secrets.GPG_PASSPHRASE1 }}
GPG_KEY2: ${{ secrets.GPG_KEY2 }}
GPG_PASSPHRASE2: ${{ secrets.GPG_PASSPHRASE2 }}
SCRIPTS_ACCESS_TOKEN: ${{ secrets.SCRIPTS_ACCESS_TOKEN }}
SSH_KEY_TORRENTS: ${{ secrets.KEY_TORRENTS }}
KNOWN_HOSTS_UPLOAD: ${{ secrets.KNOWN_HOSTS_UPLOAD }}
cli2:
needs: [ merge ]
uses: armbian/scripts/.github/workflows/build-with-docker.yml@master
with:
variant: 'cli:${{ github.event.inputs.choice }}'
sourcerepo: '${{ github.event.inputs.sourcerepo }}'
packagesrepo: '${{ github.event.inputs.packagesrepo }}'
runner: '${{ github.event.inputs.runner }}'
part: 2
of: 2
include: '${{ github.event.inputs.advanced }}'
exclude: 'grep -v uefi-x86 | '
uploading: false
secrets:
GPG_KEY1: ${{ secrets.GPG_KEY1 }}
GPG_PASSPHRASE1: ${{ secrets.GPG_PASSPHRASE1 }}
GPG_KEY2: ${{ secrets.GPG_KEY2 }}
GPG_PASSPHRASE2: ${{ secrets.GPG_PASSPHRASE2 }}
SCRIPTS_ACCESS_TOKEN: ${{ secrets.SCRIPTS_ACCESS_TOKEN }}
SSH_KEY_TORRENTS: ${{ secrets.KEY_TORRENTS }}
KNOWN_HOSTS_UPLOAD: ${{ secrets.KNOWN_HOSTS_UPLOAD }}
desktop1:
needs: [ merge ]
uses: armbian/scripts/.github/workflows/build-with-docker.yml@master
with:
variant: 'desktop:${{ github.event.inputs.choice }}'
sourcerepo: '${{ github.event.inputs.sourcerepo }}'
packagesrepo: '${{ github.event.inputs.packagesrepo }}'
runner: "big"
part: 1
of: 2
include: '${{ github.event.inputs.advanced }}'
exclude: 'grep -v uefi-x86 | '
uploading: false
secrets:
GPG_KEY1: ${{ secrets.GPG_KEY1 }}
GPG_PASSPHRASE1: ${{ secrets.GPG_PASSPHRASE1 }}
GPG_KEY2: ${{ secrets.GPG_KEY2 }}
GPG_PASSPHRASE2: ${{ secrets.GPG_PASSPHRASE2 }}
SCRIPTS_ACCESS_TOKEN: ${{ secrets.SCRIPTS_ACCESS_TOKEN }}
SSH_KEY_TORRENTS: ${{ secrets.KEY_TORRENTS }}
KNOWN_HOSTS_UPLOAD: ${{ secrets.KNOWN_HOSTS_UPLOAD }}
desktop2:
needs: [ merge ]
uses: armbian/scripts/.github/workflows/build-with-docker.yml@master
with:
variant: 'desktop:${{ github.event.inputs.choice }}'
sourcerepo: '${{ github.event.inputs.sourcerepo }}'
packagesrepo: '${{ github.event.inputs.packagesrepo }}'
runner: "big"
part: 2
of: 2
include: '${{ github.event.inputs.advanced }}'
exclude: 'grep -v uefi-x86 | '
uploading: false
secrets:
GPG_KEY1: ${{ secrets.GPG_KEY1 }}
GPG_PASSPHRASE1: ${{ secrets.GPG_PASSPHRASE1 }}
GPG_KEY2: ${{ secrets.GPG_KEY2 }}
GPG_PASSPHRASE2: ${{ secrets.GPG_PASSPHRASE2 }}
SCRIPTS_ACCESS_TOKEN: ${{ secrets.SCRIPTS_ACCESS_TOKEN }}
SSH_KEY_TORRENTS: ${{ secrets.KEY_TORRENTS }}
KNOWN_HOSTS_UPLOAD: ${{ secrets.KNOWN_HOSTS_UPLOAD }}
jobsend:
name: finish
needs: [x86,x86-desktop,cli1,desktop1,cli2,desktop2]
runs-on: [ubuntu-latest]
if: ${{ github.repository_owner == 'Armbian' && github.event.inputs.choice != 'stable' && github.event.inputs.choice != 'rc' }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 1
- uses: ncipollo/release-action@v1
with:
tag: "latest"
bodyFile: ".github/Releases.md"
name: "Automated builds"
allowUpdates: true
token: ${{ secrets.GITHUB_TOKEN }}