This action will find and replace strings in your project files.
This example replaces hello
with world
in all of your project files.
name: My Workflow
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Find and Replace
uses: jacobtomlinson/gha-find-replace@v2
with:
find: "hello"
replace: "world"
regex: false
Input | Description |
---|---|
find |
A string to find and replace in your project files. (Defaults to a regular expression.) |
replace |
The string to replace it with. |
include (optional) |
A glob of files to include. Defaults to ** . |
exclude (optional) |
A glob of files to exclude. Defaults to .git/** . |
regex (optional) |
Whether to match with.find as a regular expression instead of a fixed string. Defaults to true . |
Output | Description |
---|---|
modifiedFiles |
The number of files that have been modified |
You can limit your find and replace to a directory.
name: My Workflow
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Find and Replace
uses: jacobtomlinson/gha-find-replace@v2
with:
find: "hello"
replace: "world"
include: "justthisdirectory/**"
regex: true
You can limit your find and replace to just files with a specific name.
name: My Workflow
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Find and Replace
uses: jacobtomlinson/gha-find-replace@v2
with:
find: "hello"
replace: "world"
include: "**README.md" # Will match all README.md files in any nested directory
You can set your find and replace to ignore certain file types.
name: My Workflow
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Find and Replace
uses: jacobtomlinson/gha-find-replace@v2
with:
find: "hello"
replace: "world"
exclude: "**/*.py" # Do not modify Python files
Any modifications during a GitHub Actions workflow are only made to the working copy checked out by the actions/checkout
step. If you want those changes to be pushed back to the repository you'll need to add a final step that does this.
name: My Workflow
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Find and Replace
uses: jacobtomlinson/gha-find-replace@v2
with:
find: "hello"
replace: "world"
regex: false
- name: Push changes
uses: ad-m/[email protected]
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: ${{ github.ref }}
If you need the push event to trigger other workflows, use a repo
scoped Personal Access Token.
- name: Push changes
uses: ad-m/[email protected]
with:
github_token: ${{ secrets.MY_PAT }}
branch: ${{ github.ref }}
To publish a new version of this Action we need to update the Docker image tag in action.yml
and also create a new release on GitHub.
- Work out the next tag version number.
- Update the Docker image in
action.yml
. - Create a new release on GitHub with the same tag.