{"id":94509,"date":"2026-03-16T09:00:00","date_gmt":"2026-03-16T16:00:00","guid":{"rendered":"https:\/\/github.blog\/?p=94509"},"modified":"2026-03-16T11:13:17","modified_gmt":"2026-03-16T18:13:17","slug":"github-for-beginners-getting-started-with-github-actions","status":"publish","type":"post","link":"https:\/\/github.blog\/developer-skills\/github\/github-for-beginners-getting-started-with-github-actions\/","title":{"rendered":"GitHub for Beginners: Getting started with GitHub Actions"},"content":{"rendered":"<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD HTML 4.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/REC-html40\/loose.dtd\">\n<html><body><p class=\"wp-block-paragraph\">Welcome back to our ongoing GitHub for Beginners series, now in its third season! Our previous episode was the first of the season, and we talked about <a href=\"https:\/\/github.blog\/developer-skills\/github\/github-for-beginners-getting-started-with-github-issues-and-projects\/\" target=\"_blank\" rel=\"noreferrer noopener\">getting started with GitHub Issues and Projects<\/a>. This time we&rsquo;re jumping into another very popular GitHub feature called GitHub Actions. By the end of this post, you&rsquo;ll know how to use GitHub Actions and will have created your first automated workflow.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As always, if you prefer to watch the video or want to reference it, we have all of our <a href=\"https:\/\/gh.io\/gfb\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub for Beginners episodes available on YouTube<\/a>. (And you can watch the full video of this tutorial above!)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-what-are-github-actions\">What are GitHub Actions?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">GitHub Actions is a Continuous Integration\/Continuous Delivery (CI\/CD) and automation platform built right into GitHub. You&rsquo;ll often hear people call these &ldquo;action workflows&rdquo; or just &ldquo;workflows.&rdquo; It allows you to automate repetitive tasks and deployment processes using YAML files stored in your repository. You might use GitHub Actions for tasks like running vulnerability scans, tests, creating releases, or even reminding your team about important updates.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Action workflows are triggered by GitHub events like pushes, pull requests, or schedules, and they run in a virtual environment.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-how-workflows-work\">How workflows work<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before jumping right into the details about how workflows do their job, we need to define some essential terms.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Event<\/strong>: A specific activity that triggers a workflow (e.g., pushing code, opening a pull request, creating an issue, etc.)<\/li>\n\n\n\n<li><strong>Hosted runners<\/strong>: A virtual machine that executes jobs in a workflow. GitHub provides hosted runners, or you can set up your own self-hosted runners.<\/li>\n\n\n\n<li><strong>Jobs<\/strong>: A set of steps executed within the same runner. Each step is either a shell command or a prebuilt action from the <a href=\"https:\/\/github.com\/marketplace?utm_source=blog-episode-2&amp;utm_medium=blog&amp;utm_campaign=gfb-s3-2026\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub Marketplace<\/a>.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Workflows are triggered by events in a repository. This can be something like a pull request, merging a branch, or even opening an issue. When you create the workflow, you determine what the triggering event is.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When that event fires and triggers the workflow, GitHub spins up one or more jobs that execute on a runner. GitHub then follows the steps you programmed into the workflow until it reaches the end. And it does this all on its own, without any interaction necessary on your behalf. This is essentially how the GitHub Action workflow works.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Want more practice creating your own workflows and getting more familiar with GitHub Actions? Try out the <a href=\"https:\/\/github.com\/skills\/hello-github-actions?utm_source=blog-episode-2&amp;utm_medium=blog&amp;utm_campaign=gfb-s3-2026\" target=\"_blank\" rel=\"noreferrer noopener\">Hello GitHub Actions skill exercise<\/a> in our <code>skills<\/code> repository.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-looking-at-a-repository-s-actions\">Looking at a repository&rsquo;s actions<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Navigate to our sample repository, fork it, then select the Actions tab at the top. This page lists all of the current workflows for the repository. Select the green New workflow button in the left-hand column. This brings you to a new page, which presents several suggested workflows for this repository.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Select the <strong>Configure<\/strong> button for one of the suggested actions. For right now, it doesn&rsquo;t matter which one you select. This pulls up an editor with a template written in YAML with three main sections you need to know when building an action workflow:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Name<\/strong>: Describes what your workflow does.<\/li>\n\n\n\n<li><strong>On<\/strong>: Defines what triggers the workflow.<\/li>\n\n\n\n<li><strong>Jobs<\/strong>: Where the actual work associated with this workflow happens.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-building-a-workflow\">Building a workflow<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">One of the best ways to learn is by doing, so let&rsquo;s go ahead and create a simple workflow that will automatically label new issues created in our repository. First, head back to the main page for the sample repository and clone it to your machine. Then, navigate to the <code>action-start<\/code> branch.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GitHub Actions uses YAML syntax to define workflows. Each workflow is stored in a <code>.yml<\/code> file in a special <code>.github\\workflows<\/code> directory in your repository. Go ahead and navigate to that directory.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When creating workflow files, you should use descriptive names that tell you what they do at a glance (e.g., <code>build-and-test.yml<\/code>, <code>security-scanner.yml<\/code>). Since we know that we want to have this workflow label new issues, create a new file in this directory and call it <code>label-new-issue.yml<\/code>. Add the following to the top of the file:<\/p>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code language-plaintext\"><code>Name: Label New Issues <\/code><\/pre>\n<clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value=\"Name: Label New Issues\" tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p class=\"wp-block-paragraph\">Now we need to decide what will trigger this workflow. GitHub has tons of trigger options, all of which are listed in <a href=\"https:\/\/docs.github.com\/en\/actions\/reference\/workflows-and-actions\/events-that-trigger-workflows?utm_source=blog-episode-2&amp;utm_medium=blog&amp;utm_campaign=gfb-s3-2026\" target=\"_blank\" rel=\"noreferrer noopener\">our <\/a><a href=\"https:\/\/docs.github.com\/actions\/reference\/workflows-and-actions\/events-that-trigger-workflows?utm_source=blog-episode-2&amp;utm_medium=blog&amp;utm_campaign=gfb-s3-2026\" target=\"_blank\" rel=\"noreferrer noopener\">trigger<\/a><a href=\"https:\/\/docs.github.com\/en\/actions\/reference\/workflows-and-actions\/events-that-trigger-workflows?utm_source=blog-episode-2&amp;utm_medium=blog&amp;utm_campaign=gfb-s3-2026\" target=\"_blank\" rel=\"noreferrer noopener\"> workflows reference documentation<\/a>, so you can choose based on what you&rsquo;re building. In our case, we specifically want to have this workflow trigger whenever someone opens an issue. We do this by adding the following code to the bottom of the YAML file.<\/p>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code language-plaintext\"><code>on: \n\n  issues: \n\n    types: [opened]<\/code><\/pre>\n<clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value=\"on: \n\n  issues: \n\n    types: [opened]\" tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p class=\"wp-block-paragraph\">Now we get to the good stuff: the jobs section, where the actual work happens. The first thing we&rsquo;ll do is give our job a title and choose what type of machine runs it. GitHub provides hosted runners with different versions of Ubuntu, Windows, and macOS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let&rsquo;s call this job <code>label-issues<\/code> and run it on <code>ubuntu-latest<\/code>. This tells GitHub to grab a machine from their pool of Ubuntu runners using the latest version available.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We also need to add permissions so the action can read the content of the repository and add the label. When we use the <code>permissions<\/code> keyword inside of a job, all actions and run commands within that job gain the access rights specified.<\/p>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code language-plaintext\"><code>jobs: \n\n  label-issues:  \n\n    runs-on: ubuntu-latest \n\n    permissions: \n\n      issues: write \n\n      contents: read<\/code><\/pre>\n<clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value=\"jobs: \n\n  label-issues:  \n\n    runs-on: ubuntu-latest \n\n    permissions: \n\n      issues: write \n\n      contents: read\" tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p class=\"wp-block-paragraph\">Okay, now we need to add the actual steps. This is where we define what happens in the job.<\/p>\n\n\n<div class=\"wp-block-code-wrapper\">\n<pre class=\"wp-block-code language-plaintext\"><code>    steps: \n\n      - name: Checkout repository \n\n        uses: actions\/checkout@v6 \n\n      - name: Add triage label \n\n        env: \n\n            GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} \n\n            ISSUE_NUMBER: ${{ github.event.issue.number }} \n\n            LABEL: \"triage\" \n\n        run: gh issue edit \"$ISSUE_NUMBER\" --add-label \"$LABEL\" <\/code><\/pre>\n<clipboard-copy aria-label=\"Copy\" class=\"code-copy-btn\" data-copy-feedback=\"Copied!\" value='steps: \n\n      - name: Checkout repository \n\n        uses: actions\/checkout@v6 \n\n      - name: Add triage label \n\n        env: \n\n            GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} \n\n            ISSUE_NUMBER: ${{ github.event.issue.number }} \n\n            LABEL: \"triage\" \n\n        run: gh issue edit \"$ISSUE_NUMBER\" --add-label \"$LABEL\"' tabindex=\"0\" role=\"button\"><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-copy js-clipboard-copy-icon\"><path d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z\"><\/path><path d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z\"><\/path><\/svg><svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" class=\"octicon octicon-check js-clipboard-check-icon\"><path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"><\/path><\/svg><\/clipboard-copy><\/div>\n\n\n<p class=\"wp-block-paragraph\">You&rsquo;ll see two main keywords here: <code>uses<\/code> and <code>run<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When you see <code>uses<\/code>, that&rsquo;s pulling in a prebuilt action from the GitHub Marketplace. These are open-source reusable actions that handle common tasks, so you don&rsquo;t have to write everything from scratch. Some examples of these type of actions include checking out your code or setting up NodeJS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When you see <code>run<\/code>, that&rsquo;s executing a command or script. This same keyword is used if it&rsquo;s just a single line of code or a script that spans multiple lines.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>env<\/code> section is where we define our environment variables. Since we are using the <a href=\"https:\/\/docs.github.com\/github-cli\/github-cli\/about-github-cli?utm_source=blog-episode-2&amp;utm_medium=blog&amp;utm_campaign=gfb-s3-2026\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub CLI<\/a> in our <code>run<\/code> section, we need to provide an access token for the action to be able to access the repository. We do this by setting the <code>GH_TOKEN<\/code> environment variable. GitHub automatically provides a temporary access token when it creates this job and provides it in the <code>GITHUB_TOKEN<\/code> variable.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We also need to have variables to indicate which issue we want to update, as well as which label we want to add. In order for this to work, that label needs to already exist in the repository.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Congratulations! You&rsquo;ve now successfully completed authoring your first workflow!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-testing-your-workflow\">Testing your workflow<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Now that we have the workflow, it&rsquo;s time to test it. In order to do so, we first need to push these changes up to the repository and merge them into the <code>main<\/code> branch. So go ahead and do that now. Once it&rsquo;s in the <code>main<\/code> branch, we can see it in action. If you have any questions about how to push your code, you can check out our earlier <a href=\"https:\/\/github.blog\/developer-skills\/github\/beginners-guide-to-github-adding-code-to-your-repository?utm_source=blog-episode-2&amp;utm_medium=blog&amp;utm_campaign=gfb-s3-2026\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub for Beginners episode about adding code to your repository<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once your workflow is uploaded, let&rsquo;s see it work. Navigate to the repository in your browser, and select the <strong>Issues<\/strong> tab. In the top-right corner, select the green <strong>New issue<\/strong> button. Provide a title and description indicating that you&rsquo;re testing the workflow, and then click <strong>Create<\/strong> at the bottom of the window.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GitHub will create the issue and automatically bring you to the page showing the issue&rsquo;s history. Assuming everything is working correctly, you&rsquo;ll see the <code>triage<\/code> label added within seconds of when you created the issue.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nice work! You can now see how convenient it can be to have some actions automatically handle tasks based on specific triggers.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-reviewing-current-workflows\">Reviewing current workflows<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Select the <strong>Actions<\/strong> tab at the top of the window. You&rsquo;ll see all of the actions listed in a column on the left-hand side of the window. Select <strong>Label New Issues<\/strong> to filter the view to show just the times this workflow has run.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Select the top workflow, which should be for the test issue you created in the previous step. This brings you to a detail page where you can see more information about this specific instance of the workflow. Select <strong>label-issues<\/strong> in the main window.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now you can see all of the steps taken in order to complete the workflow. This can be very useful for debugging purposes if one of your workflows is not working as expected. If you want to rerun this workflow, you can do so by clicking the <strong>Re-run all jobs<\/strong> button in the top-right.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If there&rsquo;s ever a situation where you need to pause a workflow, you can do that from the <strong>Actions<\/strong> tab. Navigate back to that tab, and once again select <strong>Label New Issues<\/strong> in the left column. Click the three dots (<strong>&hellip;<\/strong>) in the window on the right, next to the search box. One of the options is <strong>Disable workflow<\/strong>. If you select this, it will stop the workflow from running, but it will still exist in the repository, so you can enable it later.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The <strong>Actions<\/strong> tab is where you&rsquo;ll go to see and manage all of your workflows. You can check deployments, runners, metrics, performance, and caches all from this view. You can also view and edit your workflow files directly from this tab.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-what-s-next\">What&rsquo;s next?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">GitHub Actions can do a lot more than just label your issues. You can create actions to publish packages, greet new contributors, build and test your code, and even run security checks.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Keep learning about GitHub Actions by checking out our <a href=\"https:\/\/docs.github.com\/actions?utm_source=blog-episode-2&amp;utm_medium=blog&amp;utm_campaign=gfb-s3-2026\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub Actions documentations<\/a> and start experimenting with creating your own workflows.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Happy coding!<\/p>\n\n\n\n<div class=\"wp-block-group post-content-cta has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<p class=\"wp-block-paragraph\">Ready to level up? Check out these hands-on GitHub Skills exercises to get you building fast <a href=\"https:\/\/learn.github.com\/skills#automate-workflows-with-github-actions?utm_source=blog-episode-2&amp;utm_medium=blog&amp;utm_campaign=gfb-s3-2026\" target=\"_blank\" rel=\"noreferrer noopener\">automate workflows with GitHub Actions &gt;<\/a><\/p>\n<\/div>\n<\/body><\/html>\n","protected":false},"excerpt":{"rendered":"<p>Set up your first GitHub Actions workflow in this how-to guide.<\/p>\n","protected":false},"author":2041,"featured_media":94518,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_gh_post_show_toc":"yes","_gh_post_is_no_robots":"","_gh_post_is_featured":"yes","_gh_post_is_excluded":"","_gh_post_is_unlisted":"","_gh_post_related_link_1":"","_gh_post_related_link_2":"","_gh_post_related_link_3":"","_gh_post_sq_img":"","_gh_post_sq_img_id":"","_gh_post_cta_title":"","_gh_post_cta_text":"","_gh_post_cta_link":"","_gh_post_cta_button":"","_gh_post_recirc_hide":"","_gh_post_recirc_col_1":"","_gh_post_recirc_col_2":"","_gh_post_recirc_col_3":"","_gh_post_recirc_col_4":"","_featured_video":"https:\/\/www.youtube.com\/watch?v=BQrohJ3PT7I","_gh_post_additional_query_params":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false,"_links_to":"","_links_to_target":""},"categories":[3298,3302],"tags":[122,3286,3015],"coauthors":[2854],"class_list":["post-94509","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-developer-skills","category-github","tag-github-actions","tag-github-for-beginners","tag-github-skills"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.4 (Yoast SEO v28.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>GitHub for Beginners: Getting started with GitHub Actions - The GitHub Blog<\/title>\n<meta name=\"description\" content=\"Set up your first GitHub Actions workflow in this how-to guide.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/github.blog\/developer-skills\/github\/github-for-beginners-getting-started-with-github-actions\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"GitHub for Beginners: Getting started with GitHub Actions\" \/>\n<meta property=\"og:description\" content=\"Set up your first GitHub Actions workflow in this how-to guide.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/github.blog\/developer-skills\/github\/github-for-beginners-getting-started-with-github-actions\/\" \/>\n<meta property=\"og:site_name\" content=\"The GitHub Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-16T16:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-16T18:13:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/github.blog\/wp-content\/uploads\/2026\/03\/GIT829_THUMB_GFB_A.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Kedasha Kerr\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kedasha Kerr\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/github.blog\\\/developer-skills\\\/github\\\/github-for-beginners-getting-started-with-github-actions\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/github.blog\\\/developer-skills\\\/github\\\/github-for-beginners-getting-started-with-github-actions\\\/\"},\"author\":{\"name\":\"Kedasha Kerr\",\"@id\":\"https:\\\/\\\/github.blog\\\/#\\\/schema\\\/person\\\/c7307d5b9eb99168bed497b7e6b0a950\"},\"headline\":\"GitHub for Beginners: Getting started with GitHub Actions\",\"datePublished\":\"2026-03-16T16:00:00+00:00\",\"dateModified\":\"2026-03-16T18:13:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/github.blog\\\/developer-skills\\\/github\\\/github-for-beginners-getting-started-with-github-actions\\\/\"},\"wordCount\":1623,\"image\":{\"@id\":\"https:\\\/\\\/github.blog\\\/developer-skills\\\/github\\\/github-for-beginners-getting-started-with-github-actions\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/github.blog\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/GIT829_THUMB_GFB_A.png?fit=1280%2C720\",\"keywords\":[\"GitHub Actions\",\"GitHub for beginners\",\"GitHub Skills\"],\"articleSection\":[\"Developer skills\",\"GitHub\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/github.blog\\\/developer-skills\\\/github\\\/github-for-beginners-getting-started-with-github-actions\\\/\",\"url\":\"https:\\\/\\\/github.blog\\\/developer-skills\\\/github\\\/github-for-beginners-getting-started-with-github-actions\\\/\",\"name\":\"GitHub for Beginners: Getting started with GitHub Actions - The GitHub Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/github.blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/github.blog\\\/developer-skills\\\/github\\\/github-for-beginners-getting-started-with-github-actions\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/github.blog\\\/developer-skills\\\/github\\\/github-for-beginners-getting-started-with-github-actions\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/github.blog\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/GIT829_THUMB_GFB_A.png?fit=1280%2C720\",\"datePublished\":\"2026-03-16T16:00:00+00:00\",\"dateModified\":\"2026-03-16T18:13:17+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/github.blog\\\/#\\\/schema\\\/person\\\/c7307d5b9eb99168bed497b7e6b0a950\"},\"description\":\"Set up your first GitHub Actions workflow in this how-to guide.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/github.blog\\\/developer-skills\\\/github\\\/github-for-beginners-getting-started-with-github-actions\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/github.blog\\\/developer-skills\\\/github\\\/github-for-beginners-getting-started-with-github-actions\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/github.blog\\\/developer-skills\\\/github\\\/github-for-beginners-getting-started-with-github-actions\\\/#primaryimage\",\"url\":\"https:\\\/\\\/github.blog\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/GIT829_THUMB_GFB_A.png?fit=1280%2C720\",\"contentUrl\":\"https:\\\/\\\/github.blog\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/GIT829_THUMB_GFB_A.png?fit=1280%2C720\",\"width\":1280,\"height\":720,\"caption\":\"Decorative header image with the words 'Intro to GitHub Actions'\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/github.blog\\\/developer-skills\\\/github\\\/github-for-beginners-getting-started-with-github-actions\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/github.blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Developer skills\",\"item\":\"https:\\\/\\\/github.blog\\\/developer-skills\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"GitHub\",\"item\":\"https:\\\/\\\/github.blog\\\/developer-skills\\\/github\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"GitHub for Beginners: Getting started with GitHub Actions\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/github.blog\\\/#website\",\"url\":\"https:\\\/\\\/github.blog\\\/\",\"name\":\"The GitHub Blog\",\"description\":\"Updates, ideas, and inspiration from GitHub to help developers build and design software.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/github.blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/github.blog\\\/#\\\/schema\\\/person\\\/c7307d5b9eb99168bed497b7e6b0a950\",\"name\":\"Kedasha Kerr\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f7068adc72a5044fad52dad7d2a26c374860c1e491761f8ec5cf7750152f4adb?s=96&d=mm&r=g76275409088bcdfde49439d0290b472b\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f7068adc72a5044fad52dad7d2a26c374860c1e491761f8ec5cf7750152f4adb?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f7068adc72a5044fad52dad7d2a26c374860c1e491761f8ec5cf7750152f4adb?s=96&d=mm&r=g\",\"caption\":\"Kedasha Kerr\"},\"description\":\"Kedasha is a Developer Advocate at GitHub where she enjoys sharing the lessons she's learned with the wider developer community. She finds joy in helping others learn about the tech industry and loves sharing her experience as a software developer. Find her online @itsthatladydev.\",\"url\":\"https:\\\/\\\/github.blog\\\/author\\\/ladykerr\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"GitHub for Beginners: Getting started with GitHub Actions - The GitHub Blog","description":"Set up your first GitHub Actions workflow in this how-to guide.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/github.blog\/developer-skills\/github\/github-for-beginners-getting-started-with-github-actions\/","og_locale":"en_US","og_type":"article","og_title":"GitHub for Beginners: Getting started with GitHub Actions","og_description":"Set up your first GitHub Actions workflow in this how-to guide.","og_url":"https:\/\/github.blog\/developer-skills\/github\/github-for-beginners-getting-started-with-github-actions\/","og_site_name":"The GitHub Blog","article_published_time":"2026-03-16T16:00:00+00:00","article_modified_time":"2026-03-16T18:13:17+00:00","og_image":[{"width":1280,"height":720,"url":"https:\/\/github.blog\/wp-content\/uploads\/2026\/03\/GIT829_THUMB_GFB_A.png","type":"image\/png"}],"author":"Kedasha Kerr","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kedasha Kerr","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/github.blog\/developer-skills\/github\/github-for-beginners-getting-started-with-github-actions\/#article","isPartOf":{"@id":"https:\/\/github.blog\/developer-skills\/github\/github-for-beginners-getting-started-with-github-actions\/"},"author":{"name":"Kedasha Kerr","@id":"https:\/\/github.blog\/#\/schema\/person\/c7307d5b9eb99168bed497b7e6b0a950"},"headline":"GitHub for Beginners: Getting started with GitHub Actions","datePublished":"2026-03-16T16:00:00+00:00","dateModified":"2026-03-16T18:13:17+00:00","mainEntityOfPage":{"@id":"https:\/\/github.blog\/developer-skills\/github\/github-for-beginners-getting-started-with-github-actions\/"},"wordCount":1623,"image":{"@id":"https:\/\/github.blog\/developer-skills\/github\/github-for-beginners-getting-started-with-github-actions\/#primaryimage"},"thumbnailUrl":"https:\/\/github.blog\/wp-content\/uploads\/2026\/03\/GIT829_THUMB_GFB_A.png?fit=1280%2C720","keywords":["GitHub Actions","GitHub for beginners","GitHub Skills"],"articleSection":["Developer skills","GitHub"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/github.blog\/developer-skills\/github\/github-for-beginners-getting-started-with-github-actions\/","url":"https:\/\/github.blog\/developer-skills\/github\/github-for-beginners-getting-started-with-github-actions\/","name":"GitHub for Beginners: Getting started with GitHub Actions - The GitHub Blog","isPartOf":{"@id":"https:\/\/github.blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/github.blog\/developer-skills\/github\/github-for-beginners-getting-started-with-github-actions\/#primaryimage"},"image":{"@id":"https:\/\/github.blog\/developer-skills\/github\/github-for-beginners-getting-started-with-github-actions\/#primaryimage"},"thumbnailUrl":"https:\/\/github.blog\/wp-content\/uploads\/2026\/03\/GIT829_THUMB_GFB_A.png?fit=1280%2C720","datePublished":"2026-03-16T16:00:00+00:00","dateModified":"2026-03-16T18:13:17+00:00","author":{"@id":"https:\/\/github.blog\/#\/schema\/person\/c7307d5b9eb99168bed497b7e6b0a950"},"description":"Set up your first GitHub Actions workflow in this how-to guide.","breadcrumb":{"@id":"https:\/\/github.blog\/developer-skills\/github\/github-for-beginners-getting-started-with-github-actions\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/github.blog\/developer-skills\/github\/github-for-beginners-getting-started-with-github-actions\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/github.blog\/developer-skills\/github\/github-for-beginners-getting-started-with-github-actions\/#primaryimage","url":"https:\/\/github.blog\/wp-content\/uploads\/2026\/03\/GIT829_THUMB_GFB_A.png?fit=1280%2C720","contentUrl":"https:\/\/github.blog\/wp-content\/uploads\/2026\/03\/GIT829_THUMB_GFB_A.png?fit=1280%2C720","width":1280,"height":720,"caption":"Decorative header image with the words 'Intro to GitHub Actions'"},{"@type":"BreadcrumbList","@id":"https:\/\/github.blog\/developer-skills\/github\/github-for-beginners-getting-started-with-github-actions\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/github.blog\/"},{"@type":"ListItem","position":2,"name":"Developer skills","item":"https:\/\/github.blog\/developer-skills\/"},{"@type":"ListItem","position":3,"name":"GitHub","item":"https:\/\/github.blog\/developer-skills\/github\/"},{"@type":"ListItem","position":4,"name":"GitHub for Beginners: Getting started with GitHub Actions"}]},{"@type":"WebSite","@id":"https:\/\/github.blog\/#website","url":"https:\/\/github.blog\/","name":"The GitHub Blog","description":"Updates, ideas, and inspiration from GitHub to help developers build and design software.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/github.blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/github.blog\/#\/schema\/person\/c7307d5b9eb99168bed497b7e6b0a950","name":"Kedasha Kerr","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f7068adc72a5044fad52dad7d2a26c374860c1e491761f8ec5cf7750152f4adb?s=96&d=mm&r=g76275409088bcdfde49439d0290b472b","url":"https:\/\/secure.gravatar.com\/avatar\/f7068adc72a5044fad52dad7d2a26c374860c1e491761f8ec5cf7750152f4adb?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f7068adc72a5044fad52dad7d2a26c374860c1e491761f8ec5cf7750152f4adb?s=96&d=mm&r=g","caption":"Kedasha Kerr"},"description":"Kedasha is a Developer Advocate at GitHub where she enjoys sharing the lessons she's learned with the wider developer community. She finds joy in helping others learn about the tech industry and loves sharing her experience as a software developer. Find her online @itsthatladydev.","url":"https:\/\/github.blog\/author\/ladykerr\/"}]}},"jetpack_publicize_connections":[],"jetpack_shortlink":"https:\/\/wp.me\/pamS32-oAl","jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/github.blog\/wp-content\/uploads\/2026\/03\/GIT829_THUMB_GFB_A.png?fit=1280%2C720","_links":{"self":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/posts\/94509","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/users\/2041"}],"replies":[{"embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/comments?post=94509"}],"version-history":[{"count":7,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/posts\/94509\/revisions"}],"predecessor-version":[{"id":94537,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/posts\/94509\/revisions\/94537"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/media\/94518"}],"wp:attachment":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/media?parent=94509"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/categories?post=94509"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/tags?post=94509"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/coauthors?post=94509"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}