name: Bump, Build, Release on: push: branches: - main jobs: # Updates the Auto branch to match Main update-auto: permissions: contents: write runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v4 - name: Update Auto To Main run: | git fetch origin git config --global user.name "github-actions[bot]" git config --global user.email "github-actions[bot]@users.noreply.github.com" git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }} git checkout auto || git checkout -b auto git reset --hard origin/main git push --force origin auto # Builds the code # This is bundling, obfuscating, version bumping, etc. build: permissions: contents: write runs-on: ubuntu-latest needs: [update-auto] # Needs the update-auto job to finish first outputs: msg: ${{ steps.get-commit-message.outputs.MSG }} steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Node uses: actions/setup-node@v4 with: node-version: 20 - name: Install dependencies run: npm install - name: Update userscript version run: | npm version minor --no-git-tag-version node build/update-version.js - name: Build userscript run: npm run build - name: Get current version id: get_version run: | current_version=$(jq -r '.version' package.json) echo "Current version: $current_version" echo "current_version=$current_version" >> $GITHUB_OUTPUT - name: Update static version numbers run: | current_version=${{ steps.get_version.outputs.current_version }} if [ -f "docs/README.md" ]; then echo "README.md exists. Modifying..." else echo "README.md was not found. Skipping..." fi sed -i 's|\(Latest_Version-\)[^-\ ]*\(-lightblue\)|\1'$current_version'\2|' docs/README.md - name: Update compression badge run: | dist_size=$(find dist -type f -exec cat {} + | wc -c) src_size=$(find src dist/assets -type f -exec cat {} + | wc -c) percentage=$(awk "BEGIN {printf \"%.2f\", 100 - ($dist_size * 100) / $src_size}") echo "Compression: $percentage" badge_url="https://img.shields.io/badge/Compression-${percentage}%25-blue" sed -i -E 's#https://img.shields.io/badge/Compression-[^"]*#'"$badge_url"'#' docs/README.md - name: Get the previous commit message id: get-commit-message run: echo "MSG=$(git log -1 --pretty=%B)" >> $GITHUB_OUTPUT # This should happen on 'auto' branch - name: Commit and push built script run: | git config --global user.name "github-actions[bot]" git config --global user.email "github-actions[bot]@users.noreply.github.com" git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }} git checkout auto || git checkout -b auto git add dist/* git add src/BlueMarble.meta.js git add package.json git add docs/README.md git commit -m "Bumped version; ${{ steps.get-commit-message.outputs.MSG }}" || echo "No changes to commit" git push --set-upstream origin auto # Updates the requirement link SHA update-requirements: permissions: contents: write runs-on: ubuntu-latest needs: [update-auto, build] # Needs the update-auto and build jobs to finish first steps: - name: Checkout code uses: actions/checkout@v4 with: ref: auto # Checks out the auto branch fetch-depth: 0 - name: Get SHA of origin/auto run: | git fetch origin auto AUTO_SHA=$(git rev-parse origin/auto) echo "Auto SHA: $AUTO_SHA" echo "AUTO_SHA=$AUTO_SHA" >> $GITHUB_ENV - name: Update Resource Link SHA run: | sed -i "/@resource/ s/sha=[a-f0-9]\{40\}/sha=${AUTO_SHA}/g" dist/BlueMarble.user.js src/BlueMarble.meta.js echo "Updated resourceLinkSHA:" grep "@resource" dist/BlueMarble.user.js src/BlueMarble.meta.js - name: Commit Resource Link SHA run: | git config --global user.name "github-actions[bot]" git config --global user.email "github-actions[bot]@users.noreply.github.com" git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }} git add dist/BlueMarble.user.js git add src/BlueMarble.meta.js git commit -m "Merge version; ${{ needs.build.outputs.MSG }}" || echo "No changes to commit" git push - name: Merge Auto -> Main run: | git fetch origin git checkout origin/main -B main git merge --squash origin/auto git commit -m "Release version; ${{ needs.build.outputs.MSG }}" || echo "No changes to commit" git push origin main