diff --git a/.github/workflows/canary.yml b/.github/workflows/canary.yml new file mode 100644 index 0000000..d982af2 --- /dev/null +++ b/.github/workflows/canary.yml @@ -0,0 +1,42 @@ +name: canary + +on: + push: + branches: + - main + +jobs: + build: + name: build + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Extract Module Info + id: extract_info + run: | + # Extract module name and version + MODULE_NAME=$(grep -oP '^name=\K.*' module/module.prop | tr ' ' '_') + MODULE_VERSION=$(grep -oP '^version=\K.*' module/module.prop) + + # Generate build count based on GitHub Actions run number + BUILD_COUNT=$((1000 + ${{ github.run_number }})) + + # Combine for artifact name + ARTIFACT_NAME="${MODULE_NAME}-${MODULE_VERSION}-${BUILD_COUNT}" + + echo "MODULE_NAME=${MODULE_NAME}" >> $GITHUB_ENV + echo "MODULE_VERSION=${MODULE_VERSION}" >> $GITHUB_ENV + echo "ARTIFACT_NAME=${ARTIFACT_NAME}" >> $GITHUB_ENV + + - name: Create ZIP Archive + run: | + zip -r "${ARTIFACT_NAME}.zip" module + + - name: Upload Artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ env.ARTIFACT_NAME }} + path: ${{ env.ARTIFACT_NAME }}.zip diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..c6472bb --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,97 @@ +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=$(printf "### Tricky Addon module\n%s\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)" "$RELEASE_NOTES") + + echo "$FORMATTED_RELEASE_NOTES" > release_notes.txt + echo "RELEASE_NOTES<> $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 + + - name: Compress the module folder + if: env.skip == 'false' + run: | + echo "Compressing module folder..." + zip -r "${{ env.ZIP_NAME }}" "${{ env.ZIP_PATH }}" + echo "Created zip file: ${{ env.ZIP_NAME }}" + + - name: Compress the lite-script_only folder + if: env.skip == 'false' + run: | + echo "Compressing lite-script_only folder..." + zip -r "${{ env.LITE_SCRIPT_ONLY_ZIP_NAME }}" "${{ env.LITE_SCRIPT_ONLY_PATH }}" + 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: false