GitHub Actions Tutorial | From Zero to Hero in 90 minutes (Environments, Secrets, Runners, etc)
Ғылым және технология
In this GitHub Actions Tutorial you will be able to go from zero to hero in 90 minutes. This is a complete course about GitHub Actions.
We will cover EVERYTHING about GitHub Actions:
- What is GitHub Actions
- How GitHub Actions works
- How to Build a GitHub Action
- GitHub Hosted Runners vs Self-hosted runners
- GitHub Actions Environments
- GitHub Actions Secrets
And much more.
🌟EXCLUSIVE CONTENT🌟
Do you want to access exclusive content, live chats and Q&As, polls, and even 1:1 calls with me? Join my Patreon: / coderdave
🆘 NEED HELP? 🆘
Book a 1:1 Consultation with CoderDave: geni.us/cdconsult
🙏🏻SUPPORT THE CHANNEL🙏🏻
Buy me a coffee: www.buymeacoffee.com/CoderDave
PayPal me donation: paypal.me/dabenveg
🎥VIDEOS
► Automate Everything with GitHub Actions: • Automate EVERYTHING wi...
► Actions Environments: • GitHub Actions: Approv...
► GitHub Super Linter: • The EASIEST Way to Lin...
💬JOIN THE COMMUNITY
► Discord: geni.us/cddiscord
► Newsletter: coderdave.io/newsletter
► Blog: dev.to/n3wt0n
► GitHub: github.com/n3wt0n
► Twitter: / davidebenvegnu
► Facebook: / coderdaveyt
⏲TIMESTAMPS
0:00 Intro
1:19 GitHub Actions Overview
6:04 Components of GitHub Actions
7:03 Events (Triggers) details
8:55 Workflows details
15:32 Actions details
20:36 Types of Actions
23:02 Example of Actions
24:31 Actions Creation: Different approaches
27:33 Starter workflows
28:26 Demo: GitHub Actions creation, syntax, and governance
39:27 Debug and Troubleshooting
46:14 CI Workflows with Actions
51:39 CD Workflows with Actions
55:15 GitHub Actions Environments
56:08 Protection Rules
57:52 Deployment Logs
58:50 Demo: Environments Creation, Management and Use
1:04:27 Hosted vs Self-hosted Runners
1:08:48 Runner Groups
1:12:47 GitHub Actions Secrets Overview
1:14:11 Secrets: Organization vs Repository vs Environment
1:17:43 Demo: Secrets Creation, Management and Use
1:23:28 Advanced Scenarios: Custom Parameters, Conditionals
🎤PODCAST: geni.us/cdpodcast
❓QUESTIONS?
Have a question about DevOps, Cloud, Coding, or Anything Else? Post in comments section of this video!
🔴SUBSCRIBE to CoderDave here: kzread.info?sub...
_______________
👕Get my MERCH: geni.us/cdmerch
🔮TOOLS I USE
► Twingate - Connect to your Private Resources SECURELY: geni.us/twingate
► TubeBuddy - #1 KZread channel Management tool (FREE): www.tubebuddy.com/CoderDave
► Moosend - Free Newsletter and Automation Platform: geni.us/moosend
📸🖥️GEAR AND SOFTWARE
► Music - Epidemic Sound (Get 30 days free): epidemicsound.com/referral/zf...
► Editing - Adobe Premiere Pro: geni.us/AdobeVideo
► Gear I Use for KZread: kit.co/CoderDave/gear-i-use-f...
► Gear I Use for Streaming: kit.co/CoderDave/gear-i-use-f...
► My Computer Setup: kit.co/CoderDave/main-compute...
► Full office setup: github.com/n3wt0n/work-from-h...
Disclaimer:
Some product links are affiliate links which means if you buy something I'll receive a small commission at no additional cost to you.
As an Amazon Associate, I earn from qualifying purchases.
Пікірлер: 191
Thank you so much for sharing some of your knowledge with us for free. You're awesome. When I do long sessions of reading documentations I always end up with an headache because of my bad eyesight. The videos like this one save me so much time and health.
@CoderDave
Жыл бұрын
I am really glad to know you found it useful :)
Thank you for this, just got a project at work where I need to sort out a bunch of different pipelines for our repos, so this is perfect.
@CoderDave
Жыл бұрын
Always happy to help
Excellent tutorial. Helped me connect lot of moving things. Thanks for putting it up :)
@CoderDave
Жыл бұрын
Glad it was helpful
Really great walkthrough on Github Actions. Good job!
This is amazing, I love this one so much... Thank you a ton.
@CoderDave
2 жыл бұрын
Thank you! What do you like the most?
This is a very good tutorial for beginners. Explained most of the things very clearly . Thank you so much Davide.
@CoderDave
11 ай бұрын
You’re very welcome!
This was really good and helped connect the dots for me. Thank you so much for this video!
@CoderDave
2 жыл бұрын
Thanks, glad it was as helpful
This is a really well put together tutorial! Thank you for sharing :)
@CoderDave
8 ай бұрын
Thanks! Happy you enjoyed it
This was a great tutorial! Well done and thank you 😁
@CoderDave
2 жыл бұрын
Thanks for the feedback ☺️
@AleksandarIvanov69
2 жыл бұрын
@@CoderDave I was surprised to learn that in June this year, the `container:` option wasn't available. I didn't know it was a very new feature.
very informative and compact tutorial. I learnt lots of new thing and revised some of previous concepts.
@CoderDave
2 жыл бұрын
Glad it was helpful!
Thank you for this awesome product demo. If possible please also make a follow-up video with and end-to-end pipeline demo.
@CoderDave
2 жыл бұрын
Thanks and happy to be helpful. I’ve done something like that already, live: Let's Build a GitHub Project Using Actions - LIVE CI\CD with GitHub From Scratch kzread.info/dash/bejne/lKZomrmCp8vRYtI.html
I love these kind of clean content here. Thanks for these knowledge.
@CoderDave
Ай бұрын
Glad you like them!
Thank you. This one deserves more views!
@CoderDave
2 жыл бұрын
Thanks! ☺️
Mate, All my appreciation for this great useful content!
@CoderDave
Жыл бұрын
Thanks! Glad to hear it!
Found the right one! Thanks alot!
@CoderDave
2 жыл бұрын
Glad I could help!
Really great tutorial! Thank you so much for sharing!
@CoderDave
6 ай бұрын
Really glad you enjoyed it ☺️
This is gold!!! Thank you sooo much!!!
@CoderDave
2 жыл бұрын
You're so welcome! And thanks for the feedback :)
Brilliant. Really helpful man.
@CoderDave
2 жыл бұрын
Thanks for the feedback! And happy to have been helps☺️
Awesome content! Thank you so much by provide us man!
@CoderDave
2 жыл бұрын
My pleasure!
I prefer long videos when especially when it's like from zero to hero. Thanks gain for great content.
@CoderDave
2 жыл бұрын
Noted! Glad you liked it and thanks for the compliment :)
Amazing ! Thank you for this good course
@CoderDave
Жыл бұрын
Great to see you liked it ☺️
Amazing content. Please make more such marathon courses!!!!
@CoderDave
2 жыл бұрын
Thanks! I have more coming 😉
Superb tutorial! Thanks
@CoderDave
2 жыл бұрын
Thanks so much! Always happy to be helpful
Hi Dave. Thanks for this introduction to GitHub Actions. A good start to use them more. Left you a subscription and a thumbs up of course.
@CoderDave
Жыл бұрын
Thanks and happy to know you found it useful
Thanks! That helps a lot!
@CoderDave
Жыл бұрын
Great to know you found it helpful 😀
Great tutorial. Would love a video on how to write the GitHub actions file. Much appreciated.
@CoderDave
2 жыл бұрын
Thanks. Do you mean something like this? kzread.info/dash/bejne/lKZomrmCp8vRYtI.html
Great video! Thank you
@CoderDave
2 жыл бұрын
Happy you like it ☺️
Great content Dave. Just one small request. Can you please show some example on Github actions log line grouping?
@CoderDave
Жыл бұрын
Hey there, thanks! I don't have a video about that yet, but I will look into making one. However the docs are here: docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#grouping-log-lines and it is quite simple to do. Do you have any doubt or issue about it?
Finally Found What I'm Looking For 🎉
@CoderDave
2 жыл бұрын
Glad it was helpful ☺️
Hi! Would you happen to know how to automatically label any issue/PR when assigned to a specific Project? Thanks!
Great Video for github actions. Thanks
@CoderDave
2 жыл бұрын
Thanks to you, and happy to know it’s been helpful
Best video for this topic. Thanks
@CoderDave
2 жыл бұрын
Thanks
Amazing content. Thanks.
@CoderDave
2 жыл бұрын
Thanks! ☺️ great to know it’s been helpful
What a great information video! I hope to work with you to amplify messages about GitHub's platform and more! 😃👍🏾
@CoderDave
Жыл бұрын
Thanks! Sure thing ☺️
@DarrylSellers
Жыл бұрын
@@CoderDave, you're welcome! 😃
Great video. Thank you
@CoderDave
Жыл бұрын
Happy you found it useful ☺️
Great. I learnt many things.
@CoderDave
Жыл бұрын
Happy to know that
Amazing tutorial thx :D
@CoderDave
Жыл бұрын
Thanks ☺️
Thanks a lot. It is so helpful ❤❤❤
@CoderDave
9 ай бұрын
Glad you liked it ☺️
Thanks for this video!!!
@CoderDave
Жыл бұрын
Thanks to you! Hope it was helpful
Thank you, it is really informative 👍
@CoderDave
Жыл бұрын
Great to know you liked it
Excellent tutorial.
@CoderDave
Жыл бұрын
Thank you! Cheers!
Thanks!
@CoderDave
2 жыл бұрын
Happy to be helpful ☺️
Amazing content. Keep it up bro
@CoderDave
2 жыл бұрын
Thanks ☺️
i love it everything exactly what have been looking am a sub already
@CoderDave
2 жыл бұрын
Thanks. Glad you liked it ☺️
A lot of useful information, it was well organized and well presented, however to just scratches the surface for everything. It will be great if you can record some details tutorials on how to write an action workflow, what every keyword means, and how to customize a workflow according to your needs, also a bit more information about self-hosted runners and how to configure them would be really great. But overall, thanks a lot!
@CoderDave
Жыл бұрын
Thanks for sharing. I do have some other videos in which I go through some of the points you've mentioned. Take a look at this live stream I;ve done, for example, where I try and build a project from scratch with Actions: kzread.info/dash/bejne/lKZomrmCp8vRYtI.html
Excellent💯👍
@CoderDave
2 жыл бұрын
Glad you like it
I liked this format
@CoderDave
Жыл бұрын
Good to know. Thanks
i want to setup workflow for 3 environments can u give me reference link for that ? basically am automating terraform using actions to deploy
Thanks a million
@CoderDave
Жыл бұрын
Very welcome
loved the detailed and long video would love more long videos only
@CoderDave
2 жыл бұрын
Thanks! I have more of these coming… it just takes kit of time to put those things together 😄
@Vishalfootball
2 жыл бұрын
@@CoderDave nice, eagerly awaiting
Very nice explanation need more like on devops 🎉
@CoderDave
2 жыл бұрын
Thanks for your feedback :) and happy to be helpful. I do have more videos on general DevOps concepts, and Azure DevOps as well (apart from GitHub)
I honestly went from zero to hero in 90 minutes! Great Tutorial!
@CoderDave
Жыл бұрын
Great to hear!
Lovely lecture
@CoderDave
Жыл бұрын
Thanks
I need to add linting action to my organization's repository which is either private or internal. Could you suggest a better way to do that? Can I use the actions and a self hosted runner for that??
@CoderDave
7 ай бұрын
Your repo visibility (private, public, or internal) doesn't impact the linting. You can still use a linter in Actions, and you don't even need a self hosted runner (that would be necessary only if you need to connect to stuff in your closed network). You can use "normal" runners
Hello Dave, Great video and very informative. I’m new to GitHub actions Had some questions: 1. I want to automate the CI process where the tool I use is connected to the GitHub and there are 2 dbs After a developer pushes to one db, the second db should have the capability to pull the resources that were pushed in the first db. The tool (hosted on aws) provides a .sh file which triggers the pull for the second db. How can I connect to the aws instance from GitHub using actions and point to the aws folder and make use of the .sh file to trigger the pull. Looking forward to your expertise. Thanks a lot
@CoderDave
Жыл бұрын
I'd need a little more info. Where is that file hosted in AWS? S3 or anywhere else? Also I am not 100% clear of the flow here, and what you want to use GitHub for...
@rascalenters
Жыл бұрын
@@CoderDave : the tool I’m using has version control enabled so each time I push (creating views etc) it’s pushed to GIT. The other alternative I have is to use a .bat file thats available in a vm instead of connecting it to aws. So the flow is like this : I want to automate the CI process where the tool I use is connected to the GitHub and there are 2 dbs After a developer pushes to one db, the second db should have the capability to pull the resources that were pushed in the first db. The tool (hosted on a windows vm) provides a .bat file which triggers the pull for the second db. How can I connect to the vm from GitHub using actions and point to the folder and make use of the .bat file to trigger the pull. So in short this is the script I want to execute from GitHub actions: import.bat -f .vql -h :/?username@password Where import.bat is available in a windows vm and pull.vql is stored in GitHub itself. Hope it makes sense. Thanks
Hello, I’m new to GitHub actions Had some questions: 1. I want to automate the CI process where the tool I use is connected to the GitHub and there are 2 dbs After a developer pushes to one db, the second db should have the capability to pull the resources that were pushed in the first db. The tool (hosted on aws) provides a .sh file which triggers the pull for the second db. How can I connect to the aws instance from GitHub using actions and point to the aws folder and make use of the .sh file to trigger the pull. Looking forward to your expertise. Thanks a lot
@CoderDave
Жыл бұрын
You commented twice, with different users. I have replied to the other one
Thank you for this great video. We are currently still working with Jenkins and want to move to something more modern and lightweight, this tutorial was very interesting.
@CoderDave
Жыл бұрын
Happy to know you’ve liked it
I am part of the team that is developing ISO 10303. I wanted to know if these tools support ant and Saxon commands to do a weekly build? Using the workflow shown in the video. Currently using PowerShell, Eclipse bash terminal, and got for commit and push.
@CoderDave
Жыл бұрын
Hey there, sorry for the late reply. Yes, you can use ant and any other tool, as long as they run on the type of agent you are using (Linux or Windows). ant is already installed, so no need to do anything else... for Saxon you would need to add a step to your workflow that installs it, then you can use it
@timothysuhr7903
Жыл бұрын
@@CoderDave Thanks for the timely response. I do a weekly build for PMI. This includes CR, LG (long form), AP, and SMRL builds. If we were able to build on the host this should speed things up and make the work flow more agile. Again a great video!
Nice tutorial but I really wish you had linked the repository/repositories for the workflows you used in the video.
@CoderDave
11 ай бұрын
Oof, my bad! I'll make sure to include the repository links next time - thanks for keeping me in check!
@immanuelt613
11 ай бұрын
@@CoderDave Nice.
Just an honest feedback: Being GitHub Actions tutorial, you took so long jumping to any real Action through coding...but kept giving boring theory till almost 25 minutes. I was desperate to get my hands dirty on the GitHub Actions So, please try to explain everything through actions, I would love even more to watch such videos.
@CoderDave
2 жыл бұрын
Thanks for the feedback
What does it mean that 'Point a code from a github (after forking) to other code like API node.' ? ie, pointing a forked sign up code to some API. Plz. explain.
@CoderDave
2 жыл бұрын
I'm not sure... where did you see that?
@s.v.arulshiju507
2 жыл бұрын
@@CoderDave 1) Actually we are building a project. I am not familier with codes. But, I used to share ideas & the back end developer build according to that. 2) Yesterday, he told me to test his developed codes. To test the code, he asked me to fork few more repositories like 'Sign up repository'. 3) Then he told me to point this 'sign up' repository to the another main back-end repository. In this way, ge told me to test the newly written codes. But, I am not familier with these codes. Please message me, Il send tge screenshots of our chats. So, you can help me in depth. Thankyou.
i like the ark reactor on the shirt
@CoderDave
Жыл бұрын
hehe thanks
where can we find a link to the presentation?
@CoderDave
2 жыл бұрын
Hi, unfortunately it’s not available 🙏🏻
I would like to remove “actions” tab on my github private repository as well as restrict users from clicking on " Run workflow " on my environment ( QA ) inside my private repository. I would like to know how to review and approve “Run workflow” in an environment ( QA ) inside my private repository. Please help how this can be achieved in github actions.
@CoderDave
2 жыл бұрын
Hi, to disable Actions on a specific repository, on the Settings tab of this repository, navigate to Actions , select Disable Actions for this repository. This will remove the Actions tab but also completely disable the feature, so you won;t be able to run any workflow anymore... unfortunately it is not possible to keep Actions enabled but remove the tab. About the approval, if you are in GitHub Enterprise you can use the GitHub Actions Environment features, which includes approvals (take a look at it here: kzread.info/dash/bejne/qZNnma59f9yao6w.html) If, instead, you are not in GitHub Enterprise, you need to find a workaround for that... one possible solution is using the IssueOps approach as I describe step-by-step in this video: kzread.info/dash/bejne/f3iD0JuBcbadkrQ.html
4:04 you can run action flows in many OS and on containers 8:54 workflow 11:00 11:14 a list of steps
@CoderDave
Жыл бұрын
yep, that is what I said in the video :D
@ruixue6955
Жыл бұрын
@@CoderDave thanks for reply :) is it btw possible to start a Docker container instance temporarily for testing purpose in github Action for free?
@CoderDave
Жыл бұрын
Yes, but you won’t be able to connect to it from the outside. Only the actions runner can . It is useful if you have some integration test run during your CI which needs a database or something else
@ruixue6955
Жыл бұрын
@@CoderDave yeah, I just would like to use a Docker instance to run automated uat and integration test during my CI. So the Docker instance is started by the Github Action and thus belongs to the Github, right?
how can we achieve capturing the api calls being made to call the workflow and those api calls can be saved in a file
@CoderDave
Жыл бұрын
Unfortunately I think that’s not doable
@CoderDave
Жыл бұрын
Unless you create a workflow that runs for every api call and in it you use something like PowerShell or a bash script to get the event payload and save it
@umesh1056
Жыл бұрын
@@CoderDave Thank you
I am half way the video and I still don't understand the commands under the "steps" and I am wondering how I would know what commands to run or put in there. what is "- uses:" and what is "- name:" whats the difference between them how do they work and do they have to follow a particular order?
@CoderDave
2 жыл бұрын
Hey. “Name” just give a display name to a task, so it can be more human readable in both the yaml and the execution logs. “Uses” instead indicates to GitHub Actions the action it has to run. For example “uses: n3wt0n/aaaaa@v1” tells the engine to use the action found in the repo “aaaaa” from user “n3wt0n”, with the version (aka tag) “v1” You can explore those actions in the marketplace, or on the right-side pane when you create a workflow. Uses and name don’t need to follow a specific order.
30:23 haha, an easter egg
@Umar0x01
2 жыл бұрын
hahaha yeah just saw it xdd
Please make short videos. Content was amazing thanks.
@CoderDave
2 жыл бұрын
Thanks for the feedback ☺️
Is it possible for me to push to repo A and it will trigger my pipeline in repo B
@CoderDave
Жыл бұрын
Not directly. If you want to trigger a workflow in another repo you need to do it via the “workflow_run” event
@iamgr1zzlybear639
Жыл бұрын
@@CoderDave thank you. Will you be doing a video on this? A lot of Qa will appreciate this
Great tutorial, where did you get your t shirt? :)
@CoderDave
Жыл бұрын
Thanks! I got it from the official GitHub swag shop
@eakokel
Жыл бұрын
@@CoderDave Thanks!
im trying to learn this Github Actions ... and i gonna have to watch this about 50 times, to try to understand it ... cause this is soooo complicated and confusing !! ... but thankx for sharing Davide 👍
@CoderDave
Жыл бұрын
It seems more complex than it is :) You will see that as soon as you start using Actions everything will be clear :)
I had this playing in the background while I did some other work and after 90 minutes I am not a hero :( Does the sound have to be on for this to work or something?
How to use JSON file content as inputs in steps. "FromJson" is not giving the right solution
@CoderDave
2 жыл бұрын
Hi. What are you trying to achieve? Pass data between different steps? What do you mean that "From Jason is not giving the right solution"
@naveenkumar-fc3tn
2 жыл бұрын
@@CoderDave I have a JSON file with my environment profiles like Dev branch having array of 3 profiles. I am able to read those values using jq utility. The content I read in one step is not able to shared as a variable to another step in same job. When I initially tried to do same with fromJson utility, it throw error saying " the template is not valid....Error reading Jtokem from JSON reader.
Well explained. can you share your slides with me sir
@CoderDave
5 ай бұрын
Sorry I can’t 😕
Any prerequisites?
@CoderDave
2 жыл бұрын
To watch the video or work with actions?
@CoderDave
2 жыл бұрын
I’ve seen you’ve commented “both” but for some reason KZread keeps deleting your comments😒 Anyway, just normal understanding of CICD and basic YAML
@hrishabhcodes
2 жыл бұрын
@@CoderDave Ohh, thanks a lot. I was confused as well, I commented it 3 to 4 times.
@CoderDave
2 жыл бұрын
I have no idea what that happens… but in the last months I had KZread removing a lot of legit comments for no apparent reason 😔
@hrishabhcodes
2 жыл бұрын
@@CoderDave There might be some issue with its algorithm. Anyways, you are doing a great job 👍
Tip: set play speed at 1.5x
@CoderDave
Жыл бұрын
Well, not everyone understand my accent well ;)
Feedback. I think you took it way too long to get practical. It's good to start with foundations. But to newbies, like me, learning too much foundations at an earlier stage will turn the materials into confusing jargons. Besides, we may only need a handful of these to start getting productive. All of the polishing and ironing will become due diligence for students to do further research. For video tutorial format, I think it's better to show a demo first. Looking at GitHub Actions in _action,_ see when it succeeds, and otherwise when it fails. Then we can reverse engineer it from there on and see what's under the hood. Here you can start explaining _how_ things are actually spinning in GitHub actions. Anyway, it's a useful video overall. Maybe better for those with a few experience in CI/CD or Actions, but not that helpful for newbies initially. Thank you for the video. 😄
@CoderDave
2 жыл бұрын
Thanks for the feedback. You are right, in fact if you see my other videos I usually do some intro but then go into the "demo", practical part.
Secrets @1:18:00
@CoderDave
9 ай бұрын
I have a whole video about GitHub Actions Secrets as well: Manage Secrets in GitHub | GitHub Repository Secrets vs Environment Secrets kzread.info/dash/bejne/poyqwdCpcbOfYM4.html
@djh_king
9 ай бұрын
Thank you for that I will check it out!@@CoderDave
✨ Question of the day ✨: What else would you like to learn about Actions? Also, do you like this kind of format or do you prefer the shorter videos? GET HELP ON DEVOPS: geni.us/cdconsult SUPPORT THE CHANNEL : Buy me a coffee: www.buymeacoffee.com/CoderDave PayPal me donation: paypal.me/dabenveg
@Umar0x01
2 жыл бұрын
yes, shorter are appreciated and in the form of an playlist!
@CoderDave
2 жыл бұрын
Noted 👍🏻
@ShivamBhardwaj27
2 жыл бұрын
Run Action on Jetson devices, for a image classifier/object detection usecase.
not suitable for beginners, you can use it as a refresher if you already know everything.
@CoderDave
3 ай бұрын
Interesting feedback. Since I start from the basics, what else would you add to make it more beginner friendly?
I found this tutorial VERY DIFFICULT. You already need to know the basics before watching this video.
Hah! 30:23 I wonder what happened
@CoderDave
5 ай бұрын
A little Easter egg for a friend 😉
yeah its not fully open source, don't bullshit each other. This is maybe partially open source, which means its not open source. Its getting worst and worst, but initial idea was great
@CoderDave
8 ай бұрын
I never said that the engine of GitHub Actions is open source. It is indeed not. But ALL the actions on the marketplace (aka the "steps"), however, MUST be (and are) open source otherwise they can't be listed.
Too much theory stuff and very less practical stuff. Overall a 1/5 for this tutorial.
sry bro but here only u speaking and only u r understanding the flow which u have taken to deliver ur content is jst very bad if u want srusly to deliver helpful content first u have to make a workflow that how u r going to deliver ur content and specify each and everything bcoz for the beginners its jst awful at the starting u have mentioned about the yaml file but u not described anything wht the things have mentioned there
@CoderDave
Жыл бұрын
Sorry to hear you didn’t find this helpful. Other people had, I guess it depends on what you find more suitable for yourself and that’s subjective
@pm_root_passwds4311
Жыл бұрын
Words are hrd.
@shamstabrez2986
Жыл бұрын
@@pm_root_passwds4311 m not criticizing him i was telling him about the content bcoz this media is enough for the peoples who wants to learn from d basics till advanced n if u r not getting anything means the person who delivers the content is not doing his job properly
@pm_root_passwds4311
Жыл бұрын
@@shamstabrez2986 roflcopter