2020-03-02

Vue 一個指令碼將 build 出來的 dist 推到 gh-pages 上 ( Windows 版本 )

因為 GitHub 展示用的靜態網頁是讀取根目錄上的 index.html
所以之前在部屬的時候是把 dist 資料夾拉到桌面上重新 git init 一次
使用下列語法
git remote add origin
https://github.com/你的名稱/專案名稱.git
git push -f origin master:gh-pages
把資料夾推到 gh-pages 上讀取


但其實這樣很麻煩,每次要重新推送的時候就要重新拉一次 dist
於是就想到之前助教有提到官網提供的方法  官網連結
運用 sh deploy.sh 指令一步驟推到 gh-pages 上

首先在專案下建立 vue.config.js 檔案,內容參考官網
module.exports = {
  publicPath: process.env.NODE_ENV === 'production'
    ? '/my-project/'
    : './'
}

這邊要注意冒號後建議改為 './'  或是空值 ' '
Vue Cli 2 則是要去 config 資料夾內的 index.js 修改 assetsPublicPath 值


然後一樣在專案底下建立 deploy.sh 檔案,內容參考官網
#!/usr/bin/env sh

# 当发生错误时中止脚本
set -e

# 构建
npm run build

# cd 到构建输出的目录下 
cd dist

# 部署到自定义域域名
# echo 'www.example.com' > CNAME

git init
git add -A
git commit -m 'deploy'

# 部署到 https://<USERNAME>.github.io
# git push -f git@github.com:<USERNAME>/<USERNAME>.github.io.git master

# 部署到 https://<USERNAME>.github.io/<REPO>
git push -f git@github.com:<USERNAME>/<REPO>.git master:gh-pages

cd -
把該調整的內容調整一下即可,


檔案建立的位置示意圖

問題來了
如果在 VSCode 環境下直接執行 sh deploy.sh 是會跳錯的,
原因是 Windows 環境是沒有 Linux 的,這是 sh 的原生環境,
IOS 就沒有這個問題,

這邊要執行 Git Bash 
並且移動到專案資料夾,執行 sh deploy.sh 
然後跑一跑會跳出以下訊息

於是把這串話拿去餵狗
Please make sure you have the correct access rights and the repository exists.
得知這是 SSH 驗證的問題,

照著步驟比較完整的網站來執行:
1. 首先得重新在 git 設定推送身分的名字和信箱
git config --global user.name "yourname"
git config --global user.email "your@email.com"

PS: yourname 是你設定的名字、 your@email.com 是你設定的信箱,基本上和原來一樣就可以哩~
2. 直接搜尋 .ssh 資料夾(通常會在使用者資料夾內找到),這時裡面只會有 know_hosts ,不要怕,刪除它!
3. 然後回到 Git Bash 輸入 ssh-keygen -t rsa -C "your@email.com" 必須和上面設置的一樣喔。
4.  接著會出現:
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/your_user_directory/.ssh/id_rsa):

直接按 Enter 就好,按到沒得按,直到 .ssh 資料夾出現兩個 id_rsa 檔,
接著用記事本打開 id_rsa 檔,複製內容為 ssh-rsa 開頭的全部內容
PS:雖然兩個檔案一樣叫做 id_rsa ,但是內容不一樣,所以兩個都要打開來看。
5.  登入你的 GitHub 進入以下地方,點選 New SSH Key
把複製到的內容貼入 Key (Title 可以不用寫東西)

6. 成功增加後,回到 Git Bash 輸入 ssh -T git@github.com 然後會挑出一堆話
The authenticity of host 'github.com (xxxxxxx)' can't be established.RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.Are you sure you want to continue connecting (yes/no)? 回答 yes 即可
然後你就會得到成功的訊息
You've successfully authenticated, but GitHub does not provide shell access.

7. 接著在專案路徑下執行
sh deploy.sh
就可以把專案內的 dist 資料夾推到 gh-pages 上面囉





推送成功後開心地去看網頁吧~~XD

雖然每次推送都要打開 Git Bash 來執行,
但是比起之前每次都要重新拉 dist 資料夾來的方便多了。

*更新
到專案資料夾雙擊啟動 deploy.sh 也可以推上去 (這個比較方便啦 連去路徑執行都省了)

備註:目前運行環境為 Vue Cli 4 ,不知道其他版本的 Vue Cli 的情況如何


 參考方式:https://blog.csdn.net/jingtingfengguo/article/details/51892864

前端 docker 優雅打包切分環境

團隊最近要使用  GitLab   CI/CD  功能了,DevOps 介紹完之後馬上就意識到有個很久的問題必須要解決,之前很菜的時候以及開發流程還沒有很完整的時候還可以手動來決定正式環境還是測試環境 docker 再打包就好,現在需要透過  Dockerfile  產生編譯結果...