Skip to content

Migration Guide

Migrate from other CI systems to Go Gamma Actions.

From Manual GitHub Actions

Before

Multiple workflow files:

# .github/workflows/test.yml
name: Test
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-go@v6
        with:
          go-version: '1.24'
      - run: go test -race ./...

# .github/workflows/lint.yml
name: Lint
on: [push, pull_request]
jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-go@v6
      - uses: golangci/golangci-lint-action@v6

After

Single unified workflow:

# .github/workflows/ci.yml
name: CI
on: [push, pull_request]
jobs:
  ci:
    uses: go-gamma/actions/.github/workflows/ci.yml@v1
    with:
      go-version: '1.24'

From Travis CI

Before (.travis.yml)

language: go
go:
  - "1.24"
script:
  - go test -v -race ./...
  - go vet ./...
  - golangci-lint run

After

name: CI
on: [push, pull_request]
jobs:
  ci:
    uses: go-gamma/actions/.github/workflows/ci.yml@v1
    with:
      go-version: '1.24'

From CircleCI

Before (.circleci/config.yml)

version: 2.1
jobs:
  build:
    docker:
      - image: cimg/go:1.24
    steps:
      - checkout
      - run: go test ./...
      - run: golangci-lint run

After

name: CI
on: [push, pull_request]
jobs:
  ci:
    uses: go-gamma/actions/.github/workflows/ci.yml@v1
    with:
      go-version: '1.24'

From GitLab CI

Before (.gitlab-ci.yml)

stages:
  - test
  - lint

test:
  image: golang:1.24
  script:
    - go test -race ./...

lint:
  image: golangci/golangci-lint
  script:
    - golangci-lint run

After

name: CI
on: [push, pull_request]
jobs:
  ci:
    uses: go-gamma/actions/.github/workflows/ci.yml@v1
    with:
      go-version: '1.24'

Migration Checklist

1. Create New Workflow

mkdir -p .github/workflows

Create .github/workflows/ci.yml:

name: CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  ci:
    uses: go-gamma/actions/.github/workflows/ci.yml@v1
    with:
      go-version: '1.24'
    secrets:
      CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

2. Configure Secrets

Move secrets to GitHub:

  1. Settings > Secrets and variables > Actions
  2. Add CODECOV_TOKEN (if using coverage)

3. Test on Branch

  1. Create a test branch
  2. Push the new workflow
  3. Verify all checks pass

4. Remove Old Configuration

Once verified:

rm .travis.yml
rm -rf .circleci
rm .gitlab-ci.yml
git rm .github/workflows/test.yml
git rm .github/workflows/lint.yml

5. Update Documentation

Update README badges:

[![CI](https://github.com/org/repo/actions/workflows/ci.yml/badge.svg)](https://github.com/org/repo/actions)

Feature Comparison

Feature Manual Gamma Actions
Test with race Manual setup ✅ Default
Coverage upload Manual setup ✅ Built-in
50+ linters Configure each ✅ Pre-configured
Security scan Separate action ✅ Included
Cross-platform Matrix config ✅ One input
Releases Custom workflow ✅ Built-in