-
Notifications
You must be signed in to change notification settings - Fork 9
64 lines (62 loc) · 2.9 KB
/
generate-mirror.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# /********************************************************************************
# * Copyright (c) 2022 Contributors to the Eclipse Foundation
# *
# * See the NOTICE file(s) distributed with this work for additional
# * information regarding copyright ownership.
# *
# * This program and the accompanying materials are made available under the
# * terms of the Apache License 2.0 which is available at
# * https://www.apache.org/licenses/LICENSE-2.0
# *
# * SPDX-License-Identifier: Apache-2.0
# ********************************************************************************/
#
# Download all the sources of the Leda / Yocto packages, create a tar ball
# in the build/downloads and upload the *.tar.gz files to the remote downloads mirror.
# - Runs every Sunday
# - Archives the source from upstream repositories
# - Synchronizes to remote mirror on Azure Storage
# - Optimizes build time
# - Prevents slow repositories from slowing down the build
# - Prevents build failures due to offline upstream repositories or temporary unavailability
# - Decreases load on upstream repositories
# - Typical size of mirror is about 15GB
#
# Slow repositories are:
# - sourceware.org (binutils, cross-localedef)
# - git.yoctoproject.org (linux-yocto)
#
name: Generate Yocto Mirror
on:
workflow_dispatch:
schedule:
- cron: '35 13 * * SUN'
jobs:
generate-mirror:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install tools
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends socat file gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint xterm python3-subunit mesa-common-dev zstd liblz4-tool tmux mc skopeo fdisk ruby-full jq libvirt-clients libvirt-daemon-system qemu-system-x86 qemu-system-arm qemu-kvm squashfs-tools rauc python3-newt ca-certificates curl gnupg lsb-release
- name: Install kas
run: sudo pip3 install kas
- name: Fetch all
continue-on-error: true
run: |
KAS_MACHINE=qemux86-64 kas shell -c 'bitbake --continue --runall=fetch sdv-image-all' kas/generate-mirror.yaml
KAS_MACHINE=qemuarm64 kas shell -c 'bitbake --continue --runall=fetch sdv-image-all' kas/generate-mirror.yaml
KAS_MACHINE=raspberrypi4-64 kas shell -c 'bitbake --continue --runall=fetch sdv-image-all' kas/generate-mirror.yaml
- name: List archives
continue-on-error: true
run: ls -al build/downloads/
- uses: bacongobbler/azure-blob-storage-upload@v3.0.0
if: ${{ github.repository_owner == 'SoftwareDefinedVehicle' }}
with:
source_dir: 'build/downloads/'
container_name: 'downloads'
extra_args: '--pattern *.tar.*[!done]'
overwrite: 'sync'
connection_string: ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }}