release #82
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
name: release | |
# description: | |
on: | |
workflow_dispatch: | |
schedule: | |
- cron: '35 9 * * 1' | |
# push: | |
permissions: | |
contents: write | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
ref: main | |
fetch-depth: 0 | |
- name: Initialization environment | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
run: | | |
sudo apt install -y xz-utils make git wget zip | |
echo "${{ github.action_path }}" | |
latest_version=$(wget --no-check-certificate -qO- "https://api.github.com/repos/stunnel/static-curl/releases" | grep "tag_name" | grep -oE "[0-9.]*" | head -1) | |
module_latest_version=$(wget --no-check-certificate -qO- "https://api.github.com/repos/powerAn2020/ZeroTierOneForKSU/releases" | grep "tag_name" | grep -oE "[0-9.]*" | head -1) | |
zerotier_latest_version=$(wget --no-check-certificate -qO- "https://api.github.com/repos/zerotier/ZeroTierOne/releases" | grep "tag_name" | grep -oE "[0-9.]*" | head -1) | |
if [ "$zerotier_latest_version" = "$module_latest_version" -a "${{github.event_name }}" = "schedule"]; then | |
exit 0 | |
fi | |
echo "VERSION=$zerotier_latest_version" >> $GITHUB_ENV | |
download_link="https://github.com/stunnel/static-curl/releases/download/${latest_version}/curl-linux-aarch64-musl-${latest_version}.tar.xz" | |
echo ${download_link} | |
wget -O curl.tar.xz ${download_link} | |
wget -O curl32.tar.xz https://github.com/stunnel/static-curl/releases/download/${latest_version}/curl-linux-armv7-musl-${latest_version}.tar.xz | |
tar -xJf curl.tar.xz -C $PWD/bin curl | |
tar -xJf curl32.tar.xz curl | |
wget -O $PWD/bin/cacert.pem https://curl.se/ca/cacert.pem | |
mkdir $PWD/toolchain | |
wget -O arm64.tar.xz "https://dl.armbian.com/_toolchain/gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu.tar.xz" | |
wget -O arm.tar.xz "https://dl.armbian.com/_toolchain/gcc-arm-11.2-2022.02-x86_64-arm-none-linux-gnueabihf.tar.xz" | |
xz -d arm64.tar.xz | |
xz -d arm.tar.xz | |
tar -xvf arm64.tar -C $PWD/toolchain | |
tar -xvf arm.tar -C $PWD/toolchain | |
rm -f arm64.tar arm.tar curl.tar.xz curl32.tar.xz | |
- name: Update versionCode | |
run: | | |
module_version=$(grep -w 'version' module.prop |awk -F'=' '{print $2}') | |
module_versionCode=$(grep -w 'versionCode' module.prop |awk -F'=' '{print $2}') | |
if [[ "${{ env.VERSION }}" != "${module_version}" || "${{ github.event_name }}" == "workflow_dispatch" ]]; then | |
echo "Scheduled event triggered this workflow" | |
versionCode=$(expr 10000 + $(git rev-list --count HEAD) + 200) | |
echo '{"version":"${{ env.VERSION }}","versionCode":'${versionCode}',"zipUrl":"https://github.com/powerAn2020/ZeroTierOneForKSU/releases/download/${{env.VERSION}}/ZeroTierForKSU-arm64-${{ env.VERSION }}.zip","changelog":"https://raw.githubusercontent.com/powerAn2020/ZeroTierOneForKSU/main/changelog.md"}' >update_arm64.json | |
echo '{"version":"${{ env.VERSION }}","versionCode":'${versionCode}',"zipUrl":"https://github.com/powerAn2020/ZeroTierOneForKSU/releases/download/${{env.VERSION}}/ZeroTierForKSU-arm-${{ env.VERSION }}.zip","changelog":"https://raw.githubusercontent.com/powerAn2020/ZeroTierOneForKSU/main/changelog.md"}' >update_arm.json | |
echo 'id=ZeroTierForKSU' >module.prop | |
echo 'name=ZeroTier For KernelSU' >>module.prop | |
echo "version=ZeroTier Version->${{ env.VERSION }} & module Version->${versionCode}" >>module.prop | |
echo "versionCode=${versionCode}" >>module.prop | |
echo 'author=powerAn2020' >>module.prop | |
echo 'description=ZeroTier(${{ env.VERSION }}) with UI interface' >>module.prop | |
git config --global user.email "[email protected]" | |
git config --global user.name "github action" | |
if [[ "${{ github.event_name }}" == "schedule" ]]; then | |
wget -O RELEASE-NOTES.md https://github.com/zerotier/ZeroTierOne/raw/dev/RELEASE-NOTES.md | |
release_notes_line=$(grep -nPo '\d{4}-\d{2}-\d{2} -- Version [\d.]+' RELEASE-NOTES.md|head -2|awk -F ':' '{print $1}'|awk BEGIN{RS=EOF}'{gsub(/\n/," ");print}'|awk '{printf("start=%s; end=%s;",$1,$2)}') | |
eval $release_notes_line | |
end=$(expr ${end} - 1) | |
sed -n "${start},${end}p" RELEASE-NOTES.md >changelog.md | |
rm RELEASE-NOTES.md | |
else | |
MESSAGE=$(git log -1 --pretty=%B) | |
echo "commit MESSAGE: $MESSAGE" | |
echo $MESSAGE > changelog.md | |
fi | |
git add module.prop update_arm64.json update_arm.json changelog.md | |
git commit -m "update Zerotier version:${{env.VERSION}}" | |
echo "COMMIT=1" >> $GITHUB_ENV | |
else | |
echo "no need commit" | |
exit 0 | |
fi | |
- name: Build Zerotier for arm64 | |
run: | | |
export PATH="$PWD/toolchain/gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu/bin/:${PATH}" | |
git clone https:///github.com/zerotier/ZeroTierOne.git --depth=1 -b ${{ env.VERSION }} | |
cp -rf ZeroTierOne ZeroTierOne_ARM | |
cd ZeroTierOne | |
make -j $(nproc) ZT_STATIC=1 ZT_DEBUG=0 ZT_SSO_SUPPORTED=0 CC=aarch64-none-linux-gnu-gcc CXX=aarch64-none-linux-gnu-g++ LDFLAGS="-s" | |
cp -rf zerotier-one ../zerotier-one-arm64 | |
- name: Build Zerotier for arm | |
run: | | |
export PATH="$PWD/toolchain/gcc-arm-11.2-2022.02-x86_64-arm-none-linux-gnueabihf/bin/:${PATH}" | |
cd ZeroTierOne_ARM | |
make -j $(nproc) ZT_STATIC=1 ZT_DEBUG=0 CC=arm-none-linux-gnueabihf-gcc CXX=arm-none-linux-gnueabihf-g++ LDFLAGS="-s" | |
cp -rf zerotier-one ../zerotier-one-arm | |
- name: Build UI | |
run: | | |
cd ui-src | |
npm install | |
npm audit fix | |
npm run build | |
mv dist/* ../webroot/ | |
- name: Push changes | |
uses: ad-m/github-push-action@master | |
if: ${{ env.COMMIT == '1' }} | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
branch: main | |
- name: Generate module for arm64/arm | |
run: | | |
mv zerotier-one-arm64 zerotier-one | |
echo 'updateJson=https://raw.githubusercontent.com/powerAn2020/ZeroTierOneForKSU/main/update_arm64.json' >>module.prop | |
ls -la | |
bash build.sh ZeroTierForKSU-arm64-${{ env.VERSION }}.zip | |
mv -f zerotier-one-arm zerotier-one | |
mv -f curl bin/curl | |
sed -i "s/update_arm64/update_arm/g" module.prop | |
bash build.sh ZeroTierForKSU-arm-${{ env.VERSION }}.zip | |
- name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ZeroTierForKSU | |
path: | | |
./ZeroTierForKSU-arm64-${{ env.VERSION }}.zip | |
./ZeroTierForKSU-arm-${{ env.VERSION }}.zip | |
- name: Schedule Release | |
uses: softprops/action-gh-release@v2 | |
if: github.event_name == 'schedule' | |
with: | |
body_path: changelog.md | |
tag_name: ${{ env.VERSION }} | |
name: ZeroTierForKSU-${{ env.VERSION }} | |
files: | | |
ZeroTierForKSU-arm64-${{ env.VERSION }}.zip | |
ZeroTierForKSU-arm-${{ env.VERSION }}.zip | |
- name: Manual Release | |
uses: softprops/action-gh-release@v2 | |
if: github.event_name == 'workflow_dispatch' | |
with: | |
generate_release_notes: true | |
tag_name: ${{ env.VERSION }} | |
name: ZeroTierForKSU-${{ env.VERSION }} | |
files: | | |
ZeroTierForKSU-arm64-${{ env.VERSION }}.zip | |
ZeroTierForKSU-arm-${{ env.VERSION }}.zip |