--- name: Bump version and sync Changelog to Docker Repo on: push: paths: - 'CHANGELOG.md' permissions: contents: write jobs: bump_and_sync: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Extract version from commit message id: ver shell: bash run: | set -euo pipefail MSG="${{ github.event.head_commit.message }}" if [[ "$MSG" =~ release\((v[0-9]+\.[0-9]+\.[0-9]+)\) ]]; then echo "version=${BASH_REMATCH[1]}" >> "$GITHUB_OUTPUT" echo "Found version: ${BASH_REMATCH[1]}" else echo "version=" >> "$GITHUB_OUTPUT" echo "No release(vX.Y.Z) tag in commit message; skipping bump." fi - name: Update public/js/version.js if: steps.ver.outputs.version != '' shell: bash run: | set -euo pipefail cat > public/js/version.js <<'EOF' // generated by CI window.APP_VERSION = '${{ steps.ver.outputs.version }}'; EOF - name: Stamp asset cache-busters (?v=...) and {{APP_VER}} if: steps.ver.outputs.version != '' shell: bash run: | set -euo pipefail VER="${{ steps.ver.outputs.version }}" # e.g. v1.6.9 QVER="${VER#v}" # e.g. 1.6.9 echo "Stamping ?v= to ${QVER} and {{APP_VER}} to ${VER}" # List candidate files under public/ mapfile -t files < <(git ls-files -- \ 'public/**/*.html' \ 'public/**/*.css' \ 'public/**/*.js' \ ) if [ "${#files[@]}" -gt 0 ]; then for f in "${files[@]}"; do # Replace any existing ?v=VALUE (dev, v1.2.3, 1.2.3, timestamp, etc.) with new numeric version sed -E -i "s/(\?v=)[^\"'&<>\s]*/\1${QVER}/g" "$f" # Replace {{APP_VER}} placeholders (leave the leading v for display) sed -E -i "s/\{\{APP_VER\}\}/${VER}/g" "$f" done else echo "No HTML/CSS/JS files found under public/ to stamp." fi - name: Commit version bump + stamped assets if: steps.ver.outputs.version != '' shell: bash run: | set -euo pipefail git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" git add public/js/version.js public if git diff --cached --quiet; then echo "No changes to commit" else git commit -m "chore(release): set APP_VERSION and stamp assets to ${{ steps.ver.outputs.version }} [skip ci]" git push fi - name: Checkout filerise-docker if: steps.ver.outputs.version != '' uses: actions/checkout@v4 with: repository: error311/filerise-docker token: ${{ secrets.PAT_TOKEN }} path: docker-repo - name: Copy CHANGELOG.md and write VERSION if: steps.ver.outputs.version != '' shell: bash run: | set -euo pipefail cp CHANGELOG.md docker-repo/CHANGELOG.md echo "${{ steps.ver.outputs.version }}" > docker-repo/VERSION - name: Commit & push to docker repo if: steps.ver.outputs.version != '' working-directory: docker-repo shell: bash run: | set -euo pipefail git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" git add CHANGELOG.md VERSION if git diff --cached --quiet; then echo "No changes to commit" else git commit -m "chore: sync CHANGELOG.md and VERSION (${{ steps.ver.outputs.version }}) from FileRise" git push origin main fi