├── .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 |
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://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 |
--------------------------------------------------------------------------------