diff --git a/.github/workflows/manual.yml b/.github/workflows/manual.yml
new file mode 100644
index 00000000..11b2e355
--- /dev/null
+++ b/.github/workflows/manual.yml
@@ -0,0 +1,32 @@
+# This is a basic workflow that is manually triggered
+
+name: Manual workflow
+
+# Controls when the action will run. Workflow runs when manually triggered using the UI
+# or API.
+on:
+ workflow_dispatch:
+ # Inputs the workflow accepts.
+ inputs:
+ name:
+ # Friendly description to be shown in the UI instead of 'name'
+ description: 'Person to greet'
+ # Default value if no value is explicitly provided
+ default: 'World'
+ # Input has to be provided for the workflow to run
+ required: true
+ # The data type of the input
+ type: string
+
+# A workflow run is made up of one or more jobs that can run sequentially or in parallel
+jobs:
+ # This workflow contains a single job called "greet"
+ greet:
+ # The type of runner that the job will run on
+ runs-on: ubuntu-latest
+
+ # Steps represent a sequence of tasks that will be executed as part of the job
+ steps:
+ # Runs a single command using the runners shell
+ - name: Send greeting
+ run: echo "Hello ${{ inputs.name }}"
diff --git a/0-Git & Github Crash Course.md b/0-Git & Github Crash Course.md
new file mode 100644
index 00000000..0cf5de58
--- /dev/null
+++ b/0-Git & Github Crash Course.md
@@ -0,0 +1,155 @@
+1. Download and install Git on your system: https://git-scm.com/download
+
+
+
+
+2. Configuring Git
+
+After installing Git, you can also configure it - most importantly, you can set a username and email address that will be connected to all your code snapshots.
+
+- This can be done via:
+```
+git config --global user.name "your-username"
+git config --global user.email "your-email"
+```
+You can learn more about Git's configuration options here: https://git-scm.com/docs/git-config
+
+Incase to check all the git global configurations, hit:
+```
+git config --list
+```
+
+And to know more about git commands or want to look into any specific git command, hit:
+```
+git help
+```
+
+
+
+
+
+
+
Git Commands
+
+
+
+
+3. When you have some new code repo on your local system , so as a first step you should open a terminal and set the location to the repo's folder and then hit
+
+ ```
+ git int # this will intiallize the project in git by creating invisble .git folder
+ ```
+
+
+
+
+
+4. Stagging files and creating commits
+
+
+ - these commits are created so that you can anytime go back to any of these commits..
+ - from above image we learned
+ - **git add **: it will set the stage to commit
+ - Another way to stage all files at ones is "**git add .**" or "git add *" . Downside of this approach is that it add all the files in the repo which may include any unwanted files.. and so you can add ".gitignore" file and mention files which you want git to ignore and Hence now you can use "git add ." and it will add only the required files and ignore the unwanted files(refere point # 9)
+ - **git commit -m " ENTER YOUR MESSAGE HERE "**: it will commit the file(s) to git(not to github)
+ - **git status**: it provide current status like is the file in stagging or commited, what all files etc..
+ - **git log**: it will provide you all the commits you have done so far, with date-time and Unique ID of that commit...
+
+
+
+
+5. Multiple Commits and Checking out Snapshots
+
+
+
+ - **git checkout ** : it will change the "code" to the snapshot of that "commit id only" from the "latest code base". And if you check status (git status) "head" directs to the "commit id" which we provide. By default git "head" directs to latest "commmit id".
+
+ - **git checkout main** : By anytime if you want to restore and go back to the latest head, just checkout to "main"(means "main branch") will restore everything. and now you will see the "code base" is again back to the previous latest state and you can check all the commits or status by "git status" where "head" will direct to the latest commit..
+
+ **NOTE** - the git checkout is not delete anything, but it was tempraray change in commits..
+
+
+
+
+6. Undo Commits or Reverting changes with "Git revert"
+
+
+
+ - From above image, if you have to revert the commint "C6", then by using "git revert < id-of-C6 >" this will create new commit as "C7" as shown form above figure. Note - its not deleting "C6", instead just creating new "C7".
+
+ - **git revert ** - it will revert the changes of commit by creating new commit (which is just absent of revert code). In one word it Undo commit
+
+
+
+
+
+7. Removing commits or Resetting code with "git reset"
+
+- **git reset --hard ** : to will delete all the commits which are before mentioned commit ID..
+- For we have commits C1,C2,C3,C4,C5,C6 and now if you run "git reset --hard ". It will delete C4, C5,C6 and we have following commits: C1, C2, C3 available only...
+
+
+8. All the above Key commands in Git
+
+
+
+
+9. Stagging Multiple files and ignoring with .gitignore
+
+
+ - Create ".gitignore" file in your repository and include all the files names which you wanted to be ignored by git and not pushed, as shown in above image, which is ".vscode" and ".DS_Store"
+ - now you can use "git add ." that this will stack all the files at ones and ignores all the files which are mentioned in the .gitignore file.
+
+
+
+
+
+
+
+
+Branches
+
+
+
+
+
+
+10. Understanding the Git Branches
+
+
+
+ - When you intiatlize the git project with "git init", you get by default "main" branch(will contains all your commits)
+ - **git branch < Name of Branch>** : it will create new branch, by default this will take your latest commit(as starting point) and create new branch, as shown above for "C2" commit for branch "feature-1" and then you can shift to new branch with **git checkout < Name of Branch** (eg git checkout feature-1)
+ - **git checkout -b < Name of Branch>** : this is alternate way of creating new branch and started using it right away..
+ - **git branch** : it will share all the exsisting branches names (with current branch name in green coloured and star)
+ - **git branch -D < Name of Branch>** : it will delete the branch.
+ - **git merge < Name of Branch>** : it will merge name mentioned in the command with the current active branch and automatically try to resolve the conflicts, for example as shown in above image we can merge "feature-1" to "main" branch. then acivate main branch by "git checkout main"(and check current branch by git log, main branch should be activate) and then merge "feature-1" with main branch by git merge "feature-1" .. now after successful merged, this will show "how many files changed? how many lines added and delted"
+
+
+
+
+
+
+
+Github
+
+
+
+
+
+
+11. Github Intro
+
+
+
+11. Connecting Local and Remote Repositories
+
+
+```
+git remote add : #this will connect github to local git repository(eg git remote add origin https:github.com/abc/xyz.git)
+
+```
+
+
+
+12. pushing commit to github and understanding
diff --git a/01- Github Actions Basic Building blocks and Components.md b/01- Github Actions Basic Building blocks and Components.md
new file mode 100644
index 00000000..8f1fad7a
--- /dev/null
+++ b/01- Github Actions Basic Building blocks and Components.md
@@ -0,0 +1,102 @@
+Github Actions Basic Building blocks and Components
+
+- Basic Buidling blocks of Github Actions:
+
+
+ - By Default each job run parallely and hence have its own runner.
+ ```
+ job:
+ test: #job 1
+ runs-on: ubuntu-latest #runner 1
+ ..
+ ..
+
+ deploy: #job 2
+ runs-on: ubuntu-latest #runner 2
+ ..
+ ..
+ ```
+- To make run jobs sequentially we have to just add "needs"
+ ```
+ job:
+ test: #job 1
+ runs-on: ubuntu-latest #runner 1
+ ..
+ ..
+
+ deploy: #job 2
+ needs: test #"deploy" job needs "test" to execute first and if it fails, "deploy" job will not execute, which makes it sequential..
+ runs-on: ubuntu-latest #runner 2
+ ..
+ ..
+ ```
+- Multiple event triggers, add all the ways of trigger under "on"
+ ```
+ name: Deploy Project
+ on: [push, workflow_dispatch] #here "push" means whenever pushing code, "workflow_dispatch" means manually running the work..
+ jobs:
+ ```
+- Expression and Context Objects
+ ```
+ name: Output information
+ on: workflow_dispatch
+ jobs:
+ info:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Output GitHub context
+ run: echo "${{ toJSON(github) }}" #expression. to make it readbale wrapped with function "toJSON()"
+ ```
+ - To know about Github Action Context objects: https://docs.github.com/en/actions/learn-github-actions/contexts
+ - Just like we used above exmaple "github" which is context object..
+ - To know about Github Actions Expression/Function: https://docs.github.com/en/actions/learn-github-actions/expressions
+ - Just like we used above exmaple "${{ toJSON(github) }}" which is Expression..
+
+- Official Github Actions Doc: https://docs.github.com/en/actions
+
+- On Github Marketplace we have two options: Apps and Actions:
+ - Here is Github Action Marketplace : https://github.com/marketplace?type=actions
+
+- Github Checkout Action:
+ - Repo: https://github.com/actions/checkout?tab=readme-ov-file
+ - Marketplace: https://github.com/marketplace/actions/checkout
+
+ ```
+ jobs:
+ test:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Get code
+ uses: actions/checkout@v3 #"actions/checkout" define the name and "v3" is the version of teh action
+ #we can also add more parameters to the checkout action with "with" command refer here: https://github.com/marketplace/actions/checkout#usage
+ ```
+
+- **Failing and Analysizing Workflows:** To understand any worflow or just to undestand if whats happening underthe worflow, always refer to the logfile of the workflow which is visible after your workflow executes under the "Actions" tab.
+
+ Errors
+
+1. **Error to push github actions worflow from local to github**:
+
+ To have access to push Github Action workflows from local system to Github you need to have "developer token" which have access to not just repository but also to workflow, which you can create it from here: https://github.com/settings/tokens (if there are other tokens as well remove them for you) and tick the workflow aswell, as shown in below image:
+
+
+
+
+ Now you have createed new token using which you can push the github workflow to github..
+
+
+ Summary: Github Actions Basic Building blocks and Components
+
+
+
+- Final Deployment Code - https://github.com/BaliDataMan/github-actions-course-resources/blob/main/Code/02%20Basics/03%20Finished%20Project/.github/workflows/deployment.yml
+
+
+
+ - Another 2 deployments exmaples:
+ - Deployment 01: https://github.com/BaliDataMan/github-actions-course-resources/blob/main/Code/02%20Basics/05%20Practice%20Project%20(Finished)/.github/workflows/deployment1.yaml
+
+
+
+ - Deployment 02: https://github.com/BaliDataMan/github-actions-course-resources/blob/main/Code/02%20Basics/05%20Practice%20Project%20(Finished)/.github/workflows/deployment2.yaml
+
diff --git a/02-Workflows & Events Deep Dive.md b/02-Workflows & Events Deep Dive.md
new file mode 100644
index 00000000..7f015742
--- /dev/null
+++ b/02-Workflows & Events Deep Dive.md
@@ -0,0 +1,113 @@
+Workflows & Events Deep Dive
+
+
+
+ - Official doc of Events that trigger worflow: https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows
+
+- This Will trigger the worflow if there is
+ - "push on any branch or anywhere in the repo.." and
+ - also "using workflow dispatch we can trigger the worflow through the button"
+ ![image](https://github.com/BaliDataMan/github-actions-course-resources/assets/29046663/44be287f-4dea-488a-a8d9-7fdea0351101)
+
+
+
+
+ Event Filters and Activity types
+
+
+
+
+
+ Activity Types
+
+
+ - Link to the above screen shot: https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request
+ - By default "pull request" activity type triggers when, activity is "opened", "synchronised" or "reopened".
+
+ - Example of Activity type, using for "pull request" - which shows that the workflow will trigger only when an "Open PR request is raised"
+
+
+
+
+
+
+Event Filters
+
+ ![image](https://github.com/BaliDataMan/github-actions-course-resources/assets/29046663/a932e0e1-df49-4b2b-80b9-201b8cc7639c)
+
+ - We can triggere event filter on "push" by the following filters as underlined above:
+ - branches
+ - tags
+ - branch-ignore
+ - Tag-ignore
+
+ - Example of Event trigger:
+
+
+
+ - Another examples of adding event triggers(the branches part of "pull request"):
+
+
+
+
+
+- Offical doc to learn about Event filters: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions
+- Filter Pattern Cheat Sheet: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet
+
+
+
+
+Final Github worflow code: Having Events filters and activity type asper above exmaples
+
+ ![image](https://github.com/BaliDataMan/github-actions-course-resources/assets/29046663/16741e1a-a9d9-42ab-a98a-73880ab1e6b6)
+
+
+ - Link to the worflow: https://github.com/BaliDataMan/github-actions-course-resources/blob/main/Code/03%20Events/02%20Finished%20Project/.github/workflows/demo1.yml
+
+
+
+
+
+ Special Behaviour: Forks & Pull Request Events
+
+
+
+ - If its added as Contributor the flow will excute, but if someone unknown or first time raising PR, the Github worflow will not execute even if the PR is asper the code written in Github worflows.
+
+
+
+
+
+ Cancelling and Skipping the Workflow
+
+
+
+
+
+- You can Manually cancel the worflow through the button as shown with yellow circle below:
+
+
+
+- You can skip workflow runs triggered by the push and pull_request events by including a command in your commit message.
+
+
+ - Example of skipping the worflow:
+
+
+
+
+ - For more details (official doc: https://docs.github.com/en/actions/managing-workflow-runs/skipping-workflow-runs):
+
+
+
+
+
+
+
+
+ Summary
+
+
+
+
+
diff --git a/03-Job Artifacts & Outputs.md b/03-Job Artifacts & Outputs.md
new file mode 100644
index 00000000..347b47ca
--- /dev/null
+++ b/03-Job Artifacts & Outputs.md
@@ -0,0 +1,8 @@
+ Job Artifacts & Outputs
+
+
+
+
+ Understanding Job Artifacts
+
+
diff --git a/Availability-&-Pricing b/Availability-&-Pricing
new file mode 100644
index 00000000..9f2eabab
--- /dev/null
+++ b/Availability-&-Pricing
@@ -0,0 +1,7 @@
+GitHub Actions: Availability & Pricing
+
+- In public repositories, you can use GitHub Actions for free. For private repositories, only a certain amount of monthly usage is available for free - extra usage on top must be paid.
+
+- The exact quotas and payment details depend on your GitHub plan, a detailed summary can be found here: https://docs.github.com/en/billing/managing-billing-for-github-actions/about-billing-for-github-actions
+
+- If you can't find an "Actions" tab in your GitHub repository, you can should enable them as described here: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository
diff --git a/Code/02 Basics/01 First Workflow/Running Multi-Line Shell Commands.md b/Code/02 Basics/01 First Workflow/Running Multi-Line Shell Commands.md
new file mode 100644
index 00000000..4b0bc191
--- /dev/null
+++ b/Code/02 Basics/01 First Workflow/Running Multi-Line Shell Commands.md
@@ -0,0 +1,12 @@
+Thus far, you learned how to run simple shell commands like echo "Something" via run: echo "Something".
+
+If you need to run multiple shell commands (or multi-line commands, e.g., for readability), you can easily do so by adding the pipe symbol (|) as a value after the run: key.
+
+Like this:
+```
+...
+run: |
+ echo "First output"
+ echo "Second output"
+```
+This will run both commands in one step.
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..440f82b0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,9 @@
+
+Github Actions Index
+
+0. [Git & Github Crash Course](https://github.com/BaliDataMan/github-actions-course-resources/blob/main/Git-%26-Github-Crash-Course.md)
+
+1. [Github Actions Basic Building blocks and Components](https://github.com/BaliDataMan/github-actions-course-resources/blob/main/01-%20Github%20Actions%20Basic%20Building%20blocks%20and%20Components.md#github-actions-basic-building-blocks-and-components)
+
+2. [Workflows & Events Deep Dive](https://github.com/BaliDataMan/github-actions-course-resources/blob/main/02-Workflows%20%26%20Events%20Deep%20Dive.md#workflows--events-deep-dive)
+3. [Job Artifacts & Outputs](https://github.com/BaliDataMan/github-actions-course-resources/blob/main/03-Job%20Artifacts%20%26%20Outputs)