# Github Action part 2

Great, tumhara workflow ab sahi hai. Ab simple words me samjha deta hoon ki yeh file kya karti hai, aur future me tumhe kya cheez repeat karni padegi aur kya change kar sakte ho.

## Ye GitHub Actions file kya karti hai

### 1️⃣ `name: Build WF`

Workflow ka naam hai. GitHub UI me ye naam dikhega.  
Tum isko kuch bhi rakh sakte ho, jaise `CI Pipeline` ya `Java Build`.

---

### 2️⃣ `on:` – Kab chalegi pipeline

```plaintext
on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main
  workflow_dispatch:
  schedule:
    - cron: "10 14 * * 1-5"
```

Iska matlab:

* ✅ `push` → jab bhi main branch me code push karoge
    
* ✅ `pull_request` → jab PR banega main ke liye
    
* ✅ `workflow_dispatch` → tum manually “Run workflow” button se chala sakte ho
    
* ✅ `schedule` → har weekday 2:10 PM pe auto run hogi
    

Tumhe hamesha ye sab use karna zaroori nahi hai.  
Agar chaho to `schedule` hata sakte ho, ya sirf `push` rakh sakte ho.

---

### 3️⃣ `jobs:` – Actual kaam yahan hota hai

Tumhare 2 jobs hain:

#### 🔹 Job 1: `build`

```plaintext
jobs:
  build:
    runs-on: ubuntu-latest
```

Matlab ye job Ubuntu machine pe chalegi.

Steps:

```plaintext
- name: Checkout Code
  uses: actions/checkout@v5
```

👉 Repo ka code machine pe le aata hai

```plaintext
- name: Setup Java
  uses: actions/setup-java@v4
```

👉 Java 21 install karta hai

```plaintext
- name: Maven Build
  run: mvn clean install -DskipTests
```

👉 Project build karta hai (tests skip karke)

---

#### 🔹 Job 2: `testing`

```plaintext
testing:
  runs-on: ubuntu-latest
  needs: build
```

👉 `needs: build` ka matlab:  
Pehle `build` complete hoga, tab hi `testing` chalega

Steps:

* Code checkout
    
* Java setup
    
* Tests run
    
* Checkstyle run
    

---

## ❓ Kya mujhe hamesha yehi same script likhni padegi?

👉 Short answer: **Base structure same rahega, project ke hisaab se thoda change hoga.**

### Same rahega (mostly)

Ye cheezein har project me common hoti hain:

```plaintext
- uses: actions/checkout@v5
- uses: actions/setup-java@v4
runs-on: ubuntu-latest
```

### Change hoga (project ke hisaab se)

Ye part change karoge:

* Java version (17, 21, etc.)
    
* Build command
    
    * Maven: `mvn clean install`
        
    * Gradle: `./gradlew build`
        
    * Node: `npm install && npm test`
        

Example: Node project ke liye:

```plaintext
- name: Install deps
  run: npm install

- name: Run tests
  run: npm test
```

---

## ❓ Kya main kisi bhi project par GitHub Actions use kar sakta hoon?

👉 Haan, almost **har type ke project** ke liye:

| Project Type | GitHub Actions possible? | Example |
| --- | --- | --- |
| Java (Maven/Gradle) | ✅ Yes | tumhara case |
| React / Node.js | ✅ Yes | npm build |
| Python | ✅ Yes | pytest |
| Docker | ✅ Yes | docker build |
| CI/CD to AWS | ✅ Yes | deploy pipelines |
| Android | ✅ Yes | gradle build |

Bas commands change hoti hain.

---

## ❓ Ye kaam real companies me hota hai?

👉 100% yes.  
Companies isi cheez ko bolti hain:

* CI pipeline
    
* Build automation
    
* Test automation
    
* DevOps basic skill
    

Ye tumhare resume me strong point hai.
