- Generate a personal access token and create ACCESS_TOKEN variable under Settings -> Secrets.
- Keep the personal access token in a safe place and do not lose it
- Go to Actions tab of the github repo
- Create netlify.yml under .github/workflow
- Paste the follow code in the yaml file
# .github/workflows/netlify.yml
name: Build and Deploy to Netlify
on:
push:
pull_request:
types: [opened, synchronize]
jobs:
build:
name: Deploying to Netlify
runs-on: ubuntu-latest
steps:
- name: Setup Node.js for use with actions
uses: actions/setup-node@v1.1.0
with:
version: 12.x
- name: Check out branch
uses: actions/checkout@v2
# ( Build to ./dist or other directory... )
- name: Clean install dependencies
run: npm ci
- name: Build app
run: npm run build-netlify
- name: Deploy to Netlify
uses: nwtgck/actions-netlify@v1.1
with:
publish-dir: './dist'
production-branch: master
github-token: ${{ secrets.ACCESS_SECRET }}
deploy-message: "Deploy from GitHub Actions"
enable-pull-request-comment: false
enable-commit-comment: true
overwrites-pull-request-comment: true
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
timeout-minutes: 1
I deploy the Tic Tac Toe game to both github page and Netlify; therefore, I use NODE_ENV variable to configure the public path in vue.config.js.
// vue.config.js module.exports = { publicPath: process.env.NODE_ENV === "production" ? "/vue-tic-tac-toe/" : "/", outputDir: "dist", lintOnSave: process.env.NODE_ENV !== "production", devServer: { overlay: { warnings: true, errors: true } } };
The NODE_ENV variable of github page is “production” by default and the full URL becomes https://<username>.github.io/vue-tic-tac-toe/. For Netlify deployment, I set the NODE_ENV variable to “netlify” and the game is hosted on https://<netlify app>/ .
Open package.json and add a task that builds the project to dist directory and publishes it to Netlify.
{
...
"scripts": {
...
"build-netlify": "NODE_ENV=netlify vue-cli-service build"
},
...
}
Login to Netlify to look up NETIFY_SITE_ID and NETIFY_AUTH_TOKEN.
Go to Team > Site > Settings > Site Information > API ID to copy down the NETLIFY_SITE_ID
Go to User Settings > Applications > Personal access token and clicks New Access Token button to generate a token. The token is your NETLIFY_AUTH_TOKEN and it should be kept in a safe location.
Now, you are ready to create NETLIFY_SITE_ID and NETLIFY_AUTH_TOKEN variables under Settings -> Secrets in Github.
We are done! There is no need to write custom deployment script and travis configuration file to automate the CI/CD process. Github notifies Netlify to automate the build process and publish the site when latest changes are committed.
References: