diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 3497ce6d27..56e7b96bce 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -49,16 +49,16 @@ List general components of the application that this PR will affect:
## Screenshot
-Replace FIXME_BRANCH_NAME in the URL below with this branch name.
+Replace `FIXME_BRANCH_NAME`, `FIXME_PR_NUMBER` in the URL below with this branch name and PR number.
### Desktop
Width 1200px
-![Desktop Home](https://raw.githubusercontent.com/tubone24/blog/screenshot/docs/screenshot/FIXME_BRANCH_NAME/screenshot-ubuntu-latest-1200.png)
+![Desktop Home](https://raw.githubusercontent.com/tubone24/blog/screenshot/docs/screenshot/FIXME_BRANCH_NAME/screenshot-ubuntu-latest-FIXME_PR_NUMBER-FIXME_BRANCH_NAME-1200.png)
### Mobile
Width 400px
-
+
diff --git a/.github/release.yml b/.github/release.yml
new file mode 100644
index 0000000000..ae58332f12
--- /dev/null
+++ b/.github/release.yml
@@ -0,0 +1,22 @@
+changelog:
+ exclude:
+ labels:
+ - ignore-for-release
+ authors:
+ - renovate
+ - dependabot
+ categories:
+ - title: Breaking Changes ðŸ›
+ labels:
+ - Semver-Major
+ - breaking-change
+ - title: Exciting New Features 🎉
+ labels:
+ - Semver-Minor
+ - enhancement
+ - title: Update Article 🎉
+ labels:
+ - article
+ - title: Other Changes
+ labels:
+ - "*"
diff --git a/.github/workflows/auto-assign-author.yml b/.github/workflows/auto-assign-author.yml
new file mode 100644
index 0000000000..1941e11ae4
--- /dev/null
+++ b/.github/workflows/auto-assign-author.yml
@@ -0,0 +1,16 @@
+name: Auto Assign Author
+
+on:
+ pull_request:
+ types:
+ - opened
+
+jobs:
+ assign:
+ if: github.actor != 'dependabot[bot]'
+
+ name: Assign author to PR
+ runs-on: ubuntu-latest
+ steps:
+ - name: Assign author to PR
+ uses: technote-space/assign-author@v1
diff --git a/.github/workflows/common-lint.yml b/.github/workflows/common-lint.yml
index 2750ea1b81..e827d10710 100644
--- a/.github/workflows/common-lint.yml
+++ b/.github/workflows/common-lint.yml
@@ -19,7 +19,7 @@ jobs:
scope: '@tubone24'
- name: Get yarn cache directory path
id: yarn-cache-dir-path
- run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
+ run: echo "dir=$(yarn cache dir)" >> "${GITHUB_OUTPUT}"
- name: Cache
uses: actions/cache@v3
with:
@@ -43,3 +43,14 @@ jobs:
uses: suzuki-shunsuke/github-action-renovate-config-validator@v0.1.2
with:
config_file_path: 'renovate.json'
+ actionlint:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - name: Download actionlint
+ id: get_actionlint
+ run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
+ shell: bash
+ - name: Check workflow files
+ run: ${{ steps.get_actionlint.outputs.executable }} -color -shellcheck "$(which shellcheck) -e SC2002"
+ shell: bash
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index 0462417f11..622ff114eb 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -7,6 +7,33 @@ env:
cache-version: v2
jobs:
+ create-cache:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout source code
+ uses: actions/checkout@v3
+ - name: Setup Node
+ uses: actions/setup-node@v3
+ with:
+ node-version: 16.x
+ - name: Get yarn cache directory path
+ id: yarn-cache-dir-path
+ run: echo "dir=$(yarn cache dir)" >> "${GITHUB_OUTPUT}"
+ - name: Cache
+ uses: actions/cache@v3
+ with:
+ path: |
+ ~/.cache
+ ${{ steps.yarn-cache-dir-path.outputs.dir }}
+ node_modules
+ key: ${{ runner.os }}-build-${{ env.cache-version }}-${{ hashFiles('**/yarn.lock') }}
+ restore-keys: |
+ ${{ runner.os }}-build-${{ env.cache-version }}-${{ hashFiles('**/yarn.lock') }}
+ ${{ runner.os }}-build-${{ env.cache-version }}-
+ - name: yarn install
+ env:
+ NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
+ run: yarn install --frozen-lockfile
test:
runs-on: ubuntu-latest
steps:
@@ -27,9 +54,9 @@ jobs:
sudo apt-get install fonts-noto
- name: Get yarn cache directory path
id: yarn-cache-dir-path
- run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
+ run: echo "dir=$(yarn cache dir)" >> "${GITHUB_OUTPUT}"
- name: Cache
- uses: actions/cache@v3
+ uses: actions/cache/restore@v3
with:
path: |
~/.cache
@@ -132,9 +159,9 @@ jobs:
scope: '@tubone24'
- name: Get yarn cache directory path
id: yarn-cache-dir-path
- run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
+ run: echo "dir=$(yarn cache dir)" >> "${GITHUB_OUTPUT}"
- name: Cache
- uses: actions/cache@v3
+ uses: actions/cache/restore@v3
with:
path: |
~/.cache
@@ -172,6 +199,12 @@ jobs:
steps:
- name: Checkout source code
uses: actions/checkout@v3
+ - uses: chrnorm/deployment-action@v2
+ name: Create GitHub deployment
+ id: deployment-prod
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ environment: production
- name: Setup Node
uses: actions/setup-node@v3
with:
@@ -180,9 +213,9 @@ jobs:
scope: '@tubone24'
- name: Get yarn cache directory path
id: yarn-cache-dir-path
- run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
+ run: echo "dir=$(yarn cache dir)" >> "${GITHUB_OUTPUT}"
- name: Cache
- uses: actions/cache@v3
+ uses: actions/cache/restore@v3
with:
path: |
~/.cache
@@ -233,16 +266,40 @@ jobs:
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
+ - uses: chrnorm/deployment-status@v2
+ if: success()
+ name: Create GitHub deploy (Success)
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ environment: production
+ environment-url: "https://blog.tubone-project24.xyz"
+ deployment-id: ${{ steps.deployment-prod.outputs.deployment_id }}
+ state: "success"
+ - uses: chrnorm/deployment-status@v2
+ if: failure()
+ name: Create GitHub deploy (Failure)
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ environment: production
+ environment-url: "https://blog.tubone-project24.xyz"
+ deployment-id: ${{ steps.deployment-prod.outputs.deployment_id }}
+ state: "failure"
storybook:
runs-on: ubuntu-latest
steps:
- name: Checkout source code
uses: actions/checkout@v3
+ - uses: chrnorm/deployment-action@v2
+ name: Create GitHub deployment
+ id: deployment-prod-storybook
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ environment: production-storybook
- name: Get yarn cache directory path
id: yarn-cache-dir-path
- run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
+ run: echo "dir=$(yarn cache dir)" >> "${GITHUB_OUTPUT}"
- name: Cache
- uses: actions/cache@v3
+ uses: actions/cache/restore@v3
with:
path: |
~/.cache
@@ -283,6 +340,24 @@ jobs:
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_STORYBOOK_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_STORYBOOK_SITE_ID }}
+ - uses: chrnorm/deployment-status@v2
+ if: success()
+ name: Create GitHub deploy (Success)
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ environment: production-storybook
+ environment-url: "https://blog-storybook.netlify.app"
+ deployment-id: ${{ steps.deployment-prod-storybook.outputs.deployment_id }}
+ state: "success"
+ - uses: chrnorm/deployment-status@v2
+ if: failure()
+ name: Create GitHub deploy (Failure)
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ environment: production-storybook
+ environment-url: "https://blog-storybook.netlify.app"
+ deployment-id: ${{ steps.deployment-prod-storybook.outputs.deployment_id }}
+ state: "failure"
lighthouse:
runs-on: macos-latest
needs: ['build']
diff --git a/.github/workflows/owaspzap.yml b/.github/workflows/owaspzap.yml
index 56dd3226f8..5f69a37835 100644
--- a/.github/workflows/owaspzap.yml
+++ b/.github/workflows/owaspzap.yml
@@ -22,7 +22,7 @@ jobs:
scope: '@tubone24'
- name: Get yarn cache directory path
id: yarn-cache-dir-path
- run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
+ run: echo "dir=$(yarn cache dir)" >> "${GITHUB_OUTPUT}"
- name: Cache
uses: actions/cache@v3
with:
diff --git a/.github/workflows/previewDeploy.yml b/.github/workflows/previewDeploy.yml
index 751a0198ce..bc243ce3d1 100644
--- a/.github/workflows/previewDeploy.yml
+++ b/.github/workflows/previewDeploy.yml
@@ -20,7 +20,34 @@ jobs:
- name: Print head git commit message
id: get-head-commit-message
run: |
- echo "headCommitMsg=$(git show -s --format=%s)" >> $GITHUB_OUTPUT
+ echo "headCommitMsg=$(git show -s --format=%s)" >> "${GITHUB_OUTPUT}"
+ create-cache:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout source code
+ uses: actions/checkout@v3
+ - name: Setup Node
+ uses: actions/setup-node@v3
+ with:
+ node-version: 16.x
+ - name: Get yarn cache directory path
+ id: yarn-cache-dir-path
+ run: echo "dir=$(yarn cache dir)" >> "${GITHUB_OUTPUT}"
+ - name: Cache
+ uses: actions/cache@v3
+ with:
+ path: |
+ ~/.cache
+ ${{ steps.yarn-cache-dir-path.outputs.dir }}
+ node_modules
+ key: ${{ runner.os }}-build-${{ env.cache-version }}-${{ hashFiles('**/yarn.lock') }}
+ restore-keys: |
+ ${{ runner.os }}-build-${{ env.cache-version }}-${{ hashFiles('**/yarn.lock') }}
+ ${{ runner.os }}-build-${{ env.cache-version }}-
+ - name: yarn install
+ env:
+ NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
+ run: yarn install --frozen-lockfile
test:
runs-on: ubuntu-latest
steps:
@@ -41,9 +68,9 @@ jobs:
sudo apt-get install fonts-noto
- name: Get yarn cache directory path
id: yarn-cache-dir-path
- run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
+ run: echo "dir=$(yarn cache dir)" >> "${GITHUB_OUTPUT}"
- name: Cache
- uses: actions/cache@v3
+ uses: actions/cache/restore@v3
with:
path: |
~/.cache
@@ -111,11 +138,11 @@ jobs:
path: ./cypress/videos/e2e/main.spec.ts.mp4
- name: Get PR Number
id: get-pr-num
- run: echo "prnum=$(echo $GITHUB_REF | sed -e 's/[^0-9]//g')" >> $GITHUB_OUTPUT
+ run: echo "prnum=$(echo "${GITHUB_REF}" | sed -e 's/[^0-9]//g')" >> "${GITHUB_OUTPUT}"
- name: Add file
env:
FILE_PATH: ./cypress/videos/e2e/main.spec.ts.mp4
- FILE_NAME: video-${{ matrix.os }}-${{ steps.get-pr-num.outputs.prnum }}-${{ github.head_ref }}-${{ matrix.width }}-main.spec.ts.mp4
+ FILE_NAME: video-${{ steps.get-pr-num.outputs.prnum }}-${{ github.head_ref }}-main.spec.ts.mp4
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
HEAD_REF: ${{ github.head_ref }}
GITHUB_REPOSITORY: "tubone24/blog"
@@ -135,9 +162,9 @@ jobs:
scope: '@tubone24'
- name: Get yarn cache directory path
id: yarn-cache-dir-path
- run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
+ run: echo "dir=$(yarn cache dir)" >> "${GITHUB_OUTPUT}"
- name: Cache
- uses: actions/cache@v3
+ uses: actions/cache/restore@v3
with:
path: |
~/.cache
@@ -173,6 +200,12 @@ jobs:
steps:
- name: Checkout source code
uses: actions/checkout@v3
+ - uses: chrnorm/deployment-action@v2
+ name: Create GitHub deployment
+ id: deployment-dev
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ environment: development
- name: Setup Node
uses: actions/setup-node@v3
with:
@@ -181,9 +214,9 @@ jobs:
scope: '@tubone24'
- name: Get yarn cache directory path
id: yarn-cache-dir-path
- run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
+ run: echo "dir=$(yarn cache dir)" >> "${GITHUB_OUTPUT}"
- name: Cache
- uses: actions/cache@v3
+ uses: actions/cache/restore@v3
with:
path: |
~/.cache
@@ -240,12 +273,30 @@ jobs:
curl -X POST \
-H "Authorization: token ${GITHUB_TOKEN}" \
-d "{\"body\": \"$(cat cli.txt)\"}" \
- ${URL}
+ "${URL}"
- name: get Netlify Draft URL
if: ${{ !contains(needs.check-skip-flags.outputs.head-commit-message, '[skip netlify]') }}
id: get-netlify-draft-url
run: |
- echo "draftUrl=$(cat cli.txt | sed -r 's/.*Website Draft URL: (.*)\\n\\nIf everything.*/\1/')" >> $GITHUB_OUTPUT
+ echo "draftUrl=$(cat cli.txt | sed -r 's/.*Website Draft URL: (.*)\\n\\nIf everything.*/\1/')" >> "${GITHUB_OUTPUT}"
+ - uses: chrnorm/deployment-status@v2
+ if: ${{ !contains(needs.check-skip-flags.outputs.head-commit-message, '[skip netlify]') && success() }}
+ name: Create GitHub deploy (Success)
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ environment: development
+ environment-url: ${{ steps.get-netlify-draft-url.outputs.draftUrl }}
+ deployment-id: ${{ steps.deployment-dev.outputs.deployment_id }}
+ state: "success"
+ - uses: chrnorm/deployment-status@v2
+ if: ${{ !contains(needs.check-skip-flags.outputs.head-commit-message, '[skip netlify]') && failure() }}
+ name: Create GitHub deploy (Failure)
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ environment: development
+ environment-url: ${{ steps.get-netlify-draft-url.outputs.draftUrl }}
+ deployment-id: ${{ steps.deployment-dev.outputs.deployment_id }}
+ state: "failure"
outputs:
draftUrl: ${{ steps.get-netlify-draft-url.outputs.draftUrl }}
@@ -265,9 +316,9 @@ jobs:
scope: '@tubone24'
- name: Get yarn cache directory path
id: yarn-cache-dir-path
- run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
+ run: echo "dir=$(yarn cache dir)" >> "${GITHUB_OUTPUT}"
- name: Cache
- uses: actions/cache@v3
+ uses: actions/cache/restore@v3
with:
path: |
~/.cache
@@ -330,9 +381,9 @@ jobs:
scope: '@tubone24'
- name: Get yarn cache directory path
id: yarn-cache-dir-path
- run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
+ run: echo "dir=$(yarn cache dir)" >> "${GITHUB_OUTPUT}"
- name: Cache
- uses: actions/cache@v3
+ uses: actions/cache/restore@v3
with:
path: |
~/.cache
@@ -377,7 +428,7 @@ jobs:
curl -X POST \
-H "Authorization: token ${GITHUB_TOKEN}" \
-d "{\"body\": \"$(cat test/memlab/data/out/leaks.txt)\"}" \
- ${URL}
+ "${URL}"
textlint:
name: textlint
runs-on: ubuntu-latest
@@ -390,9 +441,9 @@ jobs:
- uses: actions/checkout@v3
- name: Get yarn cache directory path
id: yarn-cache-dir-path
- run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
+ run: echo "dir=$(yarn cache dir)" >> "${GITHUB_OUTPUT}"
- name: Cache
- uses: actions/cache@v3
+ uses: actions/cache/restore@v3
with:
path: |
~/.cache
@@ -420,11 +471,17 @@ jobs:
steps:
- name: Checkout source code
uses: actions/checkout@v3
+ - uses: chrnorm/deployment-action@v2
+ name: Create GitHub deployment
+ id: deployment-dev-storybook
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ environment: development-storybook
- name: Get yarn cache directory path
id: yarn-cache-dir-path
- run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
+ run: echo "dir=$(yarn cache dir)" >> "${GITHUB_OUTPUT}"
- name: Cache
- uses: actions/cache@v3
+ uses: actions/cache/restore@v3
with:
path: |
~/.cache
@@ -483,7 +540,30 @@ jobs:
curl -X POST \
-H "Authorization: token ${GITHUB_TOKEN}" \
-d "{\"body\": \"$(cat cli.txt)\"}" \
- ${URL}
+ "${URL}"
+ - name: get Netlify Draft URL
+ if: ${{ !contains(needs.check-skip-flags.outputs.head-commit-message, '[skip netlify]') }}
+ id: get-netlify-draft-url
+ run: |
+ echo "draftUrl=$(cat cli.txt | sed -r 's/.*Website Draft URL: (.*)\\n\\nIf everything.*/\1/')" >> "${GITHUB_OUTPUT}"
+ - uses: chrnorm/deployment-status@v2
+ if: ${{ !contains(needs.check-skip-flags.outputs.head-commit-message, '[skip netlify]') && success() }}
+ name: Create GitHub deploy (Success)
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ environment: development-storybook
+ environment-url: ${{ steps.get-netlify-draft-url.outputs.draftUrl }}
+ deployment-id: ${{ steps.deployment-dev-storybook.outputs.deployment_id }}
+ state: "success"
+ - uses: chrnorm/deployment-status@v2
+ if: ${{ !contains(needs.check-skip-flags.outputs.head-commit-message, '[skip netlify]') && failure() }}
+ name: Create GitHub deploy (Failure)
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ environment: development-storybook
+ environment-url: ${{ steps.get-netlify-draft-url.outputs.draftUrl }}
+ deployment-id: ${{ steps.deployment-dev-storybook.outputs.deployment_id }}
+ state: "failure"
bundle-analyzer-link:
@@ -535,12 +615,14 @@ jobs:
width: ${{ matrix.width }}
delay: 10
- uses: actions/download-artifact@v3
+ if: ${{ !contains(needs.check-skip-flags.outputs.head-commit-message, '[skip netlify]') }}
with:
name: screenshot-${{ matrix.os }}-${{ matrix.width }}
- name: Get PR Number
id: get-pr-num
- run: echo "prnum=$(echo $GITHUB_REF | sed -e 's/[^0-9]//g')" >> $GITHUB_OUTPUT
+ run: echo "prnum=$(echo $GITHUB_REF | sed -e 's/[^0-9]//g')" >> "${GITHUB_OUTPUT}"
- name: PR Comments
+ if: ${{ !contains(needs.check-skip-flags.outputs.head-commit-message, '[skip netlify]') }}
env:
FILE_PATH: screenshot-${{ matrix.os }}-${{ matrix.width }}.png
FILE_NAME: screenshot-${{ matrix.os }}-${{ steps.get-pr-num.outputs.prnum }}-${{ github.head_ref }}-${{ matrix.width }}.png
diff --git a/.github/workflows/snyk.yml b/.github/workflows/snyk.yml
index 1ccd0a2c18..bb8c6681b5 100644
--- a/.github/workflows/snyk.yml
+++ b/.github/workflows/snyk.yml
@@ -27,9 +27,9 @@ jobs:
scope: '@tubone24'
- name: Get yarn cache directory path
id: yarn-cache-dir-path
- run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
+ run: echo "dir=$(yarn cache dir)" >> "${GITHUB_OUTPUT}"
- name: Cache
- uses: actions/cache@v3
+ uses: actions/cache/restore@v3
with:
path: |
~/.cache
@@ -128,4 +128,4 @@ jobs:
curl -X POST \
-H "Authorization: token ${GITHUB_TOKEN}" \
-d "{\"body\": \"$(cat summarize.txt)\"}" \
- ${URL}
+ "${URL}"
diff --git a/.github/workflows/tfsec.yml b/.github/workflows/tfsec.yml
index 9226feeebc..b995ed181e 100644
--- a/.github/workflows/tfsec.yml
+++ b/.github/workflows/tfsec.yml
@@ -7,9 +7,11 @@ name: tfsec
on:
push:
- branches: [ "master" ]
+ branches:
+ - master
pull_request:
- branches: [ "master" ]
+ branches:
+ - master
schedule:
- cron: '32 6 * * 6'
diff --git a/.shellcheckrc b/.shellcheckrc
new file mode 100644
index 0000000000..0e634d6df7
--- /dev/null
+++ b/.shellcheckrc
@@ -0,0 +1 @@
+disable=SC2002
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000000..855f67d8ed
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,3 @@
+# CHANGELOG
+
+See [GitHub Releases](https://github.com/tubone24/blog/releases).
diff --git a/README.md b/README.md
index e5510899a3..5b7bb9b9cd 100644
--- a/README.md
+++ b/README.md
@@ -3,6 +3,7 @@
> Super powerfully all-packaged blog system
[![Twitter URL](https://img.shields.io/twitter/url/https/blog.tubone-project24.xyz?style=social)](https://twitter.com/intent/tweet?text=LikeThis:&url=https%3A%2F%2Fblog.tubone-project24.xyz)
+[![Release Version](https://release-badges-generator.vercel.app/api/releases.svg?user=tubone24&repo=blog&gradient=00ffff,8bd1fa)](https://github.com/tubone24/blog/releases/latest)
[![Netlify Status](https://api.netlify.com/api/v1/badges/3751ef40-b145-4249-9657-39d3fb04ae81/deploy-status)](https://app.netlify.com/sites/pensive-lamport-5822d2/deploys)
[![DeployToNetlifyPRD](https://github.com/tubone24/blog/workflows/DeployToNetlifyPRD/badge.svg)](https://github.com/tubone24/blog/actions?query=workflow%3ADeployToNetlifyPRD)
[![Coverage Status](https://coveralls.io/repos/github/tubone24/blog/badge.svg?branch=master)](https://coveralls.io/github/tubone24/blog?branch=master)
@@ -13,6 +14,7 @@
![blog Actions](https://api.meercode.io/badge/tubone24/blog?type=ci-score&lastDay=184)
[![websiteup](https://img.shields.io/website.svg?down_color=red&down_message=down&up_color=green&up_message=up&url=https%3A%2F%2Fblog.tubone-project24.xyz)](https://blog.tubone-project24.xyz)
[![Buy me a coffee](https://camo.githubusercontent.com/3c1dd7a8a20dafe2a0b9b3b14ddaec4b63f73060625d1456761e9fd2e71f82bc/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f42794d6541436f666665652d7475626f6e6532342d627269676874677265656e3f6c6f676f3d4275792532304d6525323041253230436f66666565)](https://www.buymeacoffee.com/tubone24)
+[![PRs welcome!](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/tubone24/blog/blob/master/CONTRIBUTING.md)
## What is this?
@@ -22,7 +24,7 @@ This is tubone's Blog by Gatsby and Netlify.
## Preview
-Screenshots from the last deployment on the master branch.
+[Screenshots](https://github.com/tubone24/blog/tree/screenshot) from the last deployment on the master branch.
### Desktop
@@ -46,7 +48,7 @@ Special, thanks!
### Structure
-- Gatsby.js v4, Static site generating
+- [Gatsby.js v4](https://www.gatsbyjs.com/gatsby-4/), Static site generating
- Use [Preact](https://preactjs.com/), faster than [React](https://ja.reactjs.org/)
- All Components writen by [TypeScript](https://www.typescriptlang.org/)
- Use [Bootstrap5](https://getbootstrap.jp/) for CSS Framework
@@ -85,6 +87,7 @@ Special, thanks!
- Detect browser's memory leaks by [memlab](https://github.com/facebookincubator/memlab)
- Detect vulnerability by [Snyk](https://app.snyk.io/)
- Detect vulnerability by [OWASP ZAP](https://www.zaproxy.org/)
+- Capture [some width screenshots](https://github.com/tubone24/blog/tree/screenshot) every PR and push master.
### For contributor of articles
@@ -359,6 +362,16 @@ Last 14 days, CI Score by [meercode.io](https://meercode.io)
![blog Actions](https://api.meercode.io/badge/tubone24/blog?type=ci-success-rate&lastDay=14)
+## Change log and versioning
+
+This Blog's CHANGELOG integrated [GitHub Releases](https://github.com/tubone24/blog/releases)
+
+And this blog's versioning policy is [semver](https://semver.org/) like `1.0.1`
+
+- MAJOR version when you make incompatible API changes
+- MINOR version when you add functionality in a backwards compatible manner or **create articles**.
+- PATCH version when you make backwards compatible bug fixes or **update (include delete) articles**.
+
## License
- The source code under the MIT LICENSE.