{"id":9305,"date":"2024-05-31T14:19:46","date_gmt":"2024-05-31T12:19:46","guid":{"rendered":"https:\/\/webdeasy.de\/?p=9305"},"modified":"2024-11-05T17:07:57","modified_gmt":"2024-11-05T16:07:57","slug":"github-actions-tutorial-en","status":"publish","type":"post","link":"https:\/\/webdeasy.de\/en\/github-actions-tutorial-en\/","title":{"rendered":"GitHub Actions: Tutorial for beginners &#8211; basics &amp; examples"},"content":{"rendered":"\n<p class=\"has-drop-cap\">In this tutorial, I want to introduce you to GitHub Actions and show you how you can use GitHub Actions to create CI\/CD pipelines to automate boring, repetitive tasks.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>GitHub Actions is a versatile tool that developers can use to organise their software development processes more efficiently. You can mainly use GitHub Actions as a CI\/CD pipeline (CI = Continuous Integration, CD = Continuous Delivery) and is therefore comparable with <a href=\"https:\/\/www.jenkins.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">Jenkins<\/a>, <a href=\"https:\/\/circleci.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">CircleCI<\/a> or <a href=\"https:\/\/azure.microsoft.com\/de-de\/products\/devops\" target=\"_blank\" rel=\"noreferrer noopener\">Azure DevOps<\/a>, for example.<\/p>\n\n\n\n<p>I myself actually use GitHub Actions in every repo that I have created in GitHub. For example, to deploy changes in this blog or as a complete <a href=\"https:\/\/webdeasy.de\/en\/what-is-ci-cd\/\">CI\/CD pipeline<\/a> for my <a href=\"https:\/\/jscodebox.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">JavaScript Challenge platform<\/a>.<\/p>\n\n\n<div class='table-of-contents'><span class='toc-headline'>Table of Contents<\/span><!-- Table of contents by webdeasy.de --><span class='toggle-toc custom-setting' title='close'>\u2212<\/span><\/div><div id='ezoic-pub-ad-placeholder-622'><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"what-is-github-actions\">What is GitHub Actions?<\/h2>\n\n\n\n<p>GitHub Actions is a powerful automation tool that is directly integrated into GitHub and enables developers to create automated workflows for their software development projects. GitHub Actions can be used to set up CI\/CD pipelines, run tests, analyse code and much more. It offers a flexible and customisable way to automate development processes by combining different actions and workflows.<\/p>\n\n\n\n<p>To be more precise, you can actually do anything you can think of: Execute unit tests, deploy to a <a href=\"https:\/\/webdeasy.de\/en\/docker-vs-virtual-machines\/\">VM<\/a>, deploy to a Kubernetes cluster, create\/build apps, deploy to various services of all common cloud providers, code security scans, etc. This list can be extended almost endlessly \ud83d\ude09<\/p>\n\n\n\n<p class=\"info-notice info\"><a href=\"https:\/\/webdeasy.de\/en\/what-is-ci-cd\/\">What do the terms CI\/CD (pipeline, tools) and DevOps actually mean?<\/a><\/p>\n\n\n\n<p>A workflow in GitHub Actions consists of one or more actions that are executed as steps in a defined sequence. These workflows are defined in YAML files and saved in the <code>.github\/workflows<\/code> directory of the repository.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1144\" height=\"428\" src=\"https:\/\/webdeasy.de\/wp-content\/uploads\/2024\/05\/beispiel-pipeline.jpg\" alt=\"GitHub Actions - CD-Pipeline of webdeasy.de\" class=\"wp-image-9290\" srcset=\"https:\/\/webdeasy.de\/wp-content\/uploads\/2024\/05\/beispiel-pipeline.jpg 1144w, https:\/\/webdeasy.de\/wp-content\/uploads\/2024\/05\/beispiel-pipeline-650x243.jpg 650w, https:\/\/webdeasy.de\/wp-content\/uploads\/2024\/05\/beispiel-pipeline-750x281.jpg 750w, https:\/\/webdeasy.de\/wp-content\/uploads\/2024\/05\/beispiel-pipeline-768x287.jpg 768w\" sizes=\"auto, (max-width: 1144px) 100vw, 1144px\" \/><figcaption class=\"wp-element-caption\">GitHub Actions &#8211; CD-Pipeline of webdeasy.de<\/figcaption><\/figure>\n\n\n\n<p>The screenshot is the result of executing the GitHub Actions Workflow of this blog, whereby changes in the repository are automatically rolled out on the production server. If an error occurs, a rollback to the last stable version is performed.<\/p>\n\n\n\n<p><strong>And what does the fun cost me?<\/strong> <span style=\"text-decoration: underline;\">Nothing<\/span>! GitHub provides the service for public repos completely free of charge and there is also a <a href=\"https:\/\/github.com\/features\/actions#pricing-details\">generous free quota<\/a> for private repositories, which lasts for quite a while and resets every month.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"creating-a-github-actions-workflow\">Creating a GitHub Actions Workflow<\/h2>\n\n\n\n<p>To create a new GitHub actions workflow, you can simply use the \u2018Actions\u2019 tab in your GitHub repo or alternatively create a YAML file in the path <code>.github\/workflows<\/code>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-medium\"><a href=\"https:\/\/webdeasy.de\/wp-content\/uploads\/2024\/05\/github-create-new-workflow.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"650\" height=\"346\" src=\"https:\/\/webdeasy.de\/wp-content\/uploads\/2024\/05\/github-create-new-workflow-650x346.jpg\" alt=\"GitHub Actions Tab\" class=\"wp-image-9299\" srcset=\"https:\/\/webdeasy.de\/wp-content\/uploads\/2024\/05\/github-create-new-workflow-650x346.jpg 650w, https:\/\/webdeasy.de\/wp-content\/uploads\/2024\/05\/github-create-new-workflow-750x400.jpg 750w, https:\/\/webdeasy.de\/wp-content\/uploads\/2024\/05\/github-create-new-workflow-768x409.jpg 768w, https:\/\/webdeasy.de\/wp-content\/uploads\/2024\/05\/github-create-new-workflow-1536x819.jpg 1536w, https:\/\/webdeasy.de\/wp-content\/uploads\/2024\/05\/github-create-new-workflow.jpg 1578w\" sizes=\"auto, (max-width: 650px) 100vw, 650px\" \/><\/a><figcaption class=\"wp-element-caption\">GitHub Actions Tab<\/figcaption><\/figure>\n\n\n\n<p>To understand how a workflow in GitHub Actions is structured, I have a very simple CI pipeline for you here, which I will explain step by step.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"yaml\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">name: CI Pipeline\n\non: [push]\n\njobs:\n  build:\n\n    runs-on: ubuntu-latest\n\n    steps:\n    - name: Check out repository\n      uses: actions\/checkout@v2\n\n    - name: Set up Node.js\n      uses: actions\/setup-node@v2\n      with:\n        node-version: '20'\n\n    - name: Install dependencies\n      run: npm install\n\n    - name: Run tests\n      run: npm test\n<\/pre>\n\n\n\n<p>What exactly happens here? The pipeline is triggered every time a push is executed in the repository. You can find out more about triggers and events later in this GitHub Actions tutorial. Let&#8217;s go through the steps one by one:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Check out repository<\/strong>: This step checks out the code in the repository.<\/li>\n\n\n\n<li><strong>Set up Node.js<\/strong>: Deploys <a href=\"https:\/\/webdeasy.de\/en\/node-js-tutorial-en\/\">Node.js<\/a> version 20 in the current environment.<\/li>\n\n\n\n<li><strong>Install dependencies<\/strong>: Executes the <code>npm install<\/code> command to install the project dependencies.<\/li>\n\n\n\n<li><strong>Run tests<\/strong>: Executes the <code>npm test<\/code> command to run the tests of the project.<\/li>\n<\/ol>\n\n\n\n<p>This example shows you the basic structure of a pipeline. You can execute any number of steps and jobs per GitHub Actions workflow.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"triggers-events\">Triggers &amp; Events<\/h2>\n\n\n\n<p>GitHub Actions provides a flexible way to execute workflows based on various triggers and events. These triggers determine when a workflow is started and can respond to a variety of GitHub events, such as code changes, issues and schedules.<\/p>\n\n\n\n<p><strong>Code changes\/new commits on a specific branch:<\/strong><br>This workflow is only executed when a commit is pushed to the <code>develop<\/code> branch.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"yaml\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">on:\n  push:\n    branches:\n      - develop<\/pre>\n\n\n\n<p><strong>Tags that correspond to a specific pattern:<\/strong><br>Here, the workflow is only started if a tag beginning with <code>release-<\/code> (e.g. <code>release-1.0.0<\/code>) is pushed.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"yaml\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">on:\n  push:\n    tags:\n      - 'release-*'<\/pre>\n\n\n\n<p><strong>Regular execution:<\/strong><br>This workflow is executed every Monday at 12 noon.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"yaml\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">on:\n  schedule:\n    - cron: '0 12 * * 1'<\/pre>\n\n\n\n<p>It is also very useful to carry out tests and linting, for example, before a pull request can be confirmed.<\/p>\n\n\n\n<figure class=\"wp-block-image size-medium\"><a href=\"https:\/\/webdeasy.de\/wp-content\/uploads\/2024\/05\/pr.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"650\" height=\"445\" src=\"https:\/\/webdeasy.de\/wp-content\/uploads\/2024\/05\/pr-650x445.jpg\" alt=\"GitHub Pull Request: Executing a workflow\" class=\"wp-image-9302\" srcset=\"https:\/\/webdeasy.de\/wp-content\/uploads\/2024\/05\/pr-650x445.jpg 650w, https:\/\/webdeasy.de\/wp-content\/uploads\/2024\/05\/pr-750x514.jpg 750w, https:\/\/webdeasy.de\/wp-content\/uploads\/2024\/05\/pr-768x526.jpg 768w, https:\/\/webdeasy.de\/wp-content\/uploads\/2024\/05\/pr.jpg 921w\" sizes=\"auto, (max-width: 650px) 100vw, 650px\" \/><\/a><figcaption class=\"wp-element-caption\">GitHub Pull Request: Executing a workflow<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"github-marketplace\">GitHub Marketplace<\/h2>\n\n\n\n<p>You don&#8217;t have to programme all actions yourself. That&#8217;s why the <a href=\"https:\/\/github.com\/marketplace\">GitHub Marketplace<\/a> is a central point of contact for predefined actions that you can integrate into your workflows to speed up and simplify the development process. Here you will find a variety of actions created by the community and GitHub itself to automate common tasks such as testing, code analysis and much more.<\/p>\n\n\n\n<p>Suppose you want to use an action that automatically checks your code for formatting errors. A popular action for this purpose is the Prettier action, which formats the code with Prettier.<\/p>\n\n\n\n<p>Here is an example of how you can integrate this action into your workflow:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"yaml\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">name: Format Code\n\non: [push, pull_request]\n\njobs:\n  format:\n\n    runs-on: ubuntu-latest\n\n    steps:\n    - name: Check out repository\n      uses: actions\/checkout@v2\n\n    - name: Run Prettier\n      uses: creyD\/prettier_action@v3.3\n      with:\n        prettier_options: --write **\/*.js\n<\/pre>\n\n\n\n<p>This workflow is executed for every push and pull request and checks whether the JavaScript code is formatted correctly. The <code>prettier_action<\/code> is integrated from the GitHub Marketplace and configured with the desired options.<\/p>\n\n\n\n<p>Using the GitHub Marketplace offers considerable advantages, such as time savings, as you have immediate access to numerous ready-made actions without having to develop your own solutions. In addition, the regular maintenance and updating of the actions ensures high quality and security. Thanks to the support of the GitHub community, you benefit from constantly improved and new actions.<\/p>\n\n\n\n<h3 class=\"wp-block-heading nitoc\" class=\"wp-block-heading nitoc\" id=\"other-useful-actions\">Other useful actions<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><a href=\"https:\/\/github.com\/github\/codeql-action\">CodeQL Analysis<\/a><\/strong>: Automate code analysis to detect security vulnerabilities.<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/github.com\/snyk\/actions\">Snyk Vulnerability Scan<\/a>:<\/strong> Automated scan of your code for security vulnerabilities.<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/github.com\/marketplace\/actions\/build-and-push-docker-images\" target=\"_blank\" rel=\"noreferrer noopener\">Docker Build and Publish<\/a><\/strong>: Create and publish <a href=\"https:\/\/webdeasy.de\/en\/docker-init-command\/\">Docker<\/a> images directly from your workflow.<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/github.com\/marketplace\/actions\/slack-notify\">Slack Notifications<\/a><\/strong>: Send notifications to Slack channels to inform your team about the status of workflows.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"github-actions-best-practices\">GitHub Actions Best Practices<\/h2>\n\n\n\n<p>If you use GitHub Actions, I think there are a few best practices that you should follow. This can save you execution time and increase the security of your workflows.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Use secrets and variables: <\/strong>Use secrets and environment variables to securely manage sensitive data such as API keys or access data. Store this information in the repository without saving it directly in the code to minimise security risks (can be found in the repo settings under \u2018Secrets and variables\u2019).<\/li>\n\n\n\n<li><strong>Optimise runtime:<\/strong> Optimise the runtime of your workflows by avoiding unnecessary steps and using caching techniques. This reduces the execution time and resource load, making your workflows more efficient.<\/li>\n\n\n\n<li><strong>Monitor workflows: <\/strong>Monitor your workflows regularly to avoid unexpected errors. If a workflow fails, you will even be notified automatically by email. So keep an eye on your inbox too.<\/li>\n\n\n\n<li><strong>Pay attention to the versioning of actions: <\/strong>Make sure to use specific versions of actions to ensure that changes or updates do not cause unexpected problems in your workflow. Use fixed version numbers instead of \u2018latest\u2019 to ensure consistency.<\/li>\n\n\n\n<li><strong>Keep actions small:<\/strong> Keep your actions small and specific to increase maintainability and reusability. A modular structure makes debugging easier and allows you to update individual components quickly if necessary.<\/li>\n\n\n\n<li><strong>Use the GitHub Marketplace:<\/strong> Access the GitHub Marketplace to find predefined actions and integrate them into your workflows. This saves time and effort, as you can access tested and reliable solutions instead of creating your own actions from scratch.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"github-actions-tutorial-conclusion\">GitHub Actions Tutorial: Conclusion<\/h2>\n\n\n\n<p>As you can see, GitHub Actions is extremely flexible. Setting up a new workflow is sometimes a little time-consuming, but it saves time and nerves in the long run, as you save yourself repetitive tasks and thus avoid mistakes. To get started, I recommend the <a href=\"https:\/\/docs.github.com\/en\/actions\/quickstart\" target=\"_blank\" rel=\"noreferrer noopener\">Quickstart Guide<\/a>, directly from GitHub.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this tutorial, I want to introduce you to GitHub Actions and show you how you can use GitHub Actions to create CI\/CD pipelines to [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":9286,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[558,609,614,623],"tags":[],"class_list":["post-9305","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administration-en","category-ci-cd-en","category-devops-en","category-docker-en","entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>GitHub Actions: Tutorial for beginners - basics &amp; examples<\/title>\n<meta name=\"description\" content=\"This GitHub Actions tutorial will teach you everything you need to know to understand and develop workflows with GitHub Actions.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/webdeasy.de\/en\/github-actions-tutorial-en\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"GitHub Actions: Tutorial for beginners - basics &amp; examples\" \/>\n<meta property=\"og:description\" content=\"This GitHub Actions tutorial will teach you everything you need to know to understand and develop workflows with GitHub Actions.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/webdeasy.de\/en\/github-actions-tutorial-en\/\" \/>\n<meta property=\"og:site_name\" content=\"webdeasy.de\" \/>\n<meta property=\"article:published_time\" content=\"2024-05-31T12:19:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-05T16:07:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/webdeasy.de\/wp-content\/uploads\/2024\/05\/github-actions.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1400\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Lorenz\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@webdeasy\" \/>\n<meta name=\"twitter:site\" content=\"@webdeasy\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lorenz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"7\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"TechArticle\",\"@id\":\"https:\\\/\\\/webdeasy.de\\\/en\\\/github-actions-tutorial-en\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/webdeasy.de\\\/en\\\/github-actions-tutorial-en\\\/\"},\"author\":{\"name\":\"Lorenz\",\"@id\":\"https:\\\/\\\/webdeasy.de\\\/#\\\/schema\\\/person\\\/42d507baee923988d706529843341fd7\"},\"headline\":\"GitHub Actions: Tutorial for beginners &#8211; basics &amp; examples\",\"datePublished\":\"2024-05-31T12:19:46+00:00\",\"dateModified\":\"2024-11-05T16:07:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/webdeasy.de\\\/en\\\/github-actions-tutorial-en\\\/\"},\"wordCount\":1220,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/webdeasy.de\\\/#\\\/schema\\\/person\\\/42d507baee923988d706529843341fd7\"},\"image\":{\"@id\":\"https:\\\/\\\/webdeasy.de\\\/en\\\/github-actions-tutorial-en\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/webdeasy.de\\\/wp-content\\\/uploads\\\/2024\\\/05\\\/github-actions.jpg\",\"articleSection\":[\"Administration\",\"CI\\\/CD\",\"DevOps\",\"Docker\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/webdeasy.de\\\/en\\\/github-actions-tutorial-en\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/webdeasy.de\\\/en\\\/github-actions-tutorial-en\\\/\",\"url\":\"https:\\\/\\\/webdeasy.de\\\/en\\\/github-actions-tutorial-en\\\/\",\"name\":\"GitHub Actions: Tutorial for beginners - basics &amp; examples\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/webdeasy.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/webdeasy.de\\\/en\\\/github-actions-tutorial-en\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/webdeasy.de\\\/en\\\/github-actions-tutorial-en\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/webdeasy.de\\\/wp-content\\\/uploads\\\/2024\\\/05\\\/github-actions.jpg\",\"datePublished\":\"2024-05-31T12:19:46+00:00\",\"dateModified\":\"2024-11-05T16:07:57+00:00\",\"description\":\"This GitHub Actions tutorial will teach you everything you need to know to understand and develop workflows with GitHub Actions.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/webdeasy.de\\\/en\\\/github-actions-tutorial-en\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/webdeasy.de\\\/en\\\/github-actions-tutorial-en\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/webdeasy.de\\\/en\\\/github-actions-tutorial-en\\\/#primaryimage\",\"url\":\"https:\\\/\\\/webdeasy.de\\\/wp-content\\\/uploads\\\/2024\\\/05\\\/github-actions.jpg\",\"contentUrl\":\"https:\\\/\\\/webdeasy.de\\\/wp-content\\\/uploads\\\/2024\\\/05\\\/github-actions.jpg\",\"width\":1400,\"height\":600},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/webdeasy.de\\\/en\\\/github-actions-tutorial-en\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/webdeasy.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DevOps\",\"item\":\"https:\\\/\\\/webdeasy.de\\\/en\\\/category\\\/devops-en\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"GitHub Actions: Tutorial for beginners &#8211; basics &amp; examples\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/webdeasy.de\\\/#website\",\"url\":\"https:\\\/\\\/webdeasy.de\\\/\",\"name\":\"webdeasy.de\",\"description\":\"Backend-Development, DevOps &amp; Co.\",\"publisher\":{\"@id\":\"https:\\\/\\\/webdeasy.de\\\/#\\\/schema\\\/person\\\/42d507baee923988d706529843341fd7\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/webdeasy.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/webdeasy.de\\\/#\\\/schema\\\/person\\\/42d507baee923988d706529843341fd7\",\"name\":\"Lorenz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/webdeasy.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/cropped-webdeasy-logo-3.png\",\"url\":\"https:\\\/\\\/webdeasy.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/cropped-webdeasy-logo-3.png\",\"contentUrl\":\"https:\\\/\\\/webdeasy.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/cropped-webdeasy-logo-3.png\",\"width\":190,\"height\":190,\"caption\":\"Lorenz\"},\"logo\":{\"@id\":\"https:\\\/\\\/webdeasy.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/cropped-webdeasy-logo-3.png\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/webdeasy\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"GitHub Actions: Tutorial for beginners - basics &amp; examples","description":"This GitHub Actions tutorial will teach you everything you need to know to understand and develop workflows with GitHub Actions.","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:\/\/webdeasy.de\/en\/github-actions-tutorial-en\/","og_locale":"de_DE","og_type":"article","og_title":"GitHub Actions: Tutorial for beginners - basics &amp; examples","og_description":"This GitHub Actions tutorial will teach you everything you need to know to understand and develop workflows with GitHub Actions.","og_url":"https:\/\/webdeasy.de\/en\/github-actions-tutorial-en\/","og_site_name":"webdeasy.de","article_published_time":"2024-05-31T12:19:46+00:00","article_modified_time":"2024-11-05T16:07:57+00:00","og_image":[{"width":1400,"height":600,"url":"https:\/\/webdeasy.de\/wp-content\/uploads\/2024\/05\/github-actions.jpg","type":"image\/jpeg"}],"author":"Lorenz","twitter_card":"summary_large_image","twitter_creator":"@webdeasy","twitter_site":"@webdeasy","twitter_misc":{"Verfasst von":"Lorenz","Gesch\u00e4tzte Lesezeit":"7\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"TechArticle","@id":"https:\/\/webdeasy.de\/en\/github-actions-tutorial-en\/#article","isPartOf":{"@id":"https:\/\/webdeasy.de\/en\/github-actions-tutorial-en\/"},"author":{"name":"Lorenz","@id":"https:\/\/webdeasy.de\/#\/schema\/person\/42d507baee923988d706529843341fd7"},"headline":"GitHub Actions: Tutorial for beginners &#8211; basics &amp; examples","datePublished":"2024-05-31T12:19:46+00:00","dateModified":"2024-11-05T16:07:57+00:00","mainEntityOfPage":{"@id":"https:\/\/webdeasy.de\/en\/github-actions-tutorial-en\/"},"wordCount":1220,"commentCount":2,"publisher":{"@id":"https:\/\/webdeasy.de\/#\/schema\/person\/42d507baee923988d706529843341fd7"},"image":{"@id":"https:\/\/webdeasy.de\/en\/github-actions-tutorial-en\/#primaryimage"},"thumbnailUrl":"https:\/\/webdeasy.de\/wp-content\/uploads\/2024\/05\/github-actions.jpg","articleSection":["Administration","CI\/CD","DevOps","Docker"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/webdeasy.de\/en\/github-actions-tutorial-en\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/webdeasy.de\/en\/github-actions-tutorial-en\/","url":"https:\/\/webdeasy.de\/en\/github-actions-tutorial-en\/","name":"GitHub Actions: Tutorial for beginners - basics &amp; examples","isPartOf":{"@id":"https:\/\/webdeasy.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/webdeasy.de\/en\/github-actions-tutorial-en\/#primaryimage"},"image":{"@id":"https:\/\/webdeasy.de\/en\/github-actions-tutorial-en\/#primaryimage"},"thumbnailUrl":"https:\/\/webdeasy.de\/wp-content\/uploads\/2024\/05\/github-actions.jpg","datePublished":"2024-05-31T12:19:46+00:00","dateModified":"2024-11-05T16:07:57+00:00","description":"This GitHub Actions tutorial will teach you everything you need to know to understand and develop workflows with GitHub Actions.","breadcrumb":{"@id":"https:\/\/webdeasy.de\/en\/github-actions-tutorial-en\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/webdeasy.de\/en\/github-actions-tutorial-en\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/webdeasy.de\/en\/github-actions-tutorial-en\/#primaryimage","url":"https:\/\/webdeasy.de\/wp-content\/uploads\/2024\/05\/github-actions.jpg","contentUrl":"https:\/\/webdeasy.de\/wp-content\/uploads\/2024\/05\/github-actions.jpg","width":1400,"height":600},{"@type":"BreadcrumbList","@id":"https:\/\/webdeasy.de\/en\/github-actions-tutorial-en\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/webdeasy.de\/"},{"@type":"ListItem","position":2,"name":"DevOps","item":"https:\/\/webdeasy.de\/en\/category\/devops-en\/"},{"@type":"ListItem","position":3,"name":"GitHub Actions: Tutorial for beginners &#8211; basics &amp; examples"}]},{"@type":"WebSite","@id":"https:\/\/webdeasy.de\/#website","url":"https:\/\/webdeasy.de\/","name":"webdeasy.de","description":"Backend-Development, DevOps &amp; Co.","publisher":{"@id":"https:\/\/webdeasy.de\/#\/schema\/person\/42d507baee923988d706529843341fd7"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/webdeasy.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":["Person","Organization"],"@id":"https:\/\/webdeasy.de\/#\/schema\/person\/42d507baee923988d706529843341fd7","name":"Lorenz","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/webdeasy.de\/wp-content\/uploads\/2019\/09\/cropped-webdeasy-logo-3.png","url":"https:\/\/webdeasy.de\/wp-content\/uploads\/2019\/09\/cropped-webdeasy-logo-3.png","contentUrl":"https:\/\/webdeasy.de\/wp-content\/uploads\/2019\/09\/cropped-webdeasy-logo-3.png","width":190,"height":190,"caption":"Lorenz"},"logo":{"@id":"https:\/\/webdeasy.de\/wp-content\/uploads\/2019\/09\/cropped-webdeasy-logo-3.png"},"sameAs":["https:\/\/x.com\/webdeasy"]}]}},"_links":{"self":[{"href":"https:\/\/webdeasy.de\/wp-json\/wp\/v2\/posts\/9305","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webdeasy.de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webdeasy.de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webdeasy.de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webdeasy.de\/wp-json\/wp\/v2\/comments?post=9305"}],"version-history":[{"count":3,"href":"https:\/\/webdeasy.de\/wp-json\/wp\/v2\/posts\/9305\/revisions"}],"predecessor-version":[{"id":9882,"href":"https:\/\/webdeasy.de\/wp-json\/wp\/v2\/posts\/9305\/revisions\/9882"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webdeasy.de\/wp-json\/wp\/v2\/media\/9286"}],"wp:attachment":[{"href":"https:\/\/webdeasy.de\/wp-json\/wp\/v2\/media?parent=9305"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webdeasy.de\/wp-json\/wp\/v2\/categories?post=9305"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webdeasy.de\/wp-json\/wp\/v2\/tags?post=9305"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}