friendlywrt.yml 9.3 KB
Newer Older
S
songchenwen 已提交
1
name: friendlywrt
S
songchenwen 已提交
2

S
songchenwen 已提交
3

S
songchenwen 已提交
4
on:
S
songchenwen 已提交
5
  repository_dispatch:
S
songchenwen 已提交
6 7 8
  push:
    branches: 
      - master
S
songchenwen 已提交
9
    paths:
S
songchenwen 已提交
10
      - '.github/workflows/friendlywrt.yml'
S
songchenwen 已提交
11
      - 'minimal_config.seed'
S
songchenwen 已提交
12 13
      - '*.sh'
  schedule:
S
songchenwen 已提交
14
    - cron: '0 17 * * *'
S
songchenwen 已提交
15 16 17 18

jobs:
  build:
    runs-on: ubuntu-latest
S
songchenwen 已提交
19 20 21 22
    env:
      GITHUB_TOKEN: ${{ secrets.sec_token }}
      sec_token: ${{ secrets.sec_token }}

S
songchenwen 已提交
23 24 25 26 27
    steps:
      - name: Checkout
        uses: actions/checkout@master
        with:
          ref: master
S
songchenwen 已提交
28 29 30
          fetch-depth: 0
          token: ${{ env.sec_token }}

S
songchenwen 已提交
31 32 33 34 35 36
      - name: Init Env
        env:
          DEBIAN_FRONTEND: noninteractive
        run: |
          . init_env.sh
      
S
songchenwen 已提交
37 38 39 40
      - name: Repo Hash
        run: |
          ./set_repo_hash.sh Builder
      
S
songchenwen 已提交
41 42 43 44
      - name: Friendlywrt Source
        run: |
          . friendlywrt_source.sh

S
songchenwen 已提交
45
      - name: Change Feeds to Lean
S
songchenwen 已提交
46
        run: |
S
songchenwen 已提交
47 48 49 50 51 52 53 54 55 56 57
          cd friendlywrt-rk3328
          git clone https://github.com/coolsnowwolf/lede
          cd lede
          ../../set_repo_hash.sh Lean
          cd ../friendlywrt
          cp -r ../lede/package/lean package/
          sed -i 's/^src-git luci.*/src-git luci https:\/\/github.com\/coolsnowwolf\/luci/' feeds.conf.default
          sed -i 's/^src-git packages.*/src-git packages https:\/\/github.com\/coolsnowwolf\/packages/' feeds.conf.default
          ../../set_repo_hash.sh LeanLuci https://github.com/coolsnowwolf/luci.git
          ../../set_repo_hash.sh LeanPackage https://github.com/coolsnowwolf/packages.git
        
S
songchenwen 已提交
58 59 60 61
      - name: Add Packages to Lean
        run: |
          . add_packages_to_lean.sh

S
songchenwen 已提交
62
      - name: Install Openwrt Libs
S
songchenwen 已提交
63
        run: |
S
songchenwen 已提交
64
          git config --global user.email "action@github.com" && git config --global user.name "GitHub Action"
S
songchenwen 已提交
65 66
          cd friendlywrt-rk3328
          git clone https://github.com/openwrt/openwrt
S
songchenwen 已提交
67 68 69
          cd openwrt
          git revert --no-edit d27623b542548b765ddd46b046169006a3b5f66f
          cd ..
S
songchenwen 已提交
70 71
          rm -rf friendlywrt/package/libs
          cp -r openwrt/package/libs friendlywrt/package/
S
songchenwen 已提交
72 73 74 75 76 77

      - name: Install Openwrt octeontx patches
        run: |
          cd friendlywrt-rk3328
          cp -r openwrt/target/linux/octeontx/patches-5.4 friendlywrt/target/linux/rockchip-rk3328/
          ls friendlywrt/target/linux/rockchip-rk3328/patches-5.4
S
songchenwen 已提交
78
      
S
songchenwen 已提交
79 80 81
      - name: Change Log
        id: changelog
        run: |
S
songchenwen 已提交
82 83
          git config --global user.email "action@github.com" && git config --global user.name "GitHub Action"
          ./changelog.sh FriendlyWRT
S
songchenwen 已提交
84

S
songchenwen 已提交
85
      - name: Update Feeds
S
songchenwen 已提交
86
        if: steps.changelog.outputs.changelog != ''
S
songchenwen 已提交
87 88 89 90 91 92
        run: |
          cd friendlywrt-rk3328/friendlywrt
          ./scripts/feeds update -a
          ./scripts/feeds install -a
        
      - name: Install Mods
