KEMBAR78
Github Action 開始簡易入門 DevOps,自動化你的專案 (LearnWeb Taiwan Meetup #15) | PPTX
從 Github Action 開始簡易入門 DevOps
自動化你的專案吧!
Leo Liao
2023.06.04
About Me
講者之路初心者
自由潛水員
前端工程師
Leo Liao
LINE Taiwan Limited - UIT 1
What is DevOps ?
DevOps
開發 Development
+
維運 Operations
=
※Source from: https://www.smartsheet.com/devops
What is DevOps ?
C A L M S
What is DevOps ?
Culture
Automation
Lean
Measurement
Sharing
What is Github Action ?
What is Github Action ?
自動化工具
事件觸發
高複用性
安全環境變數
多環境建置、測試、部署
Github Action Scope
Workflow
Action Action
Action
Job
Action Action Action
Job
Action Action Action
Job
Action Action Action
Job
Action Action Action
Job
Action Action Action
Job
Where is Github Action running ?
Github Runner
● Public Repo: No limit
● Free Tier
○ Private Repo: 2,000 minutes/month
● Team
○ Private Repo: 3,000 minutes/month
● Enterprise
○ Private Repo: 50,000 minutes/month
Where is Github Action running ?
Self-hosted Runner
About Github Action
.github/workflows > YAML
How to write Github Action ?
How to write Github Action?
on
name jobs
Github Action - name
Github Action - on
Source: https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows
on: push
on: [ push,label ]
on:
label:
types:
- created
push:
branches:
- main
Event Type
● issue
● label
● pull_request
● push
● schedule
Github Action - jobs
18
jobs:
[job name]:
run-on: [runner]
steps:
- name: [step name]
run: [bash]
- name: [step name]
uses: [action path]
with:
[input key]: [input value]
jobs:
build-job:
run-on: ubuntu-latest
steps:
- name: Checkout project
uses: actions/checkout@v3
- name: Set up nodejs
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install Package
run: npm ci
Github Action - jobs
jobs:
build-job:
run-on: ubuntu-latest
steps:
- name: Checkout project
uses: actions/checkout@v3
- name: Set up nodejs
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install Package
run: npm ci
Condition
if: ${{ github.event_name == 'push' }}
if: ${{ vars.name == 'env value' }}
Context
${{ github.event_name }}
${{ vars.name }}
${{ secrets.name }}
Multiple lines command
- run: |
npm ci
npm build
Github Action - Set variable & secret
Github Action - Environment
jobs:
build-job:
run-on: ubuntu-latest
steps:
- name: Checkout project
uses: actions/checkout@v3
- name: Set up nodejs
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install Package
run: npm ci
Trigger environment in job
jobs:
build-job:
run-on: ubuntu-latest
environment: development
steps: ……….
Case: Host React on Github Page
Case: Host React App on Github Page
● npx create-react-app demo-site
● package.json > scripts > build > react-scripts build && cp build/index.html build/404.html
● package.json > homepage > “https://honglinliao.github.io/demo-action”
● create a github repo and push to origin
Case: Host React App on Github Page
Pull Reqest Create
Install Package
Workflow
job
Test
Build
Pull Reqest Merged
Case: Host React App on Github Page
Push
Install Package
Workflow
job
Test
Build
Deploy job
Upload Artifact
Case: Host React App on Github Page
Deploy job
Download
Artifact
Workflow
job
Deploy
Github Action
Github Page Action
Case: Host React App on Github Page
Create file: .github > workflows > workflow.yml
Case: Host React App on Github Page
Case: Host React App on Github Page
Case: Host React App on Github Page
Case: Host React App on Github Page
Case: Host React App on Github Page
Case: Host React App on Github Page
Case: Host React App on Github Page
Case: Host React App on Github Page
Publish action to Marketplace
Write custom action
Docker
container
Custom Action
Javascript composite
Howt to write composite action
● Required: name, description, runs
● For publish marketplace: author, branding
Howt to write composite action
Publish to Github Marketplace
● Add README.md
● Each repository contain single action.yml
● action.yml in root directory
● action.yml contain auth, branding
● Two-factor authentication (2FA)
Publish to Github Marketplace
41
Publish to Github Marketplace
Publish to Github Marketplace
Publish to Github Marketplace
Publish to Github Marketplace
Publish to Github Marketplace
Github Action Advantage
Github Action Advantage
方便:不需建置Infra
高彈性:複用Action 整合性:都在Github上操作
易用性:寫YAML不用10分鐘
Q & A
Medium
Link
LinkedIn Survey

Github Action 開始簡易入門 DevOps,自動化你的專案 (LearnWeb Taiwan Meetup #15)