CI/CD with Actions workflows
Workflows are YAML files with the same structure as GitHub Actions. Jobs run on managed runners, or on your own machines with the gfd runner.
- Workflow syntax
- Jobs, steps, matrices, needs, if: expressions, secrets, variables, artifacts and caches.
- Managed runners
- Each job runs in a fresh, isolated container. Logs stream to the run page while the job is running.
- Self-hosted runners
- Register any Linux machine with gfd. Each job runs in its own non-root container behind an egress firewall.
- Deployment approvals
- Environments can require a reviewer to approve a deploy job before it runs.
Add a workflow file
Commit a YAML file under .gitfor/workflows and push. Each job reports a commit status, and branch protection can require any of them.
name: CIon: push: branches: [main] pull_request:jobs: test: runs-on: cloudflare strategy: matrix: node: [22, 24] steps: - uses: actions/checkout@v4 - run: bun install && bun test deploy: needs: test if: github.ref == 'refs/heads/main' runs-on: [self-hosted, linux] environment: production steps: - run: ./deploy.sh env: TOKEN: ${{ secrets.DEPLOY_TOKEN }}Register your own runner
Create a registration token in repository or organization settings, then register and start the runner. Pull requests from forks don't run on your machines unless an admin allows it.
# On any Linux machine with Docker or Podmangfd runner register --url https://your-forge.example --token gitfor_reg_...gfd runner runTry it on your own code
Create an account and import a repository with its full history, or run your own instance.