Congratulations!
20 |You've completed the essentials of automated application deployment with GitHub Actions! 🥳
21 | 22 |├── .gitignore
├── LICENSE.txt
├── README.md
├── SUPPORT.md
├── demo-files
├── build-test-deploy.yml
└── hello-world.yml
├── hello_world.txt
├── jsconfig.json
├── next.config.js
├── package-lock.json
├── package.json
├── pages
├── _app.js
├── _document.js
├── api
│ └── hello.js
└── index.js
├── public
├── favicon.ico
├── next.svg
└── vercel.svg
└── styles
├── Home.module.css
└── globals.css
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # next.js
12 | /.next/
13 | /out/
14 |
15 | # production
16 | /build
17 |
18 | # misc
19 | .DS_Store
20 | *.pem
21 |
22 | # debug
23 | npm-debug.log*
24 | yarn-debug.log*
25 | yarn-error.log*
26 |
27 | # local env files
28 | .env*.local
29 |
30 | # vercel
31 | .vercel
32 |
33 | # typescript
34 | *.tsbuildinfo
35 | next-env.d.ts
36 |
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright GitHub
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## Essentials of GitHub Actions learning pathway demo repository
2 |
3 | This repository contains the core web application files and configuration you'll need to follow along through the [Essentials of automated application deployment with GitHub Actions & GitHub Pages](https://resources.github.com/learn/pathways/automation/essentials/automated-application-deployment-with-github-actions-and-pages/) module.
4 |
5 | To follow along with the step-by-step instructions in the Essentials module, you will need to create a copy of this repository by doing the following:
6 | 1. Click **Use this template** above the file list and select **Create a new repository**.
7 | 2. Use the **Owner** dropdown menu to select the account you want to own the repository.
8 | 3. Name your repository `actions-learning-pathway` and add a simple description to make it easier to identify later.
9 | 4. Set the default visibility for the repo to public, as private repositories use Actions minutes, while public repositories can use GitHub-hosted runners for free.
10 |
11 | Click Create repository from template and we’re ready to build our first Actions workflow!
12 |
13 |
14 |
15 | If you have arrived here from the [Intermediate automation strategies with GitHub Actions](https://resources.github.com/learn/pathways/automation/intermediate/workflow-automation-with-github-actions/) module without following the first module, copy the contents of the `/demo-files` folder into the `.github/workflows` folder to follow along.
16 |
--------------------------------------------------------------------------------
/SUPPORT.md:
--------------------------------------------------------------------------------
1 | # Support
2 |
3 | This repo contains supplemental content for the [GitHub Actions learning pathway](https://resources.github.com/learn/pathways).
4 |
5 | **actions-learning-pathway** is not an open source project, but rather supplemental demo content maintained by GitHub staff. We encourage users to direct questions to the [Community of Discussions](https://github.com/orgs/community/discussions/) or reference [GitHub Docs](https://docs.github.com/en).
6 |
7 | ## GitHub Support Policy
8 |
9 | Support for this project is limited to the resources listed above.
10 |
--------------------------------------------------------------------------------
/demo-files/build-test-deploy.yml:
--------------------------------------------------------------------------------
1 | name: build-test-deploy
2 |
3 | on: push
4 |
5 | jobs:
6 | build:
7 | runs-on: ubuntu-latest
8 |
9 | steps:
10 | - name: checkout repo
11 | uses: actions/checkout@v3
12 | - name: use node.js
13 | uses: actions/setup-node@v3
14 | with:
15 | node-version: '18.x'
16 | - run: npm install
17 | - run: npm run build
18 |
19 | test:
20 | needs: build
21 |
22 | runs-on: ubuntu-latest
23 |
24 | steps:
25 | - name: checkout repo
26 | uses: actions/checkout@v3
27 | - name: use node.js
28 | uses: actions/setup-node@v3
29 | with:
30 | node-version: '18.x'
31 | - run: npm install
32 | - run: npm test
33 |
34 | deploy:
35 | needs: test
36 |
37 | permissions:
38 | contents: write
39 | pages: write
40 | id-token: write
41 |
42 | environment:
43 | name: production
44 | url: ${{ steps.deployment.outputs.page_url }}
45 |
46 | runs-on: ubuntu-latest
47 |
48 | steps:
49 | - name: checkout repo
50 | uses: actions/checkout@v3
51 | with:
52 | token: ${{ secrets.GITHUB_TOKEN }}
53 | - name: use node.js
54 | uses: actions/setup-node@v3
55 | with:
56 | node-version: '18.x'
57 | - name: configure github pages
58 | uses: actions/configure-pages@v3
59 | with:
60 | static_site_generator: next
61 | - run: npm install
62 | - run: npm run build
63 | - name: upload artifacts
64 | uses: actions/upload-pages-artifact@v1
65 | with:
66 | path: './out'
67 | - name: deploy
68 | id: deployment
69 | uses: actions/deploy-pages@v1
70 |
--------------------------------------------------------------------------------
/demo-files/hello-world.yml:
--------------------------------------------------------------------------------
1 | name: hello-world
2 |
3 | on: push
4 |
5 | jobs:
6 | hello-world-job:
7 |
8 | runs-on: ubuntu-latest
9 |
10 | steps:
11 | - name: Check out repository code
12 | uses: actions/checkout@v3
13 | - run: echo "$(cat hello_world.txt)"
14 |
--------------------------------------------------------------------------------
/hello_world.txt:
--------------------------------------------------------------------------------
1 | Hello! And congrats, you've succesfully built and run your first GitHub Actions workflow file!
2 |
--------------------------------------------------------------------------------
/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "paths": {
4 | "@/*": ["./*"]
5 | }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {
3 | output: 'export',
4 |
5 | images: {
6 | unoptimized: true,
7 | },
8 |
9 | reactStrictMode: true,
10 | }
11 |
12 | module.exports = nextConfig
13 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "actions-learning-pathway",
3 | "version": "0.1.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "actions-learning-100",
9 | "version": "0.1.0",
10 | "dependencies": {
11 | "next": "14.2.21",
12 | "react": "18.2.0",
13 | "react-dom": "18.2.0"
14 | }
15 | },
16 | "node_modules/@next/env": {
17 | "version": "14.2.21",
18 | "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.21.tgz",
19 | "integrity": "sha512-lXcwcJd5oR01tggjWJ6SrNNYFGuOOMB9c251wUNkjCpkoXOPkDeF/15c3mnVlBqrW4JJXb2kVxDFhC4GduJt2A==",
20 | "license": "MIT"
21 | },
22 | "node_modules/@next/swc-darwin-arm64": {
23 | "version": "14.2.21",
24 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.21.tgz",
25 | "integrity": "sha512-HwEjcKsXtvszXz5q5Z7wCtrHeTTDSTgAbocz45PHMUjU3fBYInfvhR+ZhavDRUYLonm53aHZbB09QtJVJj8T7g==",
26 | "cpu": [
27 | "arm64"
28 | ],
29 | "license": "MIT",
30 | "optional": true,
31 | "os": [
32 | "darwin"
33 | ],
34 | "engines": {
35 | "node": ">= 10"
36 | }
37 | },
38 | "node_modules/@next/swc-darwin-x64": {
39 | "version": "14.2.21",
40 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.21.tgz",
41 | "integrity": "sha512-TSAA2ROgNzm4FhKbTbyJOBrsREOMVdDIltZ6aZiKvCi/v0UwFmwigBGeqXDA97TFMpR3LNNpw52CbVelkoQBxA==",
42 | "cpu": [
43 | "x64"
44 | ],
45 | "license": "MIT",
46 | "optional": true,
47 | "os": [
48 | "darwin"
49 | ],
50 | "engines": {
51 | "node": ">= 10"
52 | }
53 | },
54 | "node_modules/@next/swc-linux-arm64-gnu": {
55 | "version": "14.2.21",
56 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.21.tgz",
57 | "integrity": "sha512-0Dqjn0pEUz3JG+AImpnMMW/m8hRtl1GQCNbO66V1yp6RswSTiKmnHf3pTX6xMdJYSemf3O4Q9ykiL0jymu0TuA==",
58 | "cpu": [
59 | "arm64"
60 | ],
61 | "license": "MIT",
62 | "optional": true,
63 | "os": [
64 | "linux"
65 | ],
66 | "engines": {
67 | "node": ">= 10"
68 | }
69 | },
70 | "node_modules/@next/swc-linux-arm64-musl": {
71 | "version": "14.2.21",
72 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.21.tgz",
73 | "integrity": "sha512-Ggfw5qnMXldscVntwnjfaQs5GbBbjioV4B4loP+bjqNEb42fzZlAaK+ldL0jm2CTJga9LynBMhekNfV8W4+HBw==",
74 | "cpu": [
75 | "arm64"
76 | ],
77 | "license": "MIT",
78 | "optional": true,
79 | "os": [
80 | "linux"
81 | ],
82 | "engines": {
83 | "node": ">= 10"
84 | }
85 | },
86 | "node_modules/@next/swc-linux-x64-gnu": {
87 | "version": "14.2.21",
88 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.21.tgz",
89 | "integrity": "sha512-uokj0lubN1WoSa5KKdThVPRffGyiWlm/vCc/cMkWOQHw69Qt0X1o3b2PyLLx8ANqlefILZh1EdfLRz9gVpG6tg==",
90 | "cpu": [
91 | "x64"
92 | ],
93 | "license": "MIT",
94 | "optional": true,
95 | "os": [
96 | "linux"
97 | ],
98 | "engines": {
99 | "node": ">= 10"
100 | }
101 | },
102 | "node_modules/@next/swc-linux-x64-musl": {
103 | "version": "14.2.21",
104 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.21.tgz",
105 | "integrity": "sha512-iAEBPzWNbciah4+0yI4s7Pce6BIoxTQ0AGCkxn/UBuzJFkYyJt71MadYQkjPqCQCJAFQ26sYh7MOKdU+VQFgPg==",
106 | "cpu": [
107 | "x64"
108 | ],
109 | "license": "MIT",
110 | "optional": true,
111 | "os": [
112 | "linux"
113 | ],
114 | "engines": {
115 | "node": ">= 10"
116 | }
117 | },
118 | "node_modules/@next/swc-win32-arm64-msvc": {
119 | "version": "14.2.21",
120 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.21.tgz",
121 | "integrity": "sha512-plykgB3vL2hB4Z32W3ktsfqyuyGAPxqwiyrAi2Mr8LlEUhNn9VgkiAl5hODSBpzIfWweX3er1f5uNpGDygfQVQ==",
122 | "cpu": [
123 | "arm64"
124 | ],
125 | "license": "MIT",
126 | "optional": true,
127 | "os": [
128 | "win32"
129 | ],
130 | "engines": {
131 | "node": ">= 10"
132 | }
133 | },
134 | "node_modules/@next/swc-win32-ia32-msvc": {
135 | "version": "14.2.21",
136 | "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.21.tgz",
137 | "integrity": "sha512-w5bacz4Vxqrh06BjWgua3Yf7EMDb8iMcVhNrNx8KnJXt8t+Uu0Zg4JHLDL/T7DkTCEEfKXO/Er1fcfWxn2xfPA==",
138 | "cpu": [
139 | "ia32"
140 | ],
141 | "license": "MIT",
142 | "optional": true,
143 | "os": [
144 | "win32"
145 | ],
146 | "engines": {
147 | "node": ">= 10"
148 | }
149 | },
150 | "node_modules/@next/swc-win32-x64-msvc": {
151 | "version": "14.2.21",
152 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.21.tgz",
153 | "integrity": "sha512-sT6+llIkzpsexGYZq8cjjthRyRGe5cJVhqh12FmlbxHqna6zsDDK8UNaV7g41T6atFHCJUPeLb3uyAwrBwy0NA==",
154 | "cpu": [
155 | "x64"
156 | ],
157 | "license": "MIT",
158 | "optional": true,
159 | "os": [
160 | "win32"
161 | ],
162 | "engines": {
163 | "node": ">= 10"
164 | }
165 | },
166 | "node_modules/@swc/counter": {
167 | "version": "0.1.3",
168 | "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz",
169 | "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ=="
170 | },
171 | "node_modules/@swc/helpers": {
172 | "version": "0.5.5",
173 | "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz",
174 | "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==",
175 | "dependencies": {
176 | "@swc/counter": "^0.1.3",
177 | "tslib": "^2.4.0"
178 | }
179 | },
180 | "node_modules/busboy": {
181 | "version": "1.6.0",
182 | "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
183 | "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
184 | "dependencies": {
185 | "streamsearch": "^1.1.0"
186 | },
187 | "engines": {
188 | "node": ">=10.16.0"
189 | }
190 | },
191 | "node_modules/caniuse-lite": {
192 | "version": "1.0.30001617",
193 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001617.tgz",
194 | "integrity": "sha512-mLyjzNI9I+Pix8zwcrpxEbGlfqOkF9kM3ptzmKNw5tizSyYwMe+nGLTqMK9cO+0E+Bh6TsBxNAaHWEM8xwSsmA==",
195 | "funding": [
196 | {
197 | "type": "opencollective",
198 | "url": "https://opencollective.com/browserslist"
199 | },
200 | {
201 | "type": "tidelift",
202 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
203 | },
204 | {
205 | "type": "github",
206 | "url": "https://github.com/sponsors/ai"
207 | }
208 | ]
209 | },
210 | "node_modules/client-only": {
211 | "version": "0.0.1",
212 | "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
213 | "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
214 | },
215 | "node_modules/graceful-fs": {
216 | "version": "4.2.11",
217 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
218 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
219 | },
220 | "node_modules/js-tokens": {
221 | "version": "4.0.0",
222 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
223 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
224 | },
225 | "node_modules/loose-envify": {
226 | "version": "1.4.0",
227 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
228 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
229 | "dependencies": {
230 | "js-tokens": "^3.0.0 || ^4.0.0"
231 | },
232 | "bin": {
233 | "loose-envify": "cli.js"
234 | }
235 | },
236 | "node_modules/nanoid": {
237 | "version": "3.3.8",
238 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
239 | "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
240 | "funding": [
241 | {
242 | "type": "github",
243 | "url": "https://github.com/sponsors/ai"
244 | }
245 | ],
246 | "license": "MIT",
247 | "bin": {
248 | "nanoid": "bin/nanoid.cjs"
249 | },
250 | "engines": {
251 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
252 | }
253 | },
254 | "node_modules/next": {
255 | "version": "14.2.21",
256 | "resolved": "https://registry.npmjs.org/next/-/next-14.2.21.tgz",
257 | "integrity": "sha512-rZmLwucLHr3/zfDMYbJXbw0ZeoBpirxkXuvsJbk7UPorvPYZhP7vq7aHbKnU7dQNCYIimRrbB2pp3xmf+wsYUg==",
258 | "license": "MIT",
259 | "dependencies": {
260 | "@next/env": "14.2.21",
261 | "@swc/helpers": "0.5.5",
262 | "busboy": "1.6.0",
263 | "caniuse-lite": "^1.0.30001579",
264 | "graceful-fs": "^4.2.11",
265 | "postcss": "8.4.31",
266 | "styled-jsx": "5.1.1"
267 | },
268 | "bin": {
269 | "next": "dist/bin/next"
270 | },
271 | "engines": {
272 | "node": ">=18.17.0"
273 | },
274 | "optionalDependencies": {
275 | "@next/swc-darwin-arm64": "14.2.21",
276 | "@next/swc-darwin-x64": "14.2.21",
277 | "@next/swc-linux-arm64-gnu": "14.2.21",
278 | "@next/swc-linux-arm64-musl": "14.2.21",
279 | "@next/swc-linux-x64-gnu": "14.2.21",
280 | "@next/swc-linux-x64-musl": "14.2.21",
281 | "@next/swc-win32-arm64-msvc": "14.2.21",
282 | "@next/swc-win32-ia32-msvc": "14.2.21",
283 | "@next/swc-win32-x64-msvc": "14.2.21"
284 | },
285 | "peerDependencies": {
286 | "@opentelemetry/api": "^1.1.0",
287 | "@playwright/test": "^1.41.2",
288 | "react": "^18.2.0",
289 | "react-dom": "^18.2.0",
290 | "sass": "^1.3.0"
291 | },
292 | "peerDependenciesMeta": {
293 | "@opentelemetry/api": {
294 | "optional": true
295 | },
296 | "@playwright/test": {
297 | "optional": true
298 | },
299 | "sass": {
300 | "optional": true
301 | }
302 | }
303 | },
304 | "node_modules/picocolors": {
305 | "version": "1.0.0",
306 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
307 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
308 | },
309 | "node_modules/postcss": {
310 | "version": "8.4.31",
311 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
312 | "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
313 | "funding": [
314 | {
315 | "type": "opencollective",
316 | "url": "https://opencollective.com/postcss/"
317 | },
318 | {
319 | "type": "tidelift",
320 | "url": "https://tidelift.com/funding/github/npm/postcss"
321 | },
322 | {
323 | "type": "github",
324 | "url": "https://github.com/sponsors/ai"
325 | }
326 | ],
327 | "dependencies": {
328 | "nanoid": "^3.3.6",
329 | "picocolors": "^1.0.0",
330 | "source-map-js": "^1.0.2"
331 | },
332 | "engines": {
333 | "node": "^10 || ^12 || >=14"
334 | }
335 | },
336 | "node_modules/react": {
337 | "version": "18.2.0",
338 | "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
339 | "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
340 | "dependencies": {
341 | "loose-envify": "^1.1.0"
342 | },
343 | "engines": {
344 | "node": ">=0.10.0"
345 | }
346 | },
347 | "node_modules/react-dom": {
348 | "version": "18.2.0",
349 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
350 | "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
351 | "dependencies": {
352 | "loose-envify": "^1.1.0",
353 | "scheduler": "^0.23.0"
354 | },
355 | "peerDependencies": {
356 | "react": "^18.2.0"
357 | }
358 | },
359 | "node_modules/scheduler": {
360 | "version": "0.23.0",
361 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
362 | "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
363 | "dependencies": {
364 | "loose-envify": "^1.1.0"
365 | }
366 | },
367 | "node_modules/source-map-js": {
368 | "version": "1.0.2",
369 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
370 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
371 | "engines": {
372 | "node": ">=0.10.0"
373 | }
374 | },
375 | "node_modules/streamsearch": {
376 | "version": "1.1.0",
377 | "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
378 | "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
379 | "engines": {
380 | "node": ">=10.0.0"
381 | }
382 | },
383 | "node_modules/styled-jsx": {
384 | "version": "5.1.1",
385 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz",
386 | "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==",
387 | "dependencies": {
388 | "client-only": "0.0.1"
389 | },
390 | "engines": {
391 | "node": ">= 12.0.0"
392 | },
393 | "peerDependencies": {
394 | "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0"
395 | },
396 | "peerDependenciesMeta": {
397 | "@babel/core": {
398 | "optional": true
399 | },
400 | "babel-plugin-macros": {
401 | "optional": true
402 | }
403 | }
404 | },
405 | "node_modules/tslib": {
406 | "version": "2.7.0",
407 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz",
408 | "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA=="
409 | }
410 | }
411 | }
412 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "actions-learning-pathway",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "dev": "next dev",
7 | "build": "next build",
8 | "start": "next start",
9 | "test": "next lint"
10 | },
11 | "dependencies": {
12 | "next": "14.2.21",
13 | "react": "18.2.0",
14 | "react-dom": "18.2.0"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/pages/_app.js:
--------------------------------------------------------------------------------
1 | import '@/styles/globals.css'
2 |
3 | export default function App({ Component, pageProps }) {
4 | return
You've completed the essentials of automated application deployment with GitHub Actions! 🥳
21 | 22 |