Update actions/checkout action to v4.1.4 #8
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Renovate CI | ||
on: | ||
pull_request: | ||
jobs: | ||
get-last-commit-message: | ||
if: contains(github.head_ref, 'renovate/') | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/[email protected] | ||
- name: Get last commit message | ||
id: get-last-commit-message | ||
run: | | ||
echo "last_commit_message=$(git log -1 --pretty=%B)" >> $GITHUB_OUTPUT | ||
ci: | ||
needs: | ||
- get-last-commit-message | ||
if: contains(${{ needs.get-last-commit-message.outputs.last_commit_message }}, '[ready]') | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/[email protected] | ||
- name: Checkout | ||
uses: actions/[email protected] | ||
- name: Install Node.js | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: 18 | ||
- uses: pnpm/[email protected] | ||
name: Install pnpm | ||
id: pnpm-install | ||
with: | ||
version: 8 | ||
run_install: false | ||
- name: Get pnpm store directory | ||
id: pnpm-cache | ||
run: | | ||
echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT | ||
- uses: actions/cache@v4 | ||
name: Setup pnpm cache | ||
with: | ||
path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} | ||
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} | ||
restore-keys: | | ||
${{ runner.os }}-pnpm-store- | ||
- name: Install dependencies | ||
run: pnpm install | ||
- name: Check bumped version | ||
id: check-bumped-version | ||
uses: actions/github-script@v7 | ||
with: | ||
github-token: ${{ secrets.GITHUB_TOKEN }} | ||
script: | | ||
const semver = require('semver') | ||
const { data } = await github.rest.pulls.listFiles({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
pull_number: context.issue.number | ||
}); | ||
const modifiedFiles = data.map(file => file.filename); | ||
const filesInAppsFolder = modifiedFiles.filter(file => file.includes('apps/')) | ||
if (filesInAppsFolder.length < modifiedFiles.length) { | ||
console.log('Not all files are in apps folder, skipping automerge') | ||
core.setOutput('major_bump', 'true') | ||
return | ||
} | ||
const configs = modifiedFiles.filter(file => file.includes('config.json')) | ||
let majorBump = 'false' | ||
for (const configFile of configs) { | ||
const baseContent = await github.rest.repos.getContent({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
path: configFile, | ||
ref: context.payload.pull_request.base.ref | ||
}); | ||
const baseConfig = JSON.parse(Buffer.from(baseContent.data.content, 'base64').toString('utf-8')) | ||
const currentContent = await github.rest.repos.getContent({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
path: configFile, | ||
ref: context.payload.pull_request.head.ref | ||
}); | ||
const currentConfig = JSON.parse(Buffer.from(currentContent.data.content, 'base64').toString('utf-8')) | ||
const baseVersion = semver.coerce(baseConfig.version) | ||
const currentVersion = semver.coerce(currentConfig.version) | ||
if (currentVersion?.major > baseVersion?.major) { | ||
console.log('Major bump detected, skipping automerge') | ||
majorBump = 'true' | ||
break | ||
} | ||
} | ||
core.setOutput('major_bump', majorBump) | ||
- name: Label this PR as "automerge" if major_bump is false | ||
if: steps.check-bumped-version.outputs.major_bump == 'false' | ||
uses: actions/github-script@v7 | ||
with: | ||
github-token: ${{ secrets.PERSONAL_TOKEN }} | ||
script: | | ||
github.rest.issues.addLabels({ | ||
issue_number: context.issue.number, | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
labels: ["automerge"] | ||
}) |