Description
Replaces strings that match a regular expression pattern with a specified replacement string
Input Schema
| Property | Type | Description | Required |
|---|---|---|---|
| regExps | array | - |
Output Schema
No output schema defined for this action.
Usage Examples
Replace template placeholders across multiple files
Use this to replace common placeholders after fetching a starter template and before publishing the repository. It updates multiple files with user-provided values using global regex matches.
steps:
- id: fetch-base
action: fetch:template
input:
url: https://github.com/acme/service-template/archive/refs/heads/main.zip
values:
serviceName: ${{ parameters.serviceName }}
serviceSlug: ${{ parameters.serviceSlug }}
owner: platform-team
- id: replace-placeholders
action: regex:replace
input:
regExps:
- files:
- README.md
- chart/values.yaml
- app/src/config.ts
pattern: "__SERVICE_NAME__"
replacement: "${{ parameters.serviceName }}"
flags: "g"
- files:
- package.json
pattern: "\"name\":\\s*\"[^\"]+\""
replacement: "\"name\": \"@acme/${{ parameters.serviceSlug }}\""
flags: "g"
- files:
- chart/values.yaml
pattern: "image:\\s+.+/template-service:[^\\s]+"
replacement: "image: ghcr.io/acme/${{ parameters.serviceSlug }}:${{ parameters.version }}"
flags: "g"
- id: publish
action: publish:github
input:
repoUrl: github.com?owner=acme&repo=${{ parameters.serviceSlug }}
defaultBranch: main
description: Service ${{ parameters.serviceName }}Rename Java package and Gradle coordinates with capture groups
Use this to refactor Java package declarations and Gradle metadata across a repo. It demonstrates capture groups, multiline handling, and multiple targeted replacements in one step.
steps:
- id: fetch-java-template
action: fetch:template
input:
url: https://github.com/acme/java-service-template/archive/refs/heads/main.zip
values:
org: ${{ parameters.org }}
domain: ${{ parameters.domain }}
serviceSlug: ${{ parameters.serviceSlug }}
- id: regex-refactor-java
action: regex:replace
input:
regExps:
- files:
- "src/main/java/**/*.java"
- "src/test/java/**/*.java"
pattern: "^package\\s+com\\.example(?:\\.(.*))?;"
replacement: "package com.${{ parameters.org }}.${{ parameters.domain }}$1;"
flags: "gm"
- files:
- build.gradle
pattern: "group\\s*=\\s*'com\\.example'"
replacement: "group = 'com.${{ parameters.org }}'"
flags: "g"
- files:
- settings.gradle
pattern: "rootProject\\.name\\s*=\\s*['\"][^'\"]+['\"]"
replacement: "rootProject.name = '${{ parameters.serviceSlug }}'"
flags: "g"
- id: publish-gitlab
action: publish:gitlab
input:
repoUrl: gitlab.com?owner=acme&repo=${{ parameters.serviceSlug }}
defaultBranch: main
description: Java service ${{ parameters.serviceSlug }}