DEV Community

Cover image for ✨ GitHub Actions - Explained✨
Shiva Charan
Shiva Charan

Posted on

✨ GitHub Actions - Explained✨

GitHub Actions is the built-in automation powerhouse of GitHub. If your organization is standardizing on GitHub, this is the obvious CI/CD choice. No excuses, no bolt-on tools, no duct tape.


🤔 What Are GitHub Actions?

The word actions has two meanings in GitHub. Do not confuse them.

1️⃣ Actions (capital A)

The GitHub service that lets you build CI/CD workflows directly inside your repo.

2️⃣ actions (lowercase a)

Reusable building blocks that do actual work, for example:

  • Run scripts or commands
  • Build and upload artifacts
  • Authenticate to Azure or AWS
  • Set up runtimes like Node.js or Java

There is a full Marketplace of prebuilt actions. Use them instead of reinventing garbage.


🧩 Core Components of GitHub Actions

Here is the real structure. Memorize it.

🔹 workflow

A YAML file that defines the entire automation pipeline.
Triggered by events like:

  • push
  • pull_request
  • manual dispatch

Stored in:
.github/workflows/*.yml


🔹 job

A major unit of work inside a workflow.

  • Jobs can run in parallel
  • Or sequentially using dependencies

Each job runs on its own virtual machine or container.


🔹 step

A single task inside a job.
Examples:

  • Run a shell command
  • Call a reusable action
  • Upload an artifact

🔹 action

A reusable function packaged as code.
Examples:

  • actions/checkout
  • actions/setup-node
  • azure/login

Use official ones. Random third-party junk is a security risk.


🔹 variable

A named value reused across steps.
Used for:

  • Config values
  • Paths
  • Environment flags

🔹 secret

An encrypted variable for sensitive data.
Used for:

  • Tokens
  • Passwords
  • API keys

Never hardcode secrets. Ever.


🛠️ How to Create a GitHub Actions Workflow

Follow this flow. No shortcuts.

1️⃣ Create a Repository

You need:

  • A GitHub account
  • A repository
  • Default branch, usually main

2️⃣ Create Workflow Directory

.github/workflows
Enter fullscreen mode Exit fullscreen mode

GitHub only detects workflows from here.


3️⃣ Create a YAML File

Name it anything you want, but it must end with .yml
Example:

ci-pipeline.yml
Enter fullscreen mode Exit fullscreen mode

4️⃣ Define the Workflow

Write your workflow logic in YAML.


5️⃣ Commit and Push

Until it is committed, nothing runs.
No commit, no CI/CD. Period.


📄 Example: Simple GitHub Actions Workflow

name: Basic GitHub Actions workflow

on: [push]

jobs:
  say_hello:
    runs-on: macos-latest

    steps:
    - name: Checkout The Repository
      uses: actions/checkout@v2

    - name: Print Hello (Run Build Script)
      run: |
        echo "Hello, GitHub Actions!"
Enter fullscreen mode Exit fullscreen mode

🔍 What This Workflow Actually Does

🏷️ Workflow Name

name: Basic GitHub Actions workflow
Enter fullscreen mode Exit fullscreen mode

Displayed in the Actions tab in GitHub.


⚡ Trigger

on: [push]
Enter fullscreen mode Exit fullscreen mode

Runs on every push to any branch.


🧱 Job Definition

jobs:
  say_hello:
Enter fullscreen mode Exit fullscreen mode

Creates a job named say_hello.


💻 Runner OS

runs-on: macos-latest
Enter fullscreen mode Exit fullscreen mode

Runs on an MacOS VM.
Ubuntu or macOS also work if your stack demands it.


🔄 Steps Breakdown

Step 1: Checkout Repo

- name: Checkout The Repository
  uses: actions/checkout@v2
Enter fullscreen mode Exit fullscreen mode

Pulls your repo code into the runner.
Without this, your job runs on an empty machine.


Step 2: Run Command

- name: Print Hello (Run Build Script)
  run: |
    echo "Hello, GitHub Actions!"
Enter fullscreen mode Exit fullscreen mode

Executes a shell command.
Replace this with:

  • build
  • test
  • deploy

🔗 Turning This Into Real CI/CD

To build a real pipeline, you stack more steps:

  • 🏗️ Build code
  • 🧪 Run tests
  • 📦 Package artifacts
  • 🚀 Deploy to cloud
  • 📊 Notify Slack or Teams

Once triggered, monitor everything under the Actions tab.


🎯 Bottom Line

GitHub Actions gives you:

  • Native CI/CD inside GitHub
  • Zero extra tooling
  • Full automation control
  • Scalable pipelines
  • Massive action ecosystem

If your org is on GitHub and not using Actions, that is pure operational incompetence.

Top comments (0)