前言
近期希望可以有不同的 Server 可以去 clone 相對應的 repository 找很多使用方式,這邊使用 git 方式偏向新手使用方式,歡迎各位可以用自己方式使用 github actions。這邊使用asp.net mvc framework 4.7.3 舊型專案,經歷這連假三天不斷測試、實驗,終於成功執行相當感動,也慢慢提升一些git command 使用方式。
一、 Github Actions 操作方式
✔前置作業
這邊我們先建立 兩個環境。
- 專案 : ASP.net MVC
- 發行 : 存放 Deploy 位置
✔製作流程
- 創建 token key - 請點選: 參考章節
- 設定 repository secrets - for 專案 repository
- 創建 workflows - 請點選: 參考章節
介於設定 workflows 內容有摻雜很多語法、指令,本篇會用簡述方式帶過。
二、開始操作
1. 創建 token key
創造目的是為了可以取得repository權限,如果有時間長短設定就請使用者自行評估。
2. 設定 repository secrets
設定secrets 需要到 repository > settings > secrets > Action
name : 輸入可識別的名稱 ,ex : commit_secret
value : token key
3. 創建 workflows
這邊我直接奉上設定檔,如果讀者想要創建方式可以參考上一篇。 下方設定逐一說明。
3-1. 設定環境
環境 mvc framework 4.7.3 環境一定要設定 windows ,如果需要linux環境請自行爬文。
1 2 3 4 5 6
| jobs: build: runs-on: windows-latest step: - uses: actions/checkout@v2
|
3-2. 新增參數
如果想要隨時改參數設定,可以使用env 後續再介紹如何使用env。理論上,上面參數是待會一定會用到的參數,設定上先知道 publish 路徑位置以及sln後,再填入workflows當中。
USER_NAME、USER_EMAIL的參數並非是亂填,本案例是為了不要洩漏我的信箱、名稱才這樣創建,優點是查詢時候就可以區別commit角色。
1 2 3 4 5 6 7 8 9 10 11 12
| jobs: build: runs-on: windows-latest env: MY_SECRET : ${{secrets.commit_secret}} USER_NAME : github-actions[bot] USER_EMAIL : 41898282+github-actions[bot]@users.noreply.github.com PUBLISH_DIR : ./dotnetMVC/dotnetMVC/bin/publish PRJ_SLN : ./dotnetMVC/dotnetMVC.sln step: - uses: actions/checkout@v2
|
3-3. 新增流程順序
這邊輸入完畢之後,就是從 action -> bulid 這時需要加入git 元素。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| jobs: build: runs-on: windows-latest env: MY_SECRET : ${{secrets.commit_secret}} USER_NAME : github-actions[bot] USER_EMAIL : 41898282+github-actions[bot]@users.noreply.github.com PUBLISH_DIR : ./dotnetMVC/dotnetMVC/bin/publish PRJ_SLN : ./dotnetMVC/dotnetMVC.sln steps: - uses: actions/checkout@v2 - name: setup-msbuild uses: microsoft/setup-msbuild@v1.1 - name: Setup NuGet.exe for use with actions uses: NuGet/setup-nuget@v1.0.5 - name: Restore NuGet Packages run: nuget restore ${{env.PRJ_SLN}}
- name: Build and Publish Web App run: msbuild ${{env.PRJ_SLN}} /p:Configuration=Release /p:DeployOnBuild=true /p:PublishProfile=FolderProfile
|
下方用git 方式取得。說明一下使用順序。
- 創建publish (原因是專案裡面是沒有那個資料夾)
- 初始git 環境,並加入 遠端repository 環境
- 設定角色後,自動pull一次資料
- Build之後,在commits 、push上去。
這邊流程比較單純不會複雜,原本有考慮使用 push –force 但我還是堅持要使用有正常的commits 流程,因此有pull載入時間。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| steps: - uses: actions/checkout@v2 - name: setup-msbuild uses: microsoft/setup-msbuild@v1.1 - name: Setup NuGet.exe for use with actions uses: NuGet/setup-nuget@v1.0.5 - name: Restore NuGet Packages run: nuget restore ${{env.PRJ_SLN}} - name: git pull repository run: | echo "--- create dir. and move dir. path ---" mkdir ${{env.PUBLISH_DIR}} cd ${{env.PUBLISH_DIR}} echo "--- init dir. and add remote repository ---" git init git remote add deploy ${{env.PUBLISH_URL}} git checkout -b master echo "--- set config ---" git config --global user.name "${{env.USER_NAME}}" git config --global user.email "${{env.USER_EMAIL}}"
echo ============ " pull " ================ git pull deploy master --rebase - name: Build and Publish Web App run: msbuild ${{env.PRJ_SLN}} /p:Configuration=Release /p:DeployOnBuild=true /p:PublishProfile=FolderProfile
- name: git push publish From Repository run: | cd ${{env.PUBLISH_DIR}} echo ============ " config list " ============ git config --list echo ============ "statut and content add " ============ git add --all git status echo ============ " check branch list" ============ git branch -a echo ============ " commit " ============= git commit -m "${{env.COMMIT_STR}}" echo ============ " PUSH " ============== git push -u deploy
|
完成品
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| jobs: build: runs-on: windows-latest env: MY_SECRET : ${{secrets.commit_secret}} USER_NAME : github-actions[bot] USER_EMAIL : 41898282+github-actions[bot]@users.noreply.github.com PUBLISH_DIR : ./dotnetMVC/dotnetMVC/bin/publish PRJ_SLN : ./dotnetMVC/dotnetMVC.sln COMMIT_STR : "github-actions[bot] Update : $(Get-Date -Format \"yyyy.MMdd.HHmm\")" steps: - uses: actions/checkout@v2 - name: setup-msbuild uses: microsoft/setup-msbuild@v1.1 - name: Setup NuGet.exe for use with actions uses: NuGet/setup-nuget@v1.0.5 - name: Restore NuGet Packages run: nuget restore ${{env.PRJ_SLN}} - name: git pull repository run: | echo "--- create dir. and move dir. path ---" mkdir ${{env.PUBLISH_DIR}} cd ${{env.PUBLISH_DIR}} echo "--- init dir. and add remote repository ---" git init git remote add deploy ${{env.PUBLISH_URL}} git checkout -b master echo "--- set config ---" git config --global user.name "${{env.USER_NAME}}" git config --global user.email "${{env.USER_EMAIL}}"
echo ============ " pull " ================ git pull deploy master --rebase - name: Build and Publish Web App run: msbuild ${{env.PRJ_SLN}} /p:Configuration=Release /p:DeployOnBuild=true /p:PublishProfile=FolderProfile
- name: git push publish From Repository run: | cd ${{env.PUBLISH_DIR}} echo ============ " config list " ============ git config --list echo ============ "statut and content add " ============ git add --all git status echo ============ " check branch list" ============ git branch -a echo ============ " commit " ============= git commit -m "${{env.COMMIT_STR}}" echo ============ " PUSH " ============== git push -u deploy
|
心得
這功能耗了我兩天連價沒得好好休息,大多遇到git指令、actions參數、查詢資料,參數部分也被很多範例誤導可能是用windows環境緣故。下篇會用action參數方式寫一篇,希望各位會喜歡。
這邊在小抱怨一下,git remote使用方式,本範例分支是用預設(master)主要原因是只要一指定就會發生意外錯誤(push部分),後來被妥協用master分支。如果各位知道如何指定分支方式歡迎到下方留言讓我知道。