name: Release on: push: tags: - 'v*' permissions: contents: write jobs: release: name: Build & publish plugin zip runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Build plugin zip working-directory: ${{ github.workspace }} run: | set -euo pipefail VERSION="${GITHUB_REF_NAME#v}" STAGE="dist/staging" OUT="dist/projects-portfolio-v${VERSION}.zip" rm -rf dist mkdir -p "$STAGE/projects-portfolio" cp projects-portfolio.php "$STAGE/projects-portfolio/" cp README.md "$STAGE/projects-portfolio/" cp LICENSE "$STAGE/projects-portfolio/" cp -r admin/ "$STAGE/projects-portfolio/" cp -r assets/ "$STAGE/projects-portfolio/" cp -r includes/ "$STAGE/projects-portfolio/" cp -r languages/ "$STAGE/projects-portfolio/" cp -r templates/ "$STAGE/projects-portfolio/" ( cd "$STAGE" && zip -r "../../$OUT" projects-portfolio ) echo "Built $OUT" unzip -l "$OUT" - name: Upload artifact uses: actions/upload-artifact@v4 with: name: projects-portfolio-${{ github.ref_name }} path: dist/projects-portfolio-*.zip if-no-files-found: error - name: Create GitHub release uses: softprops/action-gh-release@v2 with: tag_name: ${{ github.ref_name }} name: ${{ github.ref_name }} generate_release_notes: true files: dist/projects-portfolio-*.zip