Files
cache/.github/workflows/build.yml
Igor Pečovnik 7fb3ce110f Merge pull request #9 from armbian/dependabot/github_actions/ncipollo/release-action-1.12.0
Bump ncipollo/release-action from 1.11.2 to 1.12.0
2023-02-10 18:46:22 +01:00

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