123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- #=================================================
- # https://github.com/P3TERX/Actions-OpenWrt
- # Description: Build OpenWrt using GitHub Actions
- # Lisence: MIT
- # Author: P3TERX
- # Blog: https://p3terx.com
- #=================================================
- name: Build OpenWrt
- on:
- # push:
- # branches:
- # - master
- schedule:
- - cron: 0 16 * * 6
- watch:
- types: started
- env:
- REPO_URL: https://github.com/openwrt/openwrt
- REPO_BRANCH: master
- CONFIG_FILE: X86_64.config
- DIY_SH: diy.sh
- FREE_UP_DISK: true
- SSH_ACTIONS: false
- UPLOAD_BIN_DIR: false
- UPLOAD_FIRMWARE: true
- UPLOAD_COWTRANSFER: false
- TZ: Asia/Shanghai
- jobs:
- build:
- if: github.event.repository.owner.id == github.event.sender.id
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@master
- - name: Initialization environment
- env:
- DEBIAN_FRONTEND: noninteractive
- run: |
- sudo swapoff /swapfile
- sudo rm -rf /swapfile /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc
- sudo -E apt-get -qq update
- sudo -E apt-get -qq install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs gcc-multilib g++-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler ccache xsltproc rename
- sudo -E apt-get -qq autoremove --purge
- sudo -E apt-get -qq clean
- curl -fsSL https://raw.githubusercontent.com/P3TERX/dotfiles/master/.bashrc >> ~/.bashrc
- - name: Clone source code
- run: git clone --depth 1 $REPO_URL -b $REPO_BRANCH openwrt
-
- - name: Free up disk space
- if: env.FREE_UP_DISK == 'true'
- env:
- DEBIAN_FRONTEND: noninteractive
- run: |
- sudo mkdir -p -m 777 /mnt/openwrt/build_dir/hostpkg /mnt/openwrt/build_dir/host openwrt/build_dir /mnt/openwrt/dl /mnt/openwrt/feeds /mnt/openwrt/staging_dir
- ln -s /mnt/openwrt/build_dir/hostpkg openwrt/build_dir/hostpkg
- ln -s /mnt/openwrt/build_dir/host openwrt/build_dir/host
- ln -s /mnt/openwrt/dl openwrt/dl
- ln -s /mnt/openwrt/staging_dir openwrt/staging_dir
- - name: Update feeds
- run: cd openwrt && ./scripts/feeds update -a
- - name: Install feeds
- run: cd openwrt && ./scripts/feeds install -a
- - name: Load custom configuration
- run: |
- [ -e files ] && mv files openwrt/files
- [ -e $CONFIG_FILE ] && mv $CONFIG_FILE openwrt/.config
- chmod +x $DIY_SH
- cd openwrt
- ../$DIY_SH
- make defconfig
- - name: SSH connection to Actions
- uses: P3TERX/debugger-action@master
- if: env.SSH_ACTIONS == 'true'
- - name: Download package
- id: package
- run: |
- cd openwrt
- make download -j8
- find dl -size -1024c -exec ls -l {} \;
- find dl -size -1024c -exec rm -f {} \;
- - name: Compile the firmware
- id: compile
- run: |
- cd openwrt
- echo -e "$(($(nproc)+1)) thread compile"
- make -j$(($(nproc)+1)) || make -j1 V=s
- echo "::set-output name=status::success"
- - name: Upload bin directory
- uses: actions/upload-artifact@master
- if: steps.compile.outputs.status == 'success' && env.UPLOAD_BIN_DIR == 'true'
- with:
- name: OpenWrt_bin
- path: openwrt/bin
- - name: Organize files
- id: organize
- if: env.UPLOAD_FIRMWARE == 'true' && !cancelled()
- run: |
- mkdir firmware && find openwrt/bin/targets/*/*/* -maxdepth 0 -name "*uefi-gpt*" -or -name "*combined*" -or -name "*.vmdk" -or -name "sha256sums" | xargs -i mv -f {} ./firmware/
- cp openwrt/.config ./firmware/config.txt
- cd firmware
- echo "::set-env name=FIRMWARE::$PWD"
- echo "::set-output name=status::success"
-
- - name: Upload firmware directory
- uses: actions/upload-artifact@master
- if: steps.organize.outputs.status == 'success' && !cancelled()
- with:
- name: OpenWrt_firmware
- path: ${{ env.FIRMWARE }}
-
- - name: Get current date
- id: date
- run: echo "::set-output name=date::$(date +'%m/%d,%Y')"
-
- - name: Upload binaries to release
- uses: svenstaro/upload-release-action@v1-release
- if: steps.compile.outputs.status == 'success' && !cancelled()
- with:
- repo_token: ${{ secrets.REPO_TOKEN }}
- file: ${{ env.FIRMWARE }}/*
- tag: ${{steps.date.outputs.date}}
- overwrite: true
- file_glob: true
-
- - name: Upload firmware to cowtransfer
- if: env.UPLOAD_COWTRANSFER == 'true' && !cancelled()
- run: |
- curl -sL https://git.io/cowtransfer | sh
- ./cowtransfer-uploader -s -p 8 ${{ env.FIRMWARE }}/*
|