diff --git a/.eleventy.js b/.eleventy.js index c9232cc..6d835c3 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -1,28 +1,35 @@ const blogTools = require("eleventy-plugin-blog-tools"); const markdownIt = require("markdown-it"); const markdownItAttrs = require("markdown-it-attrs"); +const markdownItAnchor = require("markdown-it-anchor"); const syntaxHighlight = require("@11ty/eleventy-plugin-syntaxhighlight"); - - -// Import prior to `module.exports` within `.eleventy.js` const { DateTime } = require("luxon"); - module.exports = function(eleventyConfig) { const mdOptions = { html: true, breaks: true, linkify: true, }; + const markdownLib = markdownIt(mdOptions) .use(markdownItAttrs) + .use(markdownItAnchor, { + permalink: markdownItAnchor.permalink.linkInsideHeader({ + // Change the symbol to a link icon, e.g., "🔗" + symbol: '🔗', // Change this to whatever symbol you want + class: 'anchor-link', // You can style this class with CSS + ariaHidden: false, + tabIndex: -1, + before: '', // Leave empty to not add anything before the icon + }) + }) .disable("code"); eleventyConfig.addFilter("postDate", (dateObj) => { return DateTime.fromJSDate(dateObj).toLocaleString(DateTime.DATE_MED); }); - - + eleventyConfig.setLibrary("md", markdownLib); eleventyConfig.setUseGitIgnore(false); @@ -38,7 +45,7 @@ module.exports = function(eleventyConfig) { eleventyConfig.setTemplateFormats("html,njk,md"); eleventyConfig.addCollection('posts', function(collectionApi) { - return collectionApi.getFilteredByGlob('src/blog/posts/**/*.md') + return collectionApi.getFilteredByGlob('src/blog/posts/**/*.md'); }); eleventyConfig.addPlugin(blogTools); @@ -46,7 +53,6 @@ module.exports = function(eleventyConfig) { return { passthroughFileCopy: true, - dir: { input: 'src', includes: '_includes', diff --git a/package-lock.json b/package-lock.json index 3d5ee3e..c754830 100644 --- a/package-lock.json +++ b/package-lock.json @@ -128,6 +128,7 @@ "lodash.deburr": "^4.1.0", "lru-cache": "^10.4.3", "luxon": "^3.5.0", + "markdown-it-anchor": "^9.2.0", "maximatch": "^0.1.0", "mdurl": "^1.0.1", "merge2": "^1.4.1", @@ -652,6 +653,28 @@ "@types/node": "*" } }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "peer": true + }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "peer": true, + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "peer": true + }, "node_modules/@types/minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", @@ -2901,7 +2924,6 @@ "version": "13.0.2", "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.2.tgz", "integrity": "sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==", - "dev": true, "dependencies": { "argparse": "^2.0.1", "entities": "~3.0.1", @@ -2913,6 +2935,15 @@ "markdown-it": "bin/markdown-it.js" } }, + "node_modules/markdown-it-anchor": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-9.2.0.tgz", + "integrity": "sha512-sa2ErMQ6kKOA4l31gLGYliFQrMKkqSO0ZJgGhDHKijPf0pNFM9vghjAh3gn26pS4JDRs7Iwa9S36gxm3vgZTzg==", + "peerDependencies": { + "@types/markdown-it": "*", + "markdown-it": "*" + } + }, "node_modules/markdown-it-attrs": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/markdown-it-attrs/-/markdown-it-attrs-4.2.0.tgz", @@ -2928,8 +2959,7 @@ "node_modules/markdown-it/node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/maximatch": { "version": "0.1.0", diff --git a/package.json b/package.json index 80bf1f2..054bf56 100644 --- a/package.json +++ b/package.json @@ -146,6 +146,7 @@ "lodash.deburr": "^4.1.0", "lru-cache": "^10.4.3", "luxon": "^3.5.0", + "markdown-it-anchor": "^9.2.0", "maximatch": "^0.1.0", "mdurl": "^1.0.1", "merge2": "^1.4.1", diff --git a/src/assets/img/gitea-action-successful.png b/src/assets/img/gitea-action-successful.png new file mode 100644 index 0000000..251c6cf Binary files /dev/null and b/src/assets/img/gitea-action-successful.png differ diff --git a/src/assets/img/gitea-secrets.png b/src/assets/img/gitea-secrets.png new file mode 100644 index 0000000..8b206a6 Binary files /dev/null and b/src/assets/img/gitea-secrets.png differ diff --git a/src/blog/posts/2024/09/21-WebsiteDeployment.md b/src/blog/posts/2024/09/21-WebsiteDeployment.md new file mode 100644 index 0000000..ac63c04 --- /dev/null +++ b/src/blog/posts/2024/09/21-WebsiteDeployment.md @@ -0,0 +1,124 @@ +--- +layout: layouts/post.njk +title: Continuous Integration & Continuous Deployment +description: Website Deployment using CI/CD Piplines +date: 2024-09-21 +author: Matthew McKinnon +--- + + +### {{ description }} + +