✦ Sample Prompt
Migrate our CI pipeline from Jenkins to GitHub Actions. For each repository:

1. Read the Jenkinsfile (handle both declarative and scripted syntax)
2. Create an equivalent .github/workflows/ci.yml
3. Map Jenkins pipeline concepts to GitHub Actions:
   - stages → jobs or steps
   - agent/node → runs-on
   - environment {} → env:
   - post { always/success/failure } → if: always() / if: success() / if: failure()
   - parallel stages → jobs with needs:
   - when { branch } → on: push: branches:
   - credentials() → secrets reference (add a comment listing required secrets)
4. For shared library calls, inline the equivalent logic or add a TODO comment
   if the library function is too complex to convert automatically
5. Remove the Jenkinsfile after migration

Preserve all build commands, test commands, and deployment steps exactly as they are.
Add a comment at the top of the new workflow: "# Migrated from Jenkins by Tidra"

The Problem

Jenkins pipelines are written in Groovy, a full programming language with conditionals, loops, shared libraries, and plugin-specific DSLs. There's no automated converter that handles the real-world complexity of production Jenkinsfiles: custom shared libraries your team built, plugin-specific steps that have no direct GitHub Actions equivalent, and Groovy scripted blocks that implement bespoke logic.

Each repository's Jenkinsfile is different. Some use declarative syntax, others use scripted pipelines. Many reference shared library functions that abstract away Jenkins-specific details. You can't just regex-replace your way to GitHub Actions, each pipeline needs to be read, understood, and reconstructed.

Teams that attempt this migration manually often burn out after converting 20% of their pipelines, leaving the organization running Jenkins indefinitely for the remaining 80%.

What Tidra Does

  1. Reads each Jenkinsfile and identifies the pipeline type (declarative vs. scripted), stages, agents, and shared library references
  2. Maps Jenkins pipeline constructs to their GitHub Actions equivalents, handling stage dependencies, parallel execution, post-build actions, and conditional triggers
  3. Converts Jenkins credential references to ${{ secrets.NAME }} syntax and adds a PR comment listing all secrets that need to be configured in GitHub
  4. Inlines shared library logic where possible, and adds TODO comments for complex custom functions that need manual review
  5. Generates the GitHub Actions workflow file, removes the Jenkinsfile, and creates a pull request with migration notes

Before & After

diff
Jenkinsfile
@@ File removed @@
- pipeline {
- agent { docker { image 'node:18' } }
- environment {
- NPM_TOKEN = credentials('npm-token')
- }
- stages {
- stage('Install') {
- steps { sh 'npm ci' }
- }
- stage('Test') {
- steps { sh 'npm test' }
- }
- stage('Build') {
- steps { sh 'npm run build' }
- }
- }
- post {
- always { junit 'reports/**/*.xml' }
- }
- }
.github/workflows/ci.yml
@@ New file @@
+ # Migrated from Jenkins by Tidra
+ name: CI
+ on:
+ push:
+ branches: [main]
+ pull_request:
+ jobs:
+ build:
+ runs-on: ubuntu-latest
+ container: node:18
+ env:
+ NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
+ steps:
+ - uses: actions/checkout@v4
+ - run: npm ci
+ - run: npm test
+ - run: npm run build
+ - uses: dorny/test-reporter@v1
+ if: always()
+ with:
+ name: Test Results
+ path: 'reports/**/*.xml'
+ reporter: jest-junit

Customization Tips

  • Shared libraries: If your Jenkinsfiles heavily reference a shared library (@Library('my-lib')), document the library's key functions first so the prompt can inline them accurately.
  • Docker agents: Jenkins docker agents map to GitHub Actions container: or individual uses: docker:// steps depending on the pattern.
  • Approval gates: Jenkins input steps for manual approval can be replaced with GitHub's environment protection rules and required reviewers.
  • Parameterized builds: Convert Jenkins parameters {} to GitHub Actions workflow_dispatch inputs for manual trigger support.

Ready to run this across your repos?

Connect your Git provider and Tidra opens pull requests in every repo that needs them.