forked from 217heidai/OpenWrt-Builder
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit d3e5cdc
Showing
7 changed files
with
318 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
# This is an empty file, please overwrite it after generating the .config file with the source code |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,160 @@ | ||
# | ||
# https://github.com/P3TERX/Actions-OpenWrt | ||
# | ||
# File: .github/workflows/openwrt-bulder.yml | ||
# Description: Build OpenWrt using GitHub Actions | ||
# | ||
# Copyright (c) 2019-2024 P3TERX <https://p3terx.com> | ||
# | ||
# This is free software, licensed under the MIT License. | ||
# See /LICENSE for more information. | ||
# | ||
|
||
name: OpenWrt Builder | ||
|
||
on: | ||
repository_dispatch: | ||
workflow_dispatch: | ||
|
||
env: | ||
REPO_URL: https://github.com/coolsnowwolf/lede | ||
REPO_BRANCH: master | ||
FEEDS_CONF: feeds.conf.default | ||
CONFIG_FILE: .config | ||
DIY_P1_SH: diy-part1.sh | ||
DIY_P2_SH: diy-part2.sh | ||
UPLOAD_BIN_DIR: false | ||
UPLOAD_FIRMWARE: true | ||
UPLOAD_RELEASE: true | ||
TZ: Asia/Shanghai | ||
|
||
jobs: | ||
build: | ||
runs-on: ubuntu-22.04 | ||
|
||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@main | ||
|
||
- name: Initialization environment | ||
env: | ||
DEBIAN_FRONTEND: noninteractive | ||
run: | | ||
sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc /opt/hostedtoolcache/CodeQL | ||
sudo docker image prune --all --force | ||
sudo -E apt-get -qq update | ||
sudo -E apt-get -qq install ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libfuse-dev libglib2.0-dev libgmp3-dev libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libpython3-dev libreadline-dev libssl-dev libtool lrzsz mkisofs msmtp ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools python3-setuptools qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev | ||
sudo -E apt-get -qq autoremove --purge | ||
sudo -E apt-get -qq clean | ||
sudo timedatectl set-timezone "$TZ" | ||
sudo mkdir -p /workdir | ||
sudo chown $USER:$GROUPS /workdir | ||
- name: Clone source code | ||
working-directory: /workdir | ||
run: | | ||
df -hT $PWD | ||
git clone $REPO_URL -b $REPO_BRANCH openwrt | ||
ln -sf /workdir/openwrt $GITHUB_WORKSPACE/openwrt | ||
- name: Load custom feeds | ||
run: | | ||
[ -e $FEEDS_CONF ] && mv $FEEDS_CONF openwrt/feeds.conf.default | ||
chmod +x $DIY_P1_SH | ||
cd openwrt | ||
$GITHUB_WORKSPACE/$DIY_P1_SH | ||
- 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_P2_SH | ||
cd openwrt | ||
$GITHUB_WORKSPACE/$DIY_P2_SH | ||
- name: Download package | ||
id: package | ||
run: | | ||
cd openwrt | ||
make defconfig | ||
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) thread compile" | ||
make -j$(nproc) || make -j1 || make -j1 V=s | ||
echo "status=success" >> $GITHUB_OUTPUT | ||
grep '^CONFIG_TARGET.*DEVICE.*=y' .config | sed -r 's/.*DEVICE_(.*)=y/\1/' > DEVICE_NAME | ||
[ -s DEVICE_NAME ] && echo "DEVICE_NAME=_$(cat DEVICE_NAME)" >> $GITHUB_ENV | ||
echo "FILE_DATE=_$(date +"%Y%m%d%H%M")" >> $GITHUB_ENV | ||
- name: Check space usage | ||
if: (!cancelled()) | ||
run: df -hT | ||
|
||
- name: Upload bin directory | ||
uses: actions/upload-artifact@main | ||
if: steps.compile.outputs.status == 'success' && env.UPLOAD_BIN_DIR == 'true' | ||
with: | ||
name: OpenWrt_bin${{ env.DEVICE_NAME }}${{ env.FILE_DATE }} | ||
path: openwrt/bin | ||
|
||
- name: Organize files | ||
id: organize | ||
if: env.UPLOAD_FIRMWARE == 'true' && !cancelled() | ||
run: | | ||
cd openwrt/bin/targets/*/* | ||
rm -rf packages | ||
echo "FIRMWARE=$PWD" >> $GITHUB_ENV | ||
echo "status=success" >> $GITHUB_OUTPUT | ||
- name: Upload firmware directory | ||
uses: actions/upload-artifact@main | ||
if: steps.organize.outputs.status == 'success' && !cancelled() | ||
with: | ||
name: OpenWrt_firmware${{ env.DEVICE_NAME }}${{ env.FILE_DATE }} | ||
path: ${{ env.FIRMWARE }} | ||
|
||
- name: Generate release tag | ||
id: tag | ||
if: env.UPLOAD_RELEASE == 'true' && !cancelled() | ||
run: | | ||
echo "release_tag=$(date +"%Y.%m.%d-%H%M")" >> $GITHUB_OUTPUT | ||
touch release.txt | ||
[ ${UPLOAD_GOFILE} = true && ${{ steps.gofile.outputs.url }} ] && echo "🔗 [GoFile](${{ steps.gofile.outputs.url }})" >> release.txt | ||
echo "status=success" >> $GITHUB_OUTPUT | ||
- name: Upload firmware to release | ||
uses: softprops/action-gh-release@master | ||
if: steps.tag.outputs.status == 'success' && !cancelled() | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
with: | ||
tag_name: ${{ steps.tag.outputs.release_tag }} | ||
body_path: release.txt | ||
files: ${{ env.FIRMWARE }}/* | ||
|
||
- name: Delete workflow runs | ||
uses: Mattraks/delete-workflow-runs@main | ||
with: | ||
retain_days: 0 | ||
keep_minimum_runs: 2 | ||
|
||
- name: Remove old Releases | ||
uses: dev-drprasad/delete-older-releases@master | ||
if: env.UPLOAD_RELEASE == 'true' && !cancelled() | ||
with: | ||
keep_latest: 3 | ||
delete_tags: true | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
# | ||
# https://github.com/P3TERX/Actions-OpenWrt | ||
# | ||
# File: .github/workflows/update-checker.yml | ||
# Description: Source code update checker | ||
# | ||
# Copyright (c) 2019-2024 P3TERX <https://p3terx.com> | ||
# | ||
# This is free software, licensed under the MIT License. | ||
# See /LICENSE for more information. | ||
# | ||
|
||
name: Update Checker | ||
|
||
env: | ||
REPO_URL: https://github.com/coolsnowwolf/lede | ||
REPO_BRANCH: master | ||
|
||
on: | ||
workflow_dispatch: | ||
# schedule: | ||
# - cron: 0 */18 * * * | ||
|
||
jobs: | ||
check: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
|
||
- name: Get Commit Hash | ||
id: getHash | ||
run: | | ||
git clone --depth 1 $REPO_URL -b $REPO_BRANCH . | ||
echo "commitHash=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT | ||
- name: Compare Commit Hash | ||
id: cacheHash | ||
uses: actions/cache@v3 | ||
with: | ||
path: .commitHash | ||
key: commitHash_${{ steps.getHash.outputs.commitHash }} | ||
|
||
- name: Save New Commit Hash | ||
if: steps.cacheHash.outputs.cache-hit != 'true' | ||
run: | | ||
echo ${{ steps.getHash.outputs.commitHash }} | tee .commitHash | ||
- name: Trigger build | ||
if: steps.cacheHash.outputs.cache-hit != 'true' | ||
uses: peter-evans/repository-dispatch@v2 | ||
with: | ||
token: ${{ github.token }} | ||
event-type: Source Code Update | ||
|
||
- name: Delete workflow runs | ||
uses: Mattraks/delete-workflow-runs@v2 | ||
with: | ||
retain_days: 0 | ||
keep_minimum_runs: 2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
MIT License | ||
|
||
Copyright (c) 2019-2024 P3TERX <https://p3terx.com> | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy | ||
of this software and associated documentation files (the "Software"), to deal | ||
in the Software without restriction, including without limitation the rights | ||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
copies of the Software, and to permit persons to whom the Software is | ||
furnished to do so, subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be included in all | ||
copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
SOFTWARE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
**English** | [中文](https://p3terx.com/archives/build-openwrt-with-github-actions.html) | ||
|
||
# Actions-OpenWrt | ||
|
||
[](https://github.com/P3TERX/Actions-OpenWrt/blob/master/LICENSE) | ||
 | ||
 | ||
|
||
A template for building OpenWrt with GitHub Actions | ||
|
||
## Usage | ||
|
||
- Click the [Use this template](https://github.com/P3TERX/Actions-OpenWrt/generate) button to create a new repository. | ||
- Generate `.config` files using [Lean's OpenWrt](https://github.com/coolsnowwolf/lede) source code. ( You can change it through environment variables in the workflow file. ) | ||
- Push `.config` file to the GitHub repository. | ||
- Select `Build OpenWrt` on the Actions page. | ||
- Click the `Run workflow` button. | ||
- When the build is complete, click the `Artifacts` button in the upper right corner of the Actions page to download the binaries. | ||
|
||
## Tips | ||
|
||
- It may take a long time to create a `.config` file and build the OpenWrt firmware. Thus, before create repository to build your own firmware, you may check out if others have already built it which meet your needs by simply [search `Actions-Openwrt` in GitHub](https://github.com/search?q=Actions-openwrt). | ||
- Add some meta info of your built firmware (such as firmware architecture and installed packages) to your repository introduction, this will save others' time. | ||
|
||
## Credits | ||
|
||
- [Microsoft Azure](https://azure.microsoft.com) | ||
- [GitHub Actions](https://github.com/features/actions) | ||
- [OpenWrt](https://github.com/openwrt/openwrt) | ||
- [coolsnowwolf/lede](https://github.com/coolsnowwolf/lede) | ||
- [Mikubill/transfer](https://github.com/Mikubill/transfer) | ||
- [softprops/action-gh-release](https://github.com/softprops/action-gh-release) | ||
- [Mattraks/delete-workflow-runs](https://github.com/Mattraks/delete-workflow-runs) | ||
- [dev-drprasad/delete-older-releases](https://github.com/dev-drprasad/delete-older-releases) | ||
- [peter-evans/repository-dispatch](https://github.com/peter-evans/repository-dispatch) | ||
|
||
## License | ||
|
||
[MIT](https://github.com/P3TERX/Actions-OpenWrt/blob/main/LICENSE) © [**P3TERX**](https://p3terx.com) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
#!/bin/bash | ||
# | ||
# https://github.com/P3TERX/Actions-OpenWrt | ||
# File name: diy-part1.sh | ||
# Description: OpenWrt DIY script part 1 (Before Update feeds) | ||
# | ||
# Copyright (c) 2019-2024 P3TERX <https://p3terx.com> | ||
# | ||
# This is free software, licensed under the MIT License. | ||
# See /LICENSE for more information. | ||
# | ||
|
||
# Uncomment a feed source | ||
#sed -i 's/^#\(.*helloworld\)/\1/' feeds.conf.default | ||
|
||
# Add a feed source | ||
echo 'src-git helloworld https://github.com/fw876/helloworld' >>feeds.conf.default | ||
#echo 'src-git passwall https://github.com/xiaorouji/openwrt-passwall' >>feeds.conf.default |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
#!/bin/bash | ||
# | ||
# https://github.com/P3TERX/Actions-OpenWrt | ||
# File name: diy-part2.sh | ||
# Description: OpenWrt DIY script part 2 (After Update feeds) | ||
# | ||
# Copyright (c) 2019-2024 P3TERX <https://p3terx.com> | ||
# | ||
# This is free software, licensed under the MIT License. | ||
# See /LICENSE for more information. | ||
# | ||
|
||
# Modify default IP | ||
#sed -i 's/192.168.1.1/192.168.50.5/g' package/base-files/files/bin/config_generate | ||
|
||
# Modify default theme | ||
#sed -i 's/luci-theme-bootstrap/luci-theme-argon/g' feeds/luci/collections/luci/Makefile | ||
|
||
# Modify hostname | ||
#sed -i 's/OpenWrt/P3TERX-Router/g' package/base-files/files/bin/config_generate |