Skip to main content

Command Palette

Search for a command to run...

Github Action

Published
•3 min read•View as Markdown

1️⃣ GitHub Actions kya hai (simple)

GitHub Actions = built-in CI/CD tool

  • Code push hote hi pipeline run

  • Build, test, scan, deploy automate

  • Jenkins ka cloud-native alternative (hosted runners available)


2️⃣ Core concepts (yeh yaad rakho)

✅ Workflow

Pipeline file
Location:

.github/workflows/ci.yml

✅ Event (Trigger)

Kab pipeline chale:

  • push

  • pull_request

  • workflow_dispatch (manual)

✅ Job

Workflow ke andar ek unit of work
Example: build job, test job

✅ Runner

Machine jahan job chalega

  • GitHub hosted: ubuntu-latest

  • Self-hosted: apna Linux server

✅ Step

Job ke andar commands / actions

✅ Action

Pre-built reusable step
Example:

  • actions/checkout

  • setup-java


3️⃣ Linux par GitHub Actions setup (Self-hosted Runner)

Agar tum apne EC2 / Ubuntu server par runner chalana chahte ho:

Step 1: GitHub Repo → Settings → Actions → Runners → New self-hosted runner

Step 2: Linux commands (example Ubuntu)

# create folder
mkdir actions-runner && cd actions-runner

# download runner
curl -o actions-runner-linux-x64.tar.gz -L https://github.com/actions/runner/releases/latest/download/actions-runner-linux-x64.tar.gz

# extract
tar xzf actions-runner-linux-x64.tar.gz

# configure
./config.sh --url https://github.com/<your-username>/<repo-name> --token <TOKEN>

# start runner
./run.sh

Runner online ho jaayega ✅

Background service ke liye:

sudo ./svc.sh install
sudo ./svc.sh start

4️⃣ First CI pipeline (Java + Maven example)

name: CI Pipeline

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

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout Code
        uses: actions/checkout@v4

      - name: Setup Java
        uses: actions/setup-java@v4
        with:
          distribution: 'temurin'
          java-version: '21'

      - name: Build with Maven
        run: mvn clean install

      - name: Run Tests
        run: mvn test

5️⃣ Artifacts upload/download

      - name: Upload Artifact
        uses: actions/upload-artifact@v4
        with:
          name: app-war
          path: target/*.war

Download in next job:

  deploy:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/download-artifact@v4
        with:
          name: app-war

6️⃣ Secrets & credentials (IMPORTANT)

Add secrets:

Repo → Settings → Secrets and variables → Actions → New secret

Use in workflow:

      - name: Login
        run: echo "Token is ${{ secrets.MY_TOKEN }}"

Never hardcode passwords ❌


7️⃣ Docker build & push example

name: Docker CI

on: [push]

jobs:
  docker:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Login to DockerHub
        run: echo "${{ secrets.DOCKER_PASS }}" | docker login -u "${{ secrets.DOCKER_USER }}" --password-stdin

      - name: Build Image
        run: docker build -t myapp:latest .

      - name: Push Image
        run: docker tag myapp:latest mydockerhub/myapp:latest
      - run: docker push mydockerhub/myapp:latest

8️⃣ Matrix build (multiple versions test)

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        java: [17, 21]
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-java@v4
        with:
          distribution: 'temurin'
          java-version: ${{ matrix.java }}
      - run: mvn test

9️⃣ Caching (fast builds)

      - name: Cache Maven
        uses: actions/cache@v4
        with:
          path: ~/.m2
          key: maven-${{ hashFiles('**/pom.xml') }}

🔟 Common mistakes

❌ Wrong YAML indentation
❌ Secrets hardcode
❌ Runner offline
❌ Missing checkout step
❌ Wrong branch trigger


1️⃣1️⃣ GitHub Actions vs Jenkins (short)

GitHub ActionsJenkins
Built-inNeed setup
YAML basedGroovy
Hosted runnersSelf-hosted
Easy for GitHubPowerful for enterprise

1️⃣2️⃣ Real-world use cases

  • CI pipeline for Java/Node

  • Docker image build

  • Deploy to EC2

  • Terraform automation

  • Nightly cron jobs

  • PR quality checks


1️⃣3️⃣ Minimal template (copy-paste)

name: Basic CI

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: echo "CI running..."