mirror of
https://github.com/armbian/cache.git
synced 2026-01-06 10:36:52 -08:00
424 lines
13 KiB
YAML
424 lines
13 KiB
YAML
name: Build Rootfs Cache
|
|
#
|
|
# Generates rootfs cache and uploads it to:
|
|
#
|
|
# https://github.com/armbian/cache/releases/tag/latest
|
|
# https://cache.armbian.com/rootfs/
|
|
#
|
|
|
|
on:
|
|
# schedule:
|
|
# - cron: "30 0 15 * *" # Runs at 00:30 UTC on the 15st of every month.
|
|
|
|
workflow_dispatch:
|
|
|
|
env:
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
jobs:
|
|
|
|
release-start:
|
|
permissions:
|
|
contents: none
|
|
name: Prepare
|
|
if: ${{ github.repository_owner == 'Armbian' }}
|
|
runs-on: [Linux]
|
|
outputs:
|
|
rootfscache_version: ${{ steps.env-vars.outputs.rootfscache_version }}
|
|
|
|
steps:
|
|
|
|
- name: Cancel Previous Runs
|
|
uses: styfle/cancel-workflow-action@0.11.0
|
|
with:
|
|
access_token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Get latest cacher release
|
|
uses: armbian/actions/latest-cache@main
|
|
|
|
- name: Increment cache number
|
|
id: env-vars
|
|
run: |
|
|
|
|
mkdir -p rootfscache
|
|
echo "${{ env.ROOTFSCACHE_VERSION }}" | tee rootfscache/version
|
|
echo "rootfscache_version=${{ env.ROOTFSCACHE_VERSION }}" >> $GITHUB_OUTPUT
|
|
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
path: rootfscache
|
|
name: version
|
|
|
|
- name: Purge old releases
|
|
uses: Vucko130/delete-older-releases@v0.2.2
|
|
with:
|
|
keep_latest: 2
|
|
delete_tags: true
|
|
delete_tag_pattern: "0"
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.CR_PAT }}
|
|
|
|
- name: Checkout cache repository
|
|
uses: actions/checkout@v3
|
|
with:
|
|
path: cache
|
|
|
|
- name: Update release
|
|
uses: ncipollo/release-action@v1.12.0
|
|
with:
|
|
tag: "${{ env.ROOTFSCACHE_VERSION }}"
|
|
name: "Build in progress"
|
|
bodyFile: "cache/.github/Releases-wip.md"
|
|
allowUpdates: true
|
|
removeArtifacts: true
|
|
token: ${{ secrets.CR_PAT }}
|
|
|
|
x86-min:
|
|
needs: [release-start]
|
|
permissions:
|
|
contents: none
|
|
uses: armbian/scripts/.github/workflows/update-cache.yml@master
|
|
|
|
with:
|
|
|
|
variant: 'minimal:uefi-x86'
|
|
runner: 'small'
|
|
rootfscache_version: ${{ needs.release-start.outputs.rootfscache_version }}
|
|
|
|
secrets:
|
|
PAT1: ${{ secrets.CR_PAT }}
|
|
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-srv:
|
|
needs: [release-start]
|
|
permissions:
|
|
contents: none
|
|
uses: armbian/scripts/.github/workflows/update-cache.yml@master
|
|
|
|
with:
|
|
|
|
variant: 'server:uefi-x86'
|
|
runner: 'small'
|
|
rootfscache_version: ${{ needs.release-start.outputs.rootfscache_version }}
|
|
|
|
secrets:
|
|
PAT1: ${{ secrets.CR_PAT }}
|
|
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-x:
|
|
needs: [release-start]
|
|
permissions:
|
|
contents: none
|
|
uses: armbian/scripts/.github/workflows/update-cache.yml@master
|
|
|
|
with:
|
|
|
|
variant: 'desktop:uefi-x86'
|
|
runner: 'ubuntu-latest'
|
|
rootfscache_version: ${{ needs.release-start.outputs.rootfscache_version }}
|
|
|
|
secrets:
|
|
PAT1: ${{ secrets.CR_PAT }}
|
|
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 }}
|
|
|
|
armhf-min:
|
|
needs: [release-start]
|
|
permissions:
|
|
contents: none
|
|
uses: armbian/scripts/.github/workflows/update-cache.yml@master
|
|
|
|
with:
|
|
|
|
variant: 'minimal:tinkerboard'
|
|
runner: 'cache,aarch64'
|
|
rootfscache_version: ${{ needs.release-start.outputs.rootfscache_version }}
|
|
|
|
secrets:
|
|
PAT1: ${{ secrets.CR_PAT }}
|
|
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 }}
|
|
|
|
|
|
armhf-srv:
|
|
needs: [release-start]
|
|
permissions:
|
|
contents: none
|
|
uses: armbian/scripts/.github/workflows/update-cache.yml@master
|
|
|
|
with:
|
|
|
|
variant: 'server:tinkerboard'
|
|
runner: 'cache,aarch64'
|
|
rootfscache_version: ${{ needs.release-start.outputs.rootfscache_version }}
|
|
|
|
secrets:
|
|
PAT1: ${{ secrets.CR_PAT }}
|
|
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 }}
|
|
|
|
armhf-x:
|
|
needs: [release-start]
|
|
permissions:
|
|
contents: none
|
|
uses: armbian/scripts/.github/workflows/update-cache.yml@master
|
|
|
|
with:
|
|
variant: 'desktop:tinkerboard'
|
|
runner: 'cache,aarch64'
|
|
rootfscache_version: ${{ needs.release-start.outputs.rootfscache_version }}
|
|
|
|
secrets:
|
|
PAT1: ${{ secrets.CR_PAT }}
|
|
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 }}
|
|
|
|
arm64-min:
|
|
needs: [release-start]
|
|
permissions:
|
|
contents: none
|
|
uses: armbian/scripts/.github/workflows/update-cache.yml@master
|
|
|
|
with:
|
|
|
|
variant: 'minimal:uefi-arm64'
|
|
runner: 'cache,aarch64'
|
|
rootfscache_version: ${{ needs.release-start.outputs.rootfscache_version }}
|
|
|
|
secrets:
|
|
PAT1: ${{ secrets.CR_PAT }}
|
|
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 }}
|
|
|
|
arm64-srv:
|
|
needs: [release-start]
|
|
permissions:
|
|
contents: none
|
|
uses: armbian/scripts/.github/workflows/update-cache.yml@master
|
|
|
|
with:
|
|
|
|
variant: 'server:uefi-arm64'
|
|
runner: 'cache,aarch64'
|
|
rootfscache_version: ${{ needs.release-start.outputs.rootfscache_version }}
|
|
|
|
secrets:
|
|
PAT1: ${{ secrets.CR_PAT }}
|
|
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 }}
|
|
|
|
arm64-x:
|
|
needs: [release-start]
|
|
permissions:
|
|
contents: none
|
|
uses: armbian/scripts/.github/workflows/update-cache.yml@master
|
|
|
|
with:
|
|
variant: 'desktop:uefi-arm64'
|
|
runner: 'cache,aarch64'
|
|
rootfscache_version: ${{ needs.release-start.outputs.rootfscache_version }}
|
|
|
|
secrets:
|
|
PAT1: ${{ secrets.CR_PAT }}
|
|
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 }}
|
|
|
|
riscv64-min:
|
|
needs: [release-start]
|
|
permissions:
|
|
contents: none
|
|
uses: armbian/scripts/.github/workflows/update-cache.yml@master
|
|
|
|
with:
|
|
|
|
variant: 'minimal:uefi-riscv64'
|
|
runner: 'cache,RISCV64'
|
|
rootfscache_version: ${{ needs.release-start.outputs.rootfscache_version }}
|
|
|
|
secrets:
|
|
PAT1: ${{ secrets.CR_PAT }}
|
|
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 }}
|
|
|
|
riscv64-srv:
|
|
needs: [release-start]
|
|
permissions:
|
|
contents: none
|
|
uses: armbian/scripts/.github/workflows/update-cache.yml@master
|
|
|
|
with:
|
|
|
|
variant: 'server:uefi-riscv64'
|
|
runner: 'cache,RISCV64'
|
|
rootfscache_version: ${{ needs.release-start.outputs.rootfscache_version }}
|
|
|
|
secrets:
|
|
PAT1: ${{ secrets.CR_PAT }}
|
|
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 }}
|
|
|
|
riscv64-x:
|
|
needs: [release-start]
|
|
permissions:
|
|
contents: none
|
|
uses: armbian/scripts/.github/workflows/update-cache.yml@master
|
|
|
|
with:
|
|
variant: 'desktop:uefi-riscv64'
|
|
runner: 'cache,RISCV64'
|
|
rootfscache_version: ${{ needs.release-start.outputs.rootfscache_version }}
|
|
|
|
secrets:
|
|
PAT1: ${{ secrets.CR_PAT }}
|
|
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:
|
|
needs: [x86-min,x86-srv,x86-x,armhf-min,armhf-srv,armhf-x,arm64-min,arm64-srv,arm64-x,riscv64-min,riscv64-srv,riscv64-x]
|
|
permissions:
|
|
contents: none
|
|
name: Release finish
|
|
runs-on: Linux
|
|
if: ${{ github.repository_owner == 'Armbian' }}
|
|
steps:
|
|
|
|
- name: Runner prepare
|
|
uses: armbian/actions/runner-prepare@main
|
|
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: '1'
|
|
repository: armbian/build
|
|
path: build
|
|
clean: false
|
|
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: '1'
|
|
path: cache
|
|
clean: false
|
|
|
|
- name: Install SSH key for storage
|
|
uses: shimataro/ssh-key-action@v2
|
|
with:
|
|
|
|
key: ${{ secrets.KEY_TORRENTS }}
|
|
known_hosts: ${{ secrets.KNOWN_HOSTS_UPLOAD }}
|
|
if_key_exists: replace
|
|
|
|
- name: Cleanup
|
|
run: |
|
|
|
|
rm -f rootfscache.version
|
|
|
|
- name: Download artifact
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
path: rootfscache
|
|
name: version
|
|
|
|
- name: Mount upload folders
|
|
run: |
|
|
|
|
echo "ROOTFSCACHE_VERSION=$(cat rootfscache/version)" >> $GITHUB_ENV
|
|
sudo mountpoint -q build/cache/rootfs.upload && sudo fusermount -u build/cache/rootfs.upload || true
|
|
sudo apt-get -y -qq install sshfs
|
|
mkdir -p build/cache/rootfs.upload || true
|
|
if [[ $(curl -s http://ifconfig.me) == "93.103.15.56" ]]; then
|
|
sudo mount nas:/tank/armbian/users.armbian.com/upload/rootfs build/cache/rootfs.upload || true
|
|
else
|
|
sudo sshfs upload@users.armbian.com:/rootfs build/cache/rootfs.upload -o IdentityFile=~/.ssh/id_rsa -o reconnect -o nonempty,allow_other || true
|
|
sudo sshfs upload@users.armbian.com:/rootfs build/cache/rootfs.upload -o IdentityFile=~/.ssh/id_rsa -o reconnect -o allow_other || true
|
|
fi
|
|
# remove true in sshfs when all runners are on jammy
|
|
sudo df
|
|
|
|
- name: Upload
|
|
uses: ncipollo/release-action@v1.12.0
|
|
if: ${{ github.repository_owner == 'Armbian' }}
|
|
with:
|
|
tag: "${{ env.ROOTFSCACHE_VERSION }}"
|
|
bodyFile: "cache/.github/Releases.md"
|
|
name: "Rootfs cache #${{ env.ROOTFSCACHE_VERSION }}"
|
|
allowUpdates: true
|
|
token: ${{ secrets.CR_PAT }}
|
|
|
|
- name: Delete obsolete folders
|
|
run: |
|
|
|
|
find build/cache/rootfs.upload -mindepth 1 -maxdepth 1 -type d | sort -r | tail -n +3 | xargs sudo rm -r 2>/dev/null || true
|
|
|
|
- name: Generate cache list file
|
|
run: |
|
|
|
|
cd build/cache/rootfs.upload
|
|
find * -maxdepth 0 -type d | sudo tee list
|
|
|
|
- name: Cleanup
|
|
uses: armbian/actions/runner-prepare@main
|