S
songchenwen 已提交
93
        if: steps.changelog.outputs.changelog != ''
S
songchenwen 已提交
94 95
        run: |
          cd friendlywrt-rk3328
S
songchenwen 已提交
96
          sed -i '/Load Average/i\\t\t<tr><td width="33%"><%:CPU Temperature%></td><td><%=luci.sys.exec("cut -c1-2 /sys/class/thermal/thermal_zone0/temp")%> ℃</td></tr>' friendlywrt/feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm
S
songchenwen 已提交
97
          sed -i 's/pcdata(boardinfo.system or "?")/"ARMv8"/' friendlywrt/feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm
S
songchenwen 已提交
98
          sed -i 's/<%=luci.sys.exec("cat \/etc\/bench.log") or " "%>//' friendlywrt/feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm
S
songchenwen 已提交
99
          sed -i "/redirect_https/d" friendlywrt/package/network/services/uhttpd/files/uhttpd.config
S
songchenwen 已提交
100
          sed -i '/luciversion/a \/ ${{ steps.changelog.outputs.buildtag }} by <a href="https://songchenwen.com">scw</a>' friendlywrt/feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm
S
songchenwen 已提交
101 102
          cp ../scripts/fw_update.sh friendlywrt/package/base-files/files/usr/bin/fw_update

S
songchenwen 已提交
103
      - name: Add Temperature to Netdata
S
songchenwen 已提交
104
        if: steps.changelog.outputs.changelog != ''
S
songchenwen 已提交
105 106 107 108 109 110 111 112 113
        run: |
          cd friendlywrt-rk3328
          mkdir -p friendlywrt/package/base-files/files/usr/lib/netdata/charts.d
          cp ../scripts/temp.chart.sh friendlywrt/package/base-files/files/usr/lib/netdata/charts.d/
          echo "sed -i 's/charts.d = no/charts.d = yes/' /etc/netdata/netdata.conf" >> friendlywrt/package/base-files/files/root/setup.sh
          echo "cp /usr/lib/netdata/conf.d/charts.d.conf /etc/netdata/" >> friendlywrt/package/base-files/files/root/setup.sh
          echo "echo 'temp=yes' >> /etc/netdata/charts.d.conf" >> friendlywrt/package/base-files/files/root/setup.sh
          echo "/etc/init.d/netdata restart" >> friendlywrt/package/base-files/files/root/setup.sh
          
S
songchenwen 已提交
114
      - name: Download Clash Binary
S
songchenwen 已提交
115
        if: steps.changelog.outputs.changelog != ''
S
songchenwen 已提交
116 117 118 119 120 121 122
        run: |
          CLASH_VERSION=v0.19.0
          mkdir -p friendlywrt-rk3328/friendlywrt/package/base-files/files/usr/bin
          cd friendlywrt-rk3328/friendlywrt/package/base-files/files/usr/bin
          wget -O clash.gz https://github.com/Dreamacro/clash/releases/download/$CLASH_VERSION/clash-linux-armv8-$CLASH_VERSION.gz
          gunzip clash.gz
          chmod +x clash
S
songchenwen 已提交
123 124 125 126
          cd ../..
          mkdir -p etc/clash
          cd etc/clash
          wget -O Country.mmdb https://github.com/Dreamacro/maxmind-geoip/releases/latest/download/Country.mmdb
S
songchenwen 已提交
127

S
songchenwen 已提交
128
      - name: Install UPX
S
songchenwen 已提交
129
        if: steps.changelog.outputs.changelog != ''
S
songchenwen 已提交
130 131 132 133 134
        run: |
          mkdir -p friendlywrt-rk3328/friendlywrt/staging_dir/host/bin/
          ln -s /usr/bin/upx-ucl friendlywrt-rk3328/friendlywrt/staging_dir/host/bin/upx
  
      - name: Update Target.mk
S
songchenwen 已提交
135
        if: steps.changelog.outputs.changelog != ''
S
songchenwen 已提交
136 137 138 139
        run: |
          cd friendlywrt-rk3328/friendlywrt/include
          sed -i 's/dnsmasq /dnsmasq-full default-settings luci /' target.mk

S
songchenwen 已提交
140
      - name: Build Config
S
songchenwen 已提交
141
        if: steps.changelog.outputs.changelog != ''
S
songchenwen 已提交
142 143 144 145 146 147 148
        run: |
          cd friendlywrt-rk3328
          cat configs/config_rk3328 | grep "TARGET" > ../rk3328.config
          cat ../minimal_config.seed >> ../rk3328.config
          cat ../rk3328.config > configs/config_rk3328
          cat configs/config_rk3328
      
149 150 151 152 153 154 155
      - name: Clean src
        if: steps.changelog.outputs.changelog != ''
        run: |
          cd friendlywrt-rk3328
          rm -rf lede
          rm -rf openwrt

S
songchenwen 已提交
156
      - name: Build Friendlywrt
S
songchenwen 已提交
157
        if: steps.changelog.outputs.changelog != ''
S
songchenwen 已提交
158 159 160 161
        run: |
          cd friendlywrt-rk3328
          sed -i 's/set -eu/set -u/' scripts/mk-friendlywrt.sh
          ./build.sh nanopi_r2s.mk
S
songchenwen 已提交
162 163 164

      # from https://github.com/fanck0605/nanopi_r2s/blob/lean/.github/workflows/main.yml#L87
      - name: Fix FriendlyWrt rootfs owner and group
165
        if: steps.changelog.outputs.changelog != ''
S
songchenwen 已提交
166
        run: |
167 168 169 170
          sudo df -lh
          lodev=$(sudo losetup -f)
          echo "found unused loop dev $lodev"
          sudo losetup -o 100663296 $lodev friendlywrt-rk3328/out/*.img
S
songchenwen 已提交
171 172
          sudo rm -rf /mnt/friendlywrt-tmp
          sudo mkdir -p /mnt/friendlywrt-tmp
173
          sudo mount $lodev /mnt/friendlywrt-tmp
S
songchenwen 已提交
174 175
          sudo chown -R root:root /mnt/friendlywrt-tmp
          sudo umount /mnt/friendlywrt-tmp
176
          sudo losetup -d $lodev
S
songchenwen 已提交
177 178
      
      - name: Zip Files
S
songchenwen 已提交
179
        if: steps.changelog.outputs.changelog != ''
S
songchenwen 已提交
180 181 182 183
        run: |
          gzip friendlywrt-rk3328/out/*.img

      - name: Assemble Artifact
S
songchenwen 已提交
184
        if: steps.changelog.outputs.changelog != ''
S
songchenwen 已提交
185 186 187 188 189 190
        id: assemble_artifact
        run: |
          rm -rf ./artifact/
          mkdir -p ./artifact/
          cd friendlywrt-rk3328/friendlywrt;./scripts/diffconfig.sh > ../../artifact/config.seed;cd ../../
          mv friendlywrt-rk3328/out/*img* ./artifact/
S
songchenwen 已提交
191
          cp friendlywrt-rk3328/friendlywrt/.config ./artifact/full.config
S
songchenwen 已提交
192
          cp friendlywrt-rk3328/friendlywrt/bin/packages/*/scw/luci-app-passwall*.ipk ./artifact/
S
songchenwen 已提交
193
          cp friendlywrt-rk3328/friendlywrt/bin/packages/*/*/luci-app-r2sflasher*.ipk ./artifact/
S
songchenwen 已提交
194
          cp friendlywrt-rk3328/friendlywrt/bin/packages/*/*/luci-app-filetransfer*.ipk ./artifact/
S
songchenwen 已提交
195 196
          zip -r artifact.zip -j artifact artifact/*
          release_tag=${{ steps.changelog.outputs.buildtag }}
S
songchenwen 已提交
197 198 199
          echo "##[set-output name=release_tag;]$release_tag"

      - name: Create Release
S
songchenwen 已提交
200
        if: steps.changelog.outputs.changelog != ''
S
songchenwen 已提交
201 202 203 204
        id: create_release
        uses: actions/create-release@v1
        with:
          tag_name: ${{ steps.assemble_artifact.outputs.release_tag }}
S
songchenwen 已提交
205
          release_name: ${{ steps.assemble_artifact.outputs.release_tag }}
S
songchenwen 已提交
206
          body: ${{ steps.changelog.outputs.changelog }}
S
songchenwen 已提交
207 208 209 210
          draft: false
          prerelease: false

      - name: Upload Release Asset
S
songchenwen 已提交
211
        if: steps.changelog.outputs.changelog != ''
S
songchenwen 已提交
212 213 214 215 216 217 218
        id: upload-release-asset
        uses: actions/upload-release-asset@v1
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
          asset_path: ./artifact.zip
          asset_name: ${{ steps.assemble_artifact.outputs.release_tag }}-ROM.zip
          asset_content_type: application/zip
S
songchenwen 已提交
219 220 221 222 223 224
    
      - name: Push Change Log
        if: steps.changelog.outputs.changelog != ''
        run: |
          git pull --rebase --autostash
          git push