├── .github ├── dependabot.yml ├── steps │ ├── 1-step.md │ ├── 2-step.md │ ├── 3-step.md │ ├── 4-step.md │ └── x-review.md └── workflows │ ├── 0-start-exercise.yml │ ├── 1-step.yml │ ├── 2-step.yml │ ├── 3-step.yml │ └── 4-step.yml ├── .gitignore ├── LICENSE └── README.md /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "github-actions" 4 | directory: "/" 5 | schedule: 6 | interval: "monthly" 7 | -------------------------------------------------------------------------------- /.github/steps/1-step.md: -------------------------------------------------------------------------------- 1 | ## Step 1: Enable GitHub Pages 2 | 3 | ### 📖 Theory: What is GitHub Pages? 4 | 5 | GitHub Pages lets you turn your repository into a website. This is a great way to share your project, resume, portfolio, documentation, or even a blog with the world. 6 | 7 | When you enable GitHub Pages on a repository, GitHub takes the content that's on the main branch and publishes a website based on its contents. 8 | 9 | > [!NOTE] 10 | > Learn more in the [GitHub Pages documentation](https://docs.github.com/en/pages/getting-started-with-github-pages/about-github-pages). 11 | 12 | ### ⌨️ Activity: Enable GitHub Pages 13 | 14 | 15 | 16 | 1. Open this repository in a new browser tab so you can work on the steps while you read the instructions in this tab. 17 | 1. Under your repository name, click **Settings**. 18 | 1. Click **Pages** in the **Code and automation** section. 19 | 1. Ensure **Deploy from a branch** is selected from the **Source** drop-down menu, and then select `main` from the **Branch** drop-down menu. 20 | 1. Click the **Save** button. 21 | 22 | 1. With GitHub Pages enabled Mona will be preparing the next step in this exercise! 23 | 24 | 25 |
26 | Having trouble? 🤷
27 | 28 | - Turning on GitHub Pages creates a deployment of your repository. GitHub Actions may take up to a minute to respond while waiting for the deployment. Future steps will be about 20 seconds; this step is slower. 29 | 30 |
31 | -------------------------------------------------------------------------------- /.github/steps/2-step.md: -------------------------------------------------------------------------------- 1 | ## Step 2: Customize your homepage 2 | 3 | Good job! You turned on GitHub Pages! :tada: 4 | 5 | You can see the link to your website at the top of the [Pages](https://github.com/{{full_repo_name}}/settings/pages) section of your repository settings _(you may need to refresh it)_ 6 | 7 | > [!TIP] 8 | > Keep your GitHub Pages [website](https://{{login}}.github.io/{{repo_name}}/) open in a separate browser tab and keep it handy! 9 | > 10 | > As you progress through this exercise, you'll see your changes reflected on your live site. 11 | 12 | ### 📖 Theory: Customizing your homepage 13 | 14 | You can customize your homepage by adding content to `index.md` file. As you commit it to the `main` branch your website will be updated to display your personalized content! 15 | 16 | ### ⌨️ Activity: Create your homepage 17 | 18 | 1. Browse to the `index.md` file in the `main` branch. 19 | 1. In the upper right corner, open the file editor. 20 | 1. Type the content you want on your homepage. You can use Markdown formatting on this page. 21 | 1. (optional) You can also modify `title:` or leave it as it is. 22 | 1. Commit your changes to the `main` branch. 23 | 1. As you commit your changes Mona will prepare the next step in this exercise! 24 | 25 | 26 |
27 | Having trouble? 🤷
28 | 29 | - Make sure you are editing the `index.md` file in the `main` branch. 30 | 31 |
32 | -------------------------------------------------------------------------------- /.github/steps/3-step.md: -------------------------------------------------------------------------------- 1 | ## Step 3: Configure your site 2 | 3 | Nice work updating your home page :sparkles: 4 | 5 | It's time we give it a little bit of **configuration** so it looks nice! 6 | 7 | ### 📖 Theory: Jekyll and \_config.yml 8 | 9 | Jekyll uses a file titled `_config.yml` to store settings for your site, your theme, and reusable content like your site title and GitHub handle. Learn more in the [Jekyll configuration documentation](https://jekyllrb.com/docs/configuration/). 10 | 11 | For this activity, we will use a blog-ready theme named "minima". 12 | 13 | ### ⌨️ Activity: Configure your site 14 | 15 | 1. Browse to the `_config.yml` file in the `main` branch. 16 | 1. In the upper right corner, open the file editor. 17 | 1. Add a `theme:` set to **minima** so it shows in the `_config.yml` file as below: 18 | 19 | ```yml 20 | theme: minima 21 | ``` 22 | 23 | 1. (optional) You can modify the other configuration variables such as `title:`, `author:`, and `description:` to further customize your site. 24 | 25 |
26 | Example
27 | 28 | ```yml 29 | theme: minima 30 | title: {{ login }}'s personal blog 31 | description: This is where I share cool stuff about my life 32 | author: {{ login }} 33 | ``` 34 | 35 |
36 | 37 | 1. Commit your changes to the `main` branch. 38 | 1. As you commit your changes Mona will prepare the next step in this exercise! 39 | 40 | 41 |
42 | Having trouble? 🤷
43 | 44 | - Make sure you are editing the `_config.yml` file in the `main` branch`. 45 | - Double-check your YAML formatting. Indentation and colons matter! 46 | 47 |
48 | -------------------------------------------------------------------------------- /.github/steps/4-step.md: -------------------------------------------------------------------------------- 1 | ## Step 4: Create a blog post 2 | 3 | Your home page is looking great! :cowboy_hat_face: 4 | 5 | ### 📖 Theory: Jekyll blog posts and frontmatter 6 | 7 | 8 | 9 | Jekyll uses specially named files and frontmatter to create blog posts. The files must be named `_posts/YYYY-MM-DD-title.md` and must include `title` and `date` in the **front matter**. 10 | 11 | **Front matter** is a yaml section at the **top** of your file that looks like this: 12 | 13 | ```yaml 14 | --- 15 | title: "Welcome to my blog" 16 | date: 2025-05-15 17 | --- 18 | ``` 19 | 20 | > [!NOTE] 21 | > Learn more in the [Jekyll frontmatter documentation](https://jekyllrb.com/docs/front-matter/). 22 | 23 | 24 | ### ⌨️ Activity: Create a blog post 25 | 26 | 1. Browse to the `main` branch. 27 | 1. Click the `Add file` dropdown menu and then on `Create new file`. 28 | 1. Name the file following the `_posts/YYYY-MM-DD-title.md` format. 29 | 1. Replace the `YYYY-MM-DD` with today's date, and change the `title` of your first blog post if you'd like. 30 | > If you do edit the title, make sure there are hyphens (-) between your words. 31 | > If your blog post date doesn't follow the correct date convention, you'll receive an error and your site won't build. For more information, see "[Page build failed: Invalid post date](https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll/troubleshooting-jekyll-build-errors-for-github-pages-sites)". 32 | 1. Type the following content at the top of your blog post: 33 | 34 | ```yaml 35 | --- 36 | title: "YOUR-TITLE" 37 | date: YYYY-MM-DD 38 | --- 39 | ``` 40 | 41 | 1. Replace `YOUR-TITLE` with the title for your blog post. 42 | 1. Replace `YYYY-MM-DD` with today's date. 43 | 1. Type a quick draft of your blog post. Remember, you can always edit it later. 44 | 1. Commit your changes to the `main` branch. 45 | 1. As you commit your changes Mona will prepare the next step in this exercise! 46 | 47 |
48 | Having trouble? 🤷
49 | 50 | - Double-check your file name and date format. 51 | - Make sure your frontmatter is at the very top of the file and formatted correctly. 52 | 53 |
54 | -------------------------------------------------------------------------------- /.github/steps/x-review.md: -------------------------------------------------------------------------------- 1 | ## Review 2 | 3 | _Congratulations, you've completed this exercise and learned a lot about GitHub Pages and Jekyll!_ 4 | 5 | celebrate 6 | 7 | Here's a recap of your accomplishments: 8 | 9 | - You enabled GitHub Pages. 10 | - You selected a theme using the config file. 11 | - You learned about proper directory format and file naming conventions in Jekyll. 12 | - You created your first blog post with Jekyll and GitHub Pages! 13 | 14 | ### What's next? 15 | 16 | - Keep working on your GitHub Pages site... we love seeing what you come up with! 17 | - [Take another GitHub Skills exercise](https://skills.github.com/). 18 | - [Read the GitHub Pages docs](https://docs.github.com/en/pages). 19 | -------------------------------------------------------------------------------- /.github/workflows/0-start-exercise.yml: -------------------------------------------------------------------------------- 1 | name: Step 0 # Start Exercise 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | permissions: 9 | contents: write 10 | actions: write 11 | issues: write 12 | 13 | env: 14 | STEP_1_FILE: ".github/steps/1-step.md" 15 | 16 | jobs: 17 | start_exercise: 18 | if: | 19 | !github.event.repository.is_template 20 | name: Start Exercise 21 | uses: skills/exercise-toolkit/.github/workflows/start-exercise.yml@v0.5.0 22 | with: 23 | exercise-title: "GitHub Pages" 24 | intro-message: "Create a site or blog from your GitHub repositories with GitHub Pages." 25 | 26 | create_initial_files: 27 | name: Create initial files 28 | runs-on: ubuntu-latest 29 | needs: [start_exercise] 30 | 31 | steps: 32 | - name: Checkout 33 | uses: actions/checkout@v4 34 | with: 35 | ref: main 36 | 37 | - name: Create empty _config.yml file 38 | run: | 39 | touch _config.yml 40 | 41 | - name: Create index.md file 42 | run: | 43 | cat > index.md << EOF 44 | --- 45 | title: Welcome to my blog! 46 | --- 47 | EOF 48 | - name: Commit files 49 | uses: EndBug/add-and-commit@v9 50 | with: 51 | add: | 52 | - _config.yml 53 | - index.md 54 | message: 'Create config and homepages files' 55 | default_author: github_actions 56 | 57 | post_next_step_content: 58 | name: Post next step content 59 | runs-on: ubuntu-latest 60 | needs: [start_exercise] 61 | env: 62 | ISSUE_URL: ${{ needs.start_exercise.outputs.issue-url }} 63 | 64 | steps: 65 | - name: Checkout 66 | uses: actions/checkout@v4 67 | 68 | - name: Get response templates 69 | uses: actions/checkout@v4 70 | with: 71 | repository: skills/exercise-toolkit 72 | path: exercise-toolkit 73 | ref: v0.4.0 74 | 75 | - name: Build comment - add step content 76 | id: build-comment 77 | uses: skills/action-text-variables@v2 78 | with: 79 | template-file: ${{ env.STEP_1_FILE }} 80 | template-vars: | 81 | login: ${{ github.actor }} 82 | full_repo_name: ${{ github.repository }} 83 | 84 | - name: Create comment - add step content 85 | run: | 86 | gh issue comment "$ISSUE_URL" \ 87 | --body "$ISSUE_BODY" 88 | env: 89 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 90 | ISSUE_BODY: ${{ steps.build-comment.outputs.updated-text }} 91 | 92 | - name: Create comment - watching for progress 93 | run: | 94 | gh issue comment "$ISSUE_URL" \ 95 | --body-file "exercise-toolkit/markdown-templates/step-feedback/watching-for-progress.md" 96 | env: 97 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 98 | 99 | - name: Enable next step workflow 100 | run: | 101 | gh workflow enable "Step 1" 102 | env: 103 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 104 | -------------------------------------------------------------------------------- /.github/workflows/1-step.yml: -------------------------------------------------------------------------------- 1 | name: Step 1 2 | 3 | on: 4 | workflow_dispatch: 5 | page_build: 6 | 7 | permissions: 8 | contents: read 9 | actions: write 10 | issues: write 11 | 12 | env: 13 | STEP_2_FILE: ".github/steps/2-step.md" 14 | 15 | jobs: 16 | find_exercise: 17 | name: Find Exercise Issue 18 | uses: skills/exercise-toolkit/.github/workflows/find-exercise-issue.yml@v0.5.0 19 | 20 | post_next_step_content: 21 | name: Post next step content 22 | needs: [find_exercise] 23 | runs-on: ubuntu-latest 24 | env: 25 | ISSUE_URL: ${{ needs.find_exercise.outputs.issue-url }} 26 | 27 | steps: 28 | - name: Checkout 29 | uses: actions/checkout@v4 30 | 31 | - name: Get response templates 32 | uses: actions/checkout@v4 33 | with: 34 | repository: skills/exercise-toolkit 35 | path: exercise-toolkit 36 | ref: v0.4.0 37 | 38 | - name: Build comment - add step content 39 | id: build-comment 40 | uses: skills/action-text-variables@v2 41 | with: 42 | template-file: ${{ env.STEP_2_FILE }} 43 | template-vars: | 44 | login: ${{ github.actor }} 45 | full_repo_name: ${{ github.repository }} 46 | repo_name: ${{ github.event.repository.name }} 47 | 48 | - name: Create comment - add step content 49 | run: | 50 | gh issue comment "$ISSUE_URL" \ 51 | --body "$ISSUE_BODY" 52 | env: 53 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 54 | ISSUE_BODY: ${{ steps.build-comment.outputs.updated-text }} 55 | 56 | - name: Create comment - watching for progress 57 | run: | 58 | gh issue comment "$ISSUE_URL" \ 59 | --body-file exercise-toolkit/markdown-templates/step-feedback/watching-for-progress.md 60 | env: 61 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 62 | 63 | - name: Disable current workflow and enable next one 64 | run: | 65 | gh workflow disable "${{github.workflow}}" 66 | gh workflow enable "Step 2" 67 | env: 68 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 69 | -------------------------------------------------------------------------------- /.github/workflows/2-step.yml: -------------------------------------------------------------------------------- 1 | name: Step 2 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | paths: 8 | - index.md 9 | 10 | permissions: 11 | contents: read 12 | actions: write 13 | issues: write 14 | 15 | env: 16 | STEP_3_FILE: ".github/steps/3-step.md" 17 | 18 | jobs: 19 | find_exercise: 20 | name: Find Exercise Issue 21 | uses: skills/exercise-toolkit/.github/workflows/find-exercise-issue.yml@v0.5.0 22 | 23 | 24 | post_next_step_content: 25 | name: Post next step content 26 | needs: [find_exercise] 27 | runs-on: ubuntu-latest 28 | env: 29 | ISSUE_URL: ${{ needs.find_exercise.outputs.issue-url }} 30 | 31 | steps: 32 | - name: Checkout 33 | uses: actions/checkout@v4 34 | 35 | - name: Get response templates 36 | uses: actions/checkout@v4 37 | with: 38 | repository: skills/exercise-toolkit 39 | path: exercise-toolkit 40 | ref: v0.4.0 41 | 42 | - name: Build comment - add step content 43 | id: build-comment 44 | uses: skills/action-text-variables@v2 45 | with: 46 | template-file: ${{ env.STEP_3_FILE }} 47 | template-vars: | 48 | login: ${{ github.actor }} 49 | 50 | - name: Create comment - add step content 51 | run: | 52 | gh issue comment "$ISSUE_URL" \ 53 | --body "$ISSUE_BODY" 54 | env: 55 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 56 | ISSUE_BODY: ${{ steps.build-comment.outputs.updated-text }} 57 | 58 | - name: Create comment - watching for progress 59 | run: | 60 | gh issue comment "$ISSUE_URL" \ 61 | --body-file exercise-toolkit/markdown-templates/step-feedback/watching-for-progress.md 62 | env: 63 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 64 | 65 | - name: Disable current workflow and enable next one 66 | run: | 67 | gh workflow disable "${{github.workflow}}" 68 | gh workflow enable "Step 3" 69 | env: 70 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 71 | 72 | -------------------------------------------------------------------------------- /.github/workflows/3-step.yml: -------------------------------------------------------------------------------- 1 | name: Step 3 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | paths: 8 | - _config.yml 9 | 10 | permissions: 11 | contents: read 12 | actions: write 13 | issues: write 14 | 15 | env: 16 | STEP_4_FILE: ".github/steps/4-step.md" 17 | 18 | jobs: 19 | find_exercise: 20 | name: Find Exercise Issue 21 | uses: skills/exercise-toolkit/.github/workflows/find-exercise-issue.yml@v0.5.0 22 | 23 | check_step_work: 24 | name: Check step work 25 | runs-on: ubuntu-latest 26 | needs: [find_exercise] 27 | env: 28 | ISSUE_URL: ${{ needs.find_exercise.outputs.issue-url }} 29 | 30 | steps: 31 | - name: Checkout 32 | uses: actions/checkout@v4 33 | 34 | - name: Get response templates 35 | uses: actions/checkout@v4 36 | with: 37 | repository: skills/exercise-toolkit 38 | path: exercise-toolkit 39 | ref: v0.4.0 40 | 41 | - name: Update comment - checking work 42 | run: | 43 | gh issue comment "$ISSUE_URL" \ 44 | --body-file exercise-toolkit/markdown-templates/step-feedback/checking-work.md \ 45 | --edit-last 46 | env: 47 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 48 | 49 | - name: Check for theme minima in _config.yml 50 | id: check-theme-minima 51 | continue-on-error: true 52 | uses: skills/action-keyphrase-checker@v1 53 | with: 54 | text-file: _config.yml 55 | keyphrase: "theme: minima" 56 | 57 | - name: Build message - step results 58 | id: build-message-step-results 59 | uses: skills/action-text-variables@v2 60 | with: 61 | template-file: exercise-toolkit/markdown-templates/step-feedback/step-results-table.md 62 | template-vars: | 63 | step_number: 3 64 | passed: ${{ !contains(steps.*.outcome, 'failure') }} 65 | results_table: 66 | - description: "Looked for minima theme added to the configuration file" 67 | passed: ${{ steps.check-theme-minima.outcome == 'success' }} 68 | 69 | - name: Create comment - step results 70 | run: | 71 | gh issue comment "$ISSUE_URL" \ 72 | --body "$COMMENT_BODY" \ 73 | --edit-last 74 | env: 75 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 76 | COMMENT_BODY: ${{ steps.build-message-step-results.outputs.updated-text }} 77 | 78 | - name: Fail job if not all checks passed 79 | if: contains(steps.*.outcome, 'failure') 80 | run: exit 1 81 | 82 | - name: Build message - step finished 83 | id: build-message-step-finish 84 | uses: skills/action-text-variables@v2 85 | with: 86 | template-file: exercise-toolkit/markdown-templates/step-feedback/step-finished-prepare-next-step.md 87 | template-vars: | 88 | next_step_number: 4 89 | 90 | - name: Update comment - step finished 91 | run: | 92 | gh issue comment "$ISSUE_URL" \ 93 | --body "$ISSUE_BODY" 94 | env: 95 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 96 | ISSUE_BODY: ${{ steps.build-message-step-finish.outputs.updated-text }} 97 | 98 | post_next_step_content: 99 | name: Post next step content 100 | needs: [find_exercise, check_step_work] 101 | runs-on: ubuntu-latest 102 | env: 103 | ISSUE_URL: ${{ needs.find_exercise.outputs.issue-url }} 104 | 105 | steps: 106 | - name: Checkout 107 | uses: actions/checkout@v4 108 | 109 | - name: Get response templates 110 | uses: actions/checkout@v4 111 | with: 112 | repository: skills/exercise-toolkit 113 | path: exercise-toolkit 114 | ref: v0.4.0 115 | 116 | - name: Create comment - add step content 117 | run: | 118 | gh issue comment "$ISSUE_URL" \ 119 | --body-file "$STEP_4_FILE" 120 | env: 121 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 122 | 123 | - name: Create comment - watching for progress 124 | run: | 125 | gh issue comment "$ISSUE_URL" \ 126 | --body-file exercise-toolkit/markdown-templates/step-feedback/watching-for-progress.md 127 | env: 128 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 129 | 130 | - name: Disable current workflow and enable next one 131 | run: | 132 | gh workflow disable "${{github.workflow}}" 133 | gh workflow enable "Step 4" 134 | env: 135 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 136 | -------------------------------------------------------------------------------- /.github/workflows/4-step.yml: -------------------------------------------------------------------------------- 1 | name: Step 4 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | paths: 8 | - _posts/*.md 9 | 10 | permissions: 11 | contents: write 12 | actions: write 13 | issues: write 14 | 15 | env: 16 | REVIEW_FILE: ".github/steps/x-review.md" 17 | 18 | jobs: 19 | find_exercise: 20 | name: Find Exercise Issue 21 | uses: skills/exercise-toolkit/.github/workflows/find-exercise-issue.yml@v0.5.0 22 | 23 | post_review_content: 24 | name: Post review content 25 | needs: [find_exercise] 26 | runs-on: ubuntu-latest 27 | env: 28 | ISSUE_URL: ${{ needs.find_exercise.outputs.issue-url }} 29 | 30 | steps: 31 | - name: Checkout 32 | uses: actions/checkout@v4 33 | 34 | - name: Create comment - add step content 35 | run: | 36 | gh issue comment "$ISSUE_URL" \ 37 | --body-file "$REVIEW_FILE" 38 | env: 39 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 40 | 41 | - name: Disable current workflow 42 | run: gh workflow disable "${{github.workflow}}" 43 | env: 44 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 45 | 46 | # The last workflow in the chain of steps should also finish the exercise. 47 | finish_exercise: 48 | name: Finish Exercise 49 | needs: [find_exercise, post_review_content] 50 | uses: skills/exercise-toolkit/.github/workflows/finish-exercise.yml@v0.5.0 51 | with: 52 | issue-url: ${{ needs.find_exercise.outputs.issue-url }} 53 | 54 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled source # 2 | ################### 3 | *.com 4 | *.class 5 | *.dll 6 | *.exe 7 | *.o 8 | *.so 9 | 10 | # Packages # 11 | ############ 12 | # it's better to unpack these files and commit the raw source 13 | # git has its own built in compression methods 14 | *.7z 15 | *.dmg 16 | *.gz 17 | *.iso 18 | *.jar 19 | *.rar 20 | *.tar 21 | *.zip 22 | 23 | # Logs and databases # 24 | ###################### 25 | *.log 26 | *.sql 27 | *.sqlite 28 | 29 | # OS generated files # 30 | ###################### 31 | .DS_Store 32 | .DS_Store? 33 | ._* 34 | .Spotlight-V100 35 | .Trashes 36 | ehthumbs.db 37 | Thumbs.db 38 | 39 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) GitHub, Inc. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GitHub Pages 2 | 3 | _Create a site or blog from your GitHub repositories with GitHub Pages._ 4 | 5 | ## Welcome 6 | 7 | - **Who is this for**: Beginners, students, project maintainers, small businesses. 8 | - **What you'll learn**: How to build a GitHub Pages site. 9 | - **What you'll build**: We'll build a simple GitHub Pages site with a blog. We'll use [Jekyll](https://jekyllrb.com), a static site generator. 10 | - **Prerequisites**: If you need to learn about branches, commits, and pull requests, take [Introduction to GitHub](https://github.com/skills/introduction-to-github) first. 11 | 12 | - **How long**: This exercise takes less than one hour to complete. 13 | 14 | In this exercise, you will: 15 | 16 | 1. Enable GitHub Pages 17 | 1. Configure your site 18 | 1. Customize your home page 19 | 1. Create a blog post 20 | 1. Merge your pull request 21 | 22 | 23 | ### How to start this exercise 24 | 25 | Simply copy the exercise to your account, then give your favorite Octocat (Mona) **about 20 seconds** to prepare the first lesson, then **refresh the page**. 26 | 27 | [![](https://img.shields.io/badge/Copy%20Exercise-%E2%86%92-1f883d?style=for-the-badge&logo=github&labelColor=197935)](https://github.com/new?template_owner=skills&template_name=github-pages&owner=%40me&name=skills-github-pages&description=Exercise:+Create+a+site+or+blog+from+your+GitHub+repositories+with+GitHub+Pages&visibility=public) 28 | 29 |
30 | Having trouble? 🤷
31 | 32 | When copying the exercise, we recommend the following settings: 33 | 34 | - For owner, choose your personal account or an organization to host the repository. 35 | 36 | - We recommend creating a public repository, since private repositories will use Actions minutes. 37 | 38 | If the exercise isn't ready in 20 seconds, please check the [Actions](../../actions) tab. 39 | 40 | - Check to see if a job is running. Sometimes it simply takes a bit longer. 41 | 42 | - If the page shows a failed job, please submit an issue. Nice, you found a bug! 🐛 43 | 44 |
45 | 46 | --- 47 | 48 | © 2025 GitHub • [Code of Conduct](https://www.contributor-covenant.org/version/2/1/code_of_conduct/code_of_conduct.md) • [MIT License](https://gh.io/mit) 49 | --------------------------------------------------------------------------------