GitHub Actions Vocabulary: CI/CD Terms for Developers
Master GitHub Actions vocabulary — workflows, triggers, jobs, steps, runners, artifacts, secrets, matrix builds, OIDC, and more CI/CD terms explained for developers.
GitHub Actions is the built-in CI/CD platform for GitHub repositories. It automates everything from running tests on pull requests to deploying to production. Whether you are writing your first workflow or reviewing a colleague’s pipeline, this vocabulary guide will help you understand and discuss GitHub Actions confidently.
The Core Structure
Workflow
A workflow is an automated process defined in a YAML file in .github/workflows/. A repository can have multiple workflows — for example, one for CI on pull requests and one for deployment on merge to main.
“The deployment workflow is failing — let’s check the Actions tab."
"I’ll add a new workflow that runs the linter on every PR.”
Trigger (on:)
The on: key defines what events trigger a workflow. Common triggers include push, pull_request, schedule (cron), workflow_dispatch (manual), and release.
“The workflow is triggered on
pushtomainand onpull_requesttargetingmain."
"Add aworkflow_dispatchtrigger so we can run the deployment manually when needed.”
Job
A job is a set of steps that run on the same runner. Jobs in a workflow run in parallel by default, but you can make them sequential with needs:.
“Split the build and deploy into separate jobs — deploy should only run if build succeeds."
"The test job takes 8 minutes. Let’s split it into a matrix so different test suites run in parallel.”
Step
A step is a single task within a job. Steps run sequentially on the same runner. A step can either run a shell command (run:) or use a pre-built action (uses:).
“The step is failing because the Node version is wrong — add a
setup-nodestep before it.”
Action
An action is a reusable unit of automation. GitHub provides official actions (e.g., actions/checkout, actions/setup-node), and thousands of community actions are available on the GitHub Marketplace.
“Use the official
actions/checkoutaction to clone the repo in your workflow."
"There’s a community action for deploying to S3 — no need to write the shell script yourself.”
Runners and Environments
Runner
A runner is the server that executes a job. GitHub provides hosted runners (Ubuntu, Windows, macOS). You can also use self-hosted runners on your own infrastructure.
“The job runs on
ubuntu-latestby default — specify a fixed version likeubuntu-24.04for reproducibility.”
Self-Hosted Runner
A self-hosted runner is a machine you manage yourself, registered with GitHub to run workflows. Useful when you need specific hardware, more power, or access to private network resources.
“We use a self-hosted runner for the iOS build because it needs a macOS machine with Xcode."
"Make sure the self-hosted runner is ephemeral — don’t let state persist between runs.”
Environment
An environment in GitHub Actions defines deployment targets (e.g., staging, production). Environments can have protection rules — required reviewers, wait timers — before a deployment job proceeds.
“The production environment requires approval from two reviewers before the deploy job runs."
"Secrets scoped to an environment are only available to jobs that target that environment.”
Data, Secrets, and Outputs
Secret
A secret is an encrypted value stored in GitHub and injected into workflows as an environment variable. Secrets are masked in logs.
“Store the API key as a repository secret and reference it in the workflow as
${{ secrets.API_KEY }}."
"Never hardcode credentials in the workflow file — always use secrets.”
Artifact
An artifact is a file or directory produced by a workflow that you want to persist or share between jobs. Use actions/upload-artifact to save and actions/download-artifact to retrieve.
“Upload the build output as an artifact so the deploy job can download it without rebuilding."
"Store the test report as an artifact so we can inspect it after the run.”
GITHUB_TOKEN
GITHUB_TOKEN is an automatically generated token available in every workflow. It has permissions to interact with the repository — creating releases, posting PR comments, pushing packages — without needing a personal access token.
“Use
${{ secrets.GITHUB_TOKEN }}to authenticate the action — no need to create a PAT."
"Limit theGITHUB_TOKENpermissions to only what the workflow needs:contents: read, packages: write.”
Advanced Features
Matrix Strategy
A matrix lets you run a job multiple times with different variable combinations — for example, testing against multiple Node versions or operating systems simultaneously.
“We use a matrix to run the tests on Node 18, 20, and 22 in parallel."
"Addos: [ubuntu-latest, windows-latest]to the matrix to catch platform-specific bugs.”
Concurrency
The concurrency: key ensures that only one run of a workflow (or a concurrency group) is active at a time. Useful for deployments where you don’t want two deploys running simultaneously.
“Set
concurrencyon the deploy workflow withcancel-in-progress: trueso a new push cancels the previous deploy.”
if Condition
The if: condition on a job or step controls whether it runs. You can use expressions based on event data, job status, or any context variable.
“Add
if: github.ref == 'refs/heads/main'so the deploy step only runs on the main branch."
"Useif: failure()to run the notification step even when the previous step fails.”
Cache
The actions/cache action stores and restores files between runs — typically node_modules, build caches, or downloaded dependencies. It dramatically speeds up workflows.
“Cache the
node_modulesdirectory using thepackage-lock.jsonas the cache key."
"The cache is stale — the key changed when we updated a dependency.”
Reusable Workflow
A reusable workflow is a workflow that can be called from another workflow using workflow_call. It promotes DRY (Don’t Repeat Yourself) principles across multiple repositories.
“We extracted the build and test logic into a reusable workflow in the shared
platform-cirepo."
"Any team can call the shared deploy workflow and pass in their environment-specific inputs.”
Composite Action
A composite action combines multiple steps into a single action, packaged as a reusable unit within your repository. Unlike a reusable workflow, a composite action runs within the calling job.
“We created a composite action that sets up Node, installs dependencies, and runs lint — one
uses:call instead of three steps.”
OIDC (OpenID Connect)
OIDC allows GitHub Actions to request short-lived credentials from cloud providers (AWS, Azure, GCP) without storing long-lived secrets. The runner authenticates using a JWT token that the cloud provider verifies.
“We switched from static AWS access keys to OIDC — the workflow gets temporary credentials automatically."
"With OIDC, there are no long-lived secrets to rotate or accidentally expose.”
How to Use This in Conversation
In PR review:
“The workflow runs on every push to every branch — add a
paths:filter so it only triggers when relevant files change.”
In planning:
“Let’s use a matrix build to run the integration tests against both Postgres 15 and 16 so we don’t get surprised by a version upgrade.”
In debugging:
“The deploy job is being skipped — check the
if:condition. It’s probably evaluating to false becausegithub.refdoesn’t match.”
When setting up a new project:
“First add the
GITHUB_TOKENpermissions block to the workflow — the default is too permissive. Then add the OIDC trust policy on the AWS side.”
GitHub Actions vocabulary is essential for any developer who wants to own their CI/CD pipeline, contribute to workflow improvements, or simply understand why the green tick appeared (or didn’t) on their PR.