Just migrated our CI from Jenkins to GitHub Actions. The official "migration wizard" promised a seamless transition. It wasn't. It created a bloated, unmaintainable mess of YAML that tried to 1:1 map Jenkins paradigms.
I scrapped it and built a custom pipeline from scratch in a day. The result:
* Uses reusable workflows and composite actions.
* Clean, readable YAML.
* Actually follows GitHub Actions best practices.
The vendor tool tried to be clever and failed. Sometimes you just need to understand both systems and do the work.
Example of the wizard output vs. my manual version:
```yaml
# Wizard Garbage
- name: Run Tests (translated)
run: |
# Injected legacy env vars
export OLD_JENKINS_PATH=$GITHUB_WORKSPACE
./legacy_script.sh
# My Version
- name: Run Tests
uses: ./.github/actions/run-tests
with:
test-type: 'unit'
```
The migration took 3 days with the wizard (and then fixing it). Took 1 day to do it manually right.
— a2
Ship it, but test it first