name: Telegram Mini App Shop Builder on: push: branches: - master permissions: contents: write jobs: module-build: name: Build module. runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup PHP 7.4 uses: shivammathur/setup-php@v2 with: php-version: '7.4' tools: composer - name: Build module run: | bash scripts/ci/build.sh "${GITHUB_WORKSPACE}" - name: Upload build artifact uses: actions/upload-artifact@v4 with: name: oc_telegram_shop.ocmod.zip path: ./build/oc_telegram_shop.ocmod.zip retention-days: 1 release: runs-on: ubuntu-latest needs: [module-build] steps: - uses: actions/checkout@v4 with: fetch-depth: 0 # to fetch tags - name: Extract tag and set filename id: meta run: | # Проверяем, указывает ли HEAD на тег (релиз) RELEASE_TAG=$(git tag --points-at HEAD | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | head -n 1) if [ -n "$RELEASE_TAG" ]; then echo "Это полноценный релиз" TAG="$RELEASE_TAG" FILENAME="oc_telegram_shop_${TAG}.ocmod.zip" IS_RELEASE=true else echo "Это dev-сборка" LAST_TAG=$(git tag --sort=-v:refname | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | head -n 1) [ -z "$LAST_TAG" ] && LAST_TAG="v0.0.0" SHORT_SHA=$(git rev-parse --short=7 HEAD) DATE=$(date +%Y%m%d%H%M) TAG="${LAST_TAG}-dev.${DATE}+${SHORT_SHA}" FILENAME="oc_telegram_shop_${TAG}.ocmod.zip" IS_RELEASE=false fi echo "is_release=$IS_RELEASE" >> $GITHUB_OUTPUT echo "tag=$TAG" >> $GITHUB_OUTPUT echo "filename=$FILENAME" >> $GITHUB_OUTPUT - name: Download build artifact uses: actions/download-artifact@v4 with: name: oc_telegram_shop.ocmod.zip path: ./build - name: Rename artifact file run: mv ./build/oc_telegram_shop.ocmod.zip ./build/${{ steps.meta.outputs.filename }} - name: Delete existing GitHub release and tag env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | TAG=${{ steps.meta.outputs.tag }} echo "⛔ Deleting existing release and tag (if any): $TAG" gh release delete "$TAG" --cleanup-tag --yes || true git push origin ":refs/tags/$TAG" || true - name: Create GitHub Release uses: softprops/action-gh-release@v2 with: draft: ${{ steps.meta.outputs.is_release == 'false' }} tag_name: ${{ steps.meta.outputs.tag }} files: ./build/${{ steps.meta.outputs.filename }} generate_release_notes: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}