merge workflow

This commit is contained in:
KOWX712
2024-12-03 00:59:11 +08:00
parent 227cbeeb5b
commit f1ca044c4f
3 changed files with 123 additions and 135 deletions

123
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,123 @@
name: build
on:
push:
branches:
- main
paths:
- 'module/**'
jobs:
build:
name: build
runs-on: ubuntu-latest
outputs:
version_tag_exists: ${{ steps.check_tag.outputs.version_tag_exists }}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 2
fetch-tags: true
- name: Extract Module Info
id: extract_info
run: |
MODULE_VERSION=$(grep -oP '^version=\K.*' module/module.prop)
BUILD_COUNT=$((1000 + ${{ github.run_number }}))
ARTIFACT_NAME="TrickyAddonModule-${MODULE_VERSION}-canary-${BUILD_COUNT}"
echo "MODULE_VERSION=${MODULE_VERSION}" >> $GITHUB_ENV
echo "ARTIFACT_NAME=${ARTIFACT_NAME}" >> $GITHUB_ENV
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.ARTIFACT_NAME }}
path: module/
include-hidden-files: true
- name: Check if valid to release
id: check_tag
run: |
VERSION=$(grep '^version=' module/module.prop | sed 's/version=//')
git fetch --tags
if git tag | grep -qx "^$VERSION"; then
echo "version_tag_exists=true" >> $GITHUB_OUTPUT
else
echo "version_tag_exists=false" >> $GITHUB_OUTPUT
fi
release:
name: release
runs-on: ubuntu-latest
needs: build
if: ${{ needs.build.outputs.version_tag_exists == 'false' }}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 2
- name: Configure Git user
run: |
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
- name: Create a new tag
run: |
VERSION=$(grep '^version=' module/module.prop | sed 's/version=//')
git tag -a "$VERSION" -m "Release version $VERSION"
git push origin "$VERSION"
- name: Set release variables
id: set_release_variables
run: |
VERSION=$(grep '^version=' module/module.prop | sed 's/version=//')
CURRENT_TAG="$VERSION"
RELEASE_NOTES=$(awk -v tag="### $CURRENT_TAG" '
$0 == tag {flag=1; next}
/^###/ && flag {exit}
flag {print}
' changelog.md)
if [[ "$VERSION" == *"beta"* ]]; then
PRERELEASE=true
FORMATTED_RELEASE_NOTES=$(echo -e "- Due to extensive code refactoring, you might encounter unexpected bugs in this version, feedback in [Telegram](https://t.me/kowchannel) or [create issue](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/issues) if you found any issues.\n---\n### Tricky Addon module\n$RELEASE_NOTES")
FILES="TrickyAddonModule-${VERSION}.zip"
else
PRERELEASE=false
FORMATTED_RELEASE_NOTES=$(echo -e "### Tricky Addon module\n$RELEASE_NOTES\n---\n### Tricky Addon Lite - script only\n- Check on [changelog](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/tree/main/lite-script_only#tricky-addon-lite-update-target-list-script)")
FILES="TrickyAddonModule-${VERSION}.zip,TrickyAddonLite_ScriptOnly_Extract-${VERSION}.zip"
fi
echo "CURRENT_TAG=$CURRENT_TAG" >> $GITHUB_ENV
echo "ZIP_NAME=TrickyAddonModule-${VERSION}.zip" >> $GITHUB_ENV
echo "LITE_SCRIPT_ONLY_ZIP_NAME=TrickyAddonLite_ScriptOnly_Extract-${VERSION}.zip" >> $GITHUB_ENV
echo "RELEASE_NOTES<<EOF" >> $GITHUB_ENV
echo "$FORMATTED_RELEASE_NOTES" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
echo "FILES=$FILES" >> $GITHUB_ENV
echo "PRERELEASE=$PRERELEASE" >> $GITHUB_ENV
- name: Compress module folder
run: |
cd module && zip -r "../${{ env.ZIP_NAME }}" ./*
echo "Created zip file: ${{ env.ZIP_NAME }}"
- name: Compress lite-script_only folder
if: ${{ env.PRERELEASE == 'false' }}
run: |
cd lite-script_only && zip -r "../${{ env.LITE_SCRIPT_ONLY_ZIP_NAME }}" ./*
echo "Created zip file: ${{ env.LITE_SCRIPT_ONLY_ZIP_NAME }}"
- name: Create release
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
files: ${{ env.FILES }}
tag_name: ${{ env.CURRENT_TAG }}
name: ${{ env.CURRENT_TAG }}
body: ${{ env.RELEASE_NOTES }}
draft: false
prerelease: ${{ env.PRERELEASE }}

View File

@@ -1,34 +0,0 @@
name: canary
on:
push:
branches:
- main
paths:
- 'module/**'
jobs:
build:
name: build
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Extract Module Info
id: extract_info
run: |
MODULE_VERSION=$(grep -oP '^version=\K.*' module/module.prop)
COMMIT_ID=$(git rev-parse --short HEAD)
BUILD_COUNT=$((1000 + ${{ github.run_number }}))
ARTIFACT_NAME="TrickyAddonModule-${MODULE_VERSION}-${COMMIT_ID}-canary-${BUILD_COUNT}"
echo "MODULE_VERSION=${MODULE_VERSION}" >> $GITHUB_ENV
echo "COMMIT_ID=${COMMIT_ID}" >> $GITHUB_ENV
echo "ARTIFACT_NAME=${ARTIFACT_NAME}" >> $GITHUB_ENV
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.ARTIFACT_NAME }}
path: module/

View File

@@ -1,101 +0,0 @@
name: release
on:
push:
paths:
- 'module/module.prop'
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 2
- name: Get the version from module.prop
id: get_version
run: |
VERSION=$(grep '^version=' module/module.prop | sed 's/version=//')
echo "VERSION=$VERSION" >> $GITHUB_ENV
- name: Check if version is already tagged
id: check_version
run: |
LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "none")
echo "LATEST_TAG=$LATEST_TAG" >> $GITHUB_ENV
if [ "$LATEST_TAG" == "none" ]; then
echo "skip=false" >> $GITHUB_ENV
elif [ "$LATEST_TAG" == "$VERSION" ]; then
echo "skip=true" >> $GITHUB_ENV
else
echo "skip=false" >> $GITHUB_ENV
fi
- name: Configure Git user
if: env.skip == 'false'
run: |
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
- name: Create a new tag (if version changed)
if: env.skip == 'false'
run: |
git tag -a "$VERSION" -m "Release version $VERSION"
git push origin "$VERSION"
- name: Set release variables
if: env.skip == 'false'
id: setup
run: |
CURRENT_TAG="$VERSION"
RELEASE_NOTES=$(awk -v tag="### $CURRENT_TAG" '
$0 == tag {flag=1; next}
/^###/ && flag {exit}
flag {print}
' changelog.md)
FORMATTED_RELEASE_NOTES=$(echo -e "### Tricky Addon module\n$RELEASE_NOTES\n---\n### Tricky Addon Lite - script only\n- Check on [changelog](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/tree/main/lite-script_only#tricky-addon-lite-update-target-list-script)")
echo "$FORMATTED_RELEASE_NOTES" > release_notes.txt
echo "RELEASE_NOTES<<EOF" >> $GITHUB_ENV
cat release_notes.txt >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
echo "CURRENT_TAG=$CURRENT_TAG" >> $GITHUB_ENV
echo "ZIP_NAME=TrickyAddonModule-${VERSION}.zip" >> $GITHUB_ENV
echo "ZIP_PATH=module" >> $GITHUB_ENV
echo "LITE_SCRIPT_ONLY_ZIP_NAME=TrickyAddonLite_ScriptOnly_Extract-${VERSION}.zip" >> $GITHUB_ENV
echo "LITE_SCRIPT_ONLY_PATH=lite-script_only" >> $GITHUB_ENV
if [[ "$VERSION" == *"beta"* ]]; then
echo "PRERELEASE=true" >> $GITHUB_ENV
else
echo "PRERELEASE=false" >> $GITHUB_ENV
fi
- name: Compress the module folder
if: env.skip == 'false'
run: |
cd "${{ env.ZIP_PATH }}" && zip -r "../${{ env.ZIP_NAME }}" ./*
echo "Created zip file: ${{ env.ZIP_NAME }}"
- name: Compress the lite-script_only folder
if: env.skip == 'false'
run: |
cd "${{ env.LITE_SCRIPT_ONLY_PATH }}" && zip -r "../${{ env.LITE_SCRIPT_ONLY_ZIP_NAME }}" ./*
echo "Created zip file: ${{ env.LITE_SCRIPT_ONLY_ZIP_NAME }}"
- name: Create release
if: env.skip == 'false'
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
files: ${{ env.ZIP_NAME }},${{ env.LITE_SCRIPT_ONLY_ZIP_NAME }}
tag_name: ${{ env.CURRENT_TAG }}
name: ${{ env.CURRENT_TAG }}
body: ${{ env.RELEASE_NOTES }}
draft: false
prerelease: ${{ env.PRERELEASE }}