diff --git a/.github/workflows/generate-rootfs.yml b/.github/workflows/generate-rootfs.yml new file mode 100644 index 00000000000..9a53a150d08 --- /dev/null +++ b/.github/workflows/generate-rootfs.yml @@ -0,0 +1,59 @@ +# Generate root file system for CI/CD cross build +name: 'Generate RootFS' + +on: + pull_request: + branches: + - master + - release/* + paths: + - '.github/workflows/generate-rootfs.yml' + - 'tools/cross/**' + push: + branches: + - master + - release/* + paths: + - '.github/workflows/generate-rootfs.yml' + - 'tools/cross/**' + schedule: + # Every 1st day of the month at midnight (korean time zone, UTC+9:00) + - cron: '0 15 1 * *' + workflow_dispatch: + +jobs: + gen-rootfs: + if: github.repository_owner == 'Samsung' + runs-on: ubuntu-22.04 + strategy: + matrix: + os: [ focal, jammy, noble ] + arch: [ arm, aarch64 ] + fail-fast: false + + steps: + - name: Install qemu + uses: docker/setup-qemu-action@v3 + + - name: Install debootstrap + run: sudo apt-get update && sudo apt-get install -y debootstrap + + - name: Checkout + uses: actions/checkout@v4 + + - name: Generate RootFS + run: | + pushd tools/cross + sudo ./install_rootfs.sh ${{ matrix.arch }} ${{ matrix.os }} --skipunmount + sudo umount --recursive rootfs || true + popd + + - name: Archive RootFS for PR + uses: actions/upload-artifact@v4 + with: + name: rootfs_${{ matrix.arch }}_${{ matrix.os }} + # Set short-lived artifacts for PRs only to avoid cluttering the storage. + retention-days: ${{ github.event_name == 'pull_request' && '3' || '60' }} + path: | + tools/cross/rootfs/${{ matrix.arch }}/usr/ + tools/cross/rootfs/${{ matrix.arch }}/etc/