Top 50 GitHub Actions Interview Question and Answers
-
What is GitHub Actions?
- GitHub Actions is a CI/CD platform that enables automation directly within GitHub repositories for building, testing, and deploying code.
-
How do workflows work in GitHub Actions?
- Workflows are automated processes defined in YAML files under
.github/workflowsand are triggered by specific events, such aspushorpull_request.
- Workflows are automated processes defined in YAML files under
-
What are jobs in GitHub Actions?
- Jobs are individual tasks that run within workflows. Each job can include multiple steps and can run in parallel or sequentially.
-
Explain steps in GitHub Actions.
- Steps are the individual tasks executed in a job. They can be custom shell commands or actions.
-
What are runners in GitHub Actions?
- Runners are servers that execute workflows. GitHub provides hosted runners, or you can use self-hosted runners for custom environments.
-
What’s the difference between GitHub-hosted and self-hosted runners?
- GitHub-hosted runners are managed by GitHub and provide common tools. Self-hosted runners are managed by users for custom configurations.
-
How do you define a workflow trigger in GitHub Actions?
- Workflow triggers are defined using the
onkeyword, specifying events likepush,pull_request, orschedule.
- Workflow triggers are defined using the
-
What are reusable workflows in GitHub Actions?
- Reusable workflows allow common tasks to be centralized in one workflow file and invoked in multiple repositories.
-
What are artifacts in GitHub Actions?
- Artifacts are files generated by workflows (e.g., build files) that can be saved and shared across jobs or with users.
-
How do you manage secrets in GitHub Actions?
- Secrets are stored in GitHub repository settings and accessed in workflows using
$syntax.
- Secrets are stored in GitHub repository settings and accessed in workflows using
-
How can you run a job only on specific branches?
- Specify branches under the
oncondition, e.g.,on: push: branches: [main, dev].
- Specify branches under the
-
What is a matrix strategy in GitHub Actions?
- Matrix strategy runs a job multiple times with different configurations (e.g., OS, Node.js versions).
-
Explain how caching works in GitHub Actions.
- GitHub Actions supports caching dependencies to speed up workflow execution using the
actions/cacheaction.
- GitHub Actions supports caching dependencies to speed up workflow execution using the
-
What is
needsin GitHub Actions?-
needsis used to define job dependencies, ensuring jobs run sequentially when necessary.
-
-
How do you add conditional logic to GitHub Actions workflows?
- Use
ifstatements to define conditions, such asif: success()orif: always().
- Use
-
What is the purpose of
continue-on-error?-
continue-on-error: trueallows a job to proceed even if a step fails.
-
-
What is a composite action?
- A composite action bundles multiple steps in one action, making it reusable.
-
How do you pass environment variables across jobs?
- Use
envfor global or job-level variables or pass them as outputs between jobs.
- Use
-
How do you debug workflows in GitHub Actions?
- Use
::debug::commands, review logs, or set upACTIONS_RUNNER_DEBUGin secrets for verbose logging.
- Use
-
How do you run scheduled workflows?
- Use
on: schedulewith a cron syntax (e.g.,cron: '0 0 * * 1'for weekly triggers).
- Use
-
How do you reuse workflows across repositories?
- Use reusable workflows by referencing them in other repositories with the
usessyntax.
- Use reusable workflows by referencing them in other repositories with the
-
How do you handle secrets in workflows safely?
- GitHub Actions masks secrets automatically and restricts them from appearing in logs.
-
What is the purpose of
job.container?-
job.containerallows running jobs inside a Docker container for isolated environments.
-
-
What is
jobs.<job_id>.outputs?- Outputs are values that can be set in a job and accessed by dependent jobs.
-
Explain the purpose of the
envkeyword.-
envdefines environment variables for steps, jobs, or workflows.
-
-
How can you use a Docker image in GitHub Actions?
- Define
container: image: <docker-image>in the job or use Docker commands in steps.
- Define
-
How do you specify a particular runner version?
- Choose an OS version (e.g.,
runs-on: ubuntu-latestorruns-on: windows-2019).
- Choose an OS version (e.g.,
-
What’s the purpose of
jobs.<job_id>.timeout-minutes?- This sets a timeout for the job, after which it’s automatically canceled.
-
What is a service container?
- Service containers are additional containers run alongside jobs, useful for databases or message queues.
-
What’s the difference between
actions/checkout@v2andactions/checkout@v3?- Each major version may introduce performance improvements and bug fixes; v3 includes enhancements over v2.
-
What are custom actions?
- Custom actions are user-defined tasks created in JavaScript or Docker that can be reused across workflows.
-
How do you use GitHub Actions with multiple repositories?
- Use
checkoutwith repository names or trigger workflows across repos usingrepository_dispatch.
- Use
-
What is concurrency in GitHub Actions?
- Concurrency controls simultaneous runs of workflows, allowing them to cancel previous runs if needed.
-
How can you prevent secrets from leaking?
- Mask secrets in logs, avoid
set-outputwith secrets, and usesecretssafely in workflows.
- Mask secrets in logs, avoid
-
How do you handle GitHub Actions permissions?
- Set granular permissions for actions in the repository settings or
permissionskeyword in workflows.
- Set granular permissions for actions in the repository settings or
-
What is the purpose of
GITHUB_TOKEN?-
GITHUB_TOKENis an auto-generated token providing access to the repo for secure API interactions.
-
-
What is
jobs.<job_id>.strategy.fail-fast?- It stops all jobs in a matrix if any job fails, reducing resource use.
-
How do you manage workflow concurrency?
- Use
concurrencyto limit simultaneous runs or cancel redundant runs withcancel-in-progress.
- Use
-
What are required status checks in GitHub Actions?
- These are checks that must pass before merging, typically set in branch protection rules.
-
Explain the purpose of
jobs.<job_id>.defaults.-
defaultsprovides defaultrunsettings for steps in a job.
-
-
How do you handle errors in GitHub Actions?
- Use
if: failure()for error handling, or addcontinue-on-errorfor steps that shouldn’t block progress.
- Use
-
What are the best practices for securing workflows?
- Avoid exposing secrets, validate inputs, and use reusable actions from trusted sources.
-
How can you optimize GitHub Actions for performance?
- Use caching, parallel jobs, matrix builds, and reusable workflows.
-
How do you troubleshoot failed workflows?
- Check logs, enable debug logging, and use the
::debug::command.
- Check logs, enable debug logging, and use the
-
What’s the purpose of
jobs.<job_id>.env?-
envat the job level sets environment variables available to all steps in that job.
-
-
How do you create a GitHub Action using JavaScript?
- Create an action.yml file, define inputs, and use JavaScript to build the action logic.
-
What’s the role of
jobs.<job_id>.if?-
ifallows conditional job execution based on specific criteria.
-
-
What is
on.workflow_call?-
on.workflow_calltriggers a reusable workflow, allowing it to be called from other workflows.
-
-
How can you share artifacts across jobs?
- Use
upload-artifactto save files in one job anddownload-artifactto access them in another.
- Use
-
What are the benefits of GitHub Actions over other CI/CD tools?
- GitHub Actions provides native GitHub integration, reusable workflows, strong community support, and flexible automation.