Angular Github Action CI CD 範例

這次來實作Angular 在Github Action 的部屬範例

以下為Github Action的Angular workflow範例

 

name: Node.js CI

on:
    pull_request:
        branches: ['main']
    push:
        branches: ['main']
jobs:
    build:
        runs-on: ubuntu-latest 
            matrix:
                node-version: [16.x]
        steps:
            - uses: actions/checkout@v2
            // 描述
            - name: Use Node.js ${{ matrix.node-version }}
              uses: actions/setup-node@v2
              with:
                  node-version: ${{ matrix.node-version }}
                  cache: 'npm'
              // 這邊直接載相關套件
              // 通常是會用npm ci 才不會去更動到package.json
            - run: npm ci --force
              // 打包專案
            - run: npm run prerender
              // 上傳artifact
            - name: Upload build artifact
              if: github.ref == 'refs/heads/main'
              uses: actions/upload-artifact@v2
              // 設定檔案名稱、路徑、過期時間
              // 過期時間一定要設定,不然有空間限制在容易爆炸
              with:
                  name: prerender
                  path: dist
                  retention-days: 1
              // 這邊是設定當主要分支為main,才能夠部屬到github page
              // 如果是遠端伺服器可以透過最原始的scp把檔案複製過去
              // 但cd的流程通常要自動化跟伺服器本身要是能夠通的
            - run: npm run build:gitHubPage
              if: github.ref == 'refs/heads/main'
            - name: Deploy to GitHub Pages
              if: github.ref == 'refs/heads/main'
              uses: JamesIves/github-pages-deploy-action@4.1.5
              with:
                branch: gh-pages
                folder: dist/RonWeb/browser
                // 可以透過設置github action secrets來做安全設定
                token: ${{ secrets.TOKEN }}

 

1.  如何觸發這個work

on:
    pull_request:
        branches: ['main']
    push:
        branches: ['main']

 

2. 設定版本

build:
    	//運行os
        runs-on: ubuntu-latest 
        strategy:
        	// 運行版本,通常要指定,怕更新不相容問題
            matrix:
                node-version: [16.x]

 

 

3.  每個step的介紹使用

 

// 使用什麼工具,這邊的每個uses都對應著一個git hub的倉庫
// 如果想要知道裡面的流程,可以去翻對應的倉庫
// 像是這邊就是actions底下的checkout倉庫版本號為v2
- uses: actions/checkout@v2
// 描述
- name: Use Node.js ${{ matrix.node-version }}
	uses: actions/setup-node@v2
	// with是uses這個job他提供的額外引數
	// 提供什麼參數需看對應文件,或看原始碼所提供的參數
 	with:
		node-version: ${{ matrix.node-version }}
		cache: 'npm'

 

4. github action有個secrets的安全金鑰設定,通常會把token或是key的東西放在這邊設定使用

 

${{ secrets.TOKEN }}

 

對應倉庫

倉庫底下的action.yml 會有些相關使用參數的介紹

 

Copyright © 2025 - All right reserved