chore: Refactor build workflow to handle multiple commits and check f… #27
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: Ruff and Publish | |
on: | |
push: | |
branches: | |
- "**" | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Run Ruff Linter | |
uses: chartboost/ruff-action@v1 | |
publish: | |
runs-on: ubuntu-latest | |
if: github.ref == 'refs/heads/main' # Executes only for pushes to the main branch | |
needs: lint | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Check for version change in pyproject.toml | |
id: check_version | |
uses: actions/github-script@v6 | |
with: | |
script: | | |
const payload = context.payload; | |
let changedFiles = []; | |
for (const commit of payload.commits) { | |
if (commit.modified) changedFiles = changedFiles.concat(commit.modified); | |
if (commit.added) changedFiles = changedFiles.concat(commit.added); | |
if (commit.removed) changedFiles = changedFiles.concat(commit.removed); | |
} | |
const isVersionChanged = changedFiles.includes('pyproject.toml'); | |
if (!isVersionChanged) { | |
console.log("No change in pyproject.toml"); | |
return false; | |
} | |
const fs = require('fs'); | |
const content = fs.readFileSync('./pyproject.toml', 'utf8'); | |
const versionRegex = /version = "(\S+)"/; | |
const match = versionRegex.exec(content); | |
if (match) { | |
core.setOutput('new_version', match[1]); | |
console.log(`Version changed to ${match[1]}`); | |
return true; | |
} else { | |
console.log("Version line not found or unchanged"); | |
return false; | |
} | |
result-encoding: string | |
- name: Publish Package | |
if: steps.check_version.outputs.new_version | |
uses: JRubics/[email protected] | |
with: | |
pypi_token: ${{ secrets.PYPI_API_TOKEN }} |