在前一些日子的铁人赛中,我曾经写过关於Docker in Azure的文章,今天我们接续昨天的Github Actions介绍文章,我们来试着来建立一个CI,自动化将写好的Express包在Dockerfile中并自动化推上Azure。
相关的程序码可以查看: Github
其实撰写Github Actions workflow的步骤不外乎就是,1. 找到自己的需求 2.去Github Marketplace 找到你的Action需求 3. 改写。我们的需求是push Express到Azure并自动产生一个应用。
打开Github并搜寻Azure,找到一个你觉得不错的Actions
Optional 如果你没有Azure帐号、Azure ReourceGroup、Azure arc帐号,可以先参考Day 17,文章会告诉你怎麽建立。az login
、az acr login --name <resourceGroup>
做登入
打开你的Azure,整体的azure是会如同这张图,ManagementGroup分配Subsription并以此管理可以使用的资源。
订用用户->订用用户ID,取得你的subscript_id。订用用户->资源群组->取得资源群组名称
在Azure CLI建立新的APP:
az ad sp create-for-rbac --name "myExpress" --role contributor --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} --sdk-auth
如上获得了AZURE_CREDENTIALS,把上面显示的JSON加到Github Repository的变数之中。settings -> secrets -> New repository secret
。取名为AZURE_CREDENTIALS
,并把JSON添加到Value中。
顺便把REGISTRY_USERNAME
与REGISTRY_PASSWORD
加入github secrets中。打开你的资源群组 -> 你的资源群组 -> ACR -> 存取金钥
,使用者名称与password分别就是你的REGISTRY_USERNAME
与REGISTRY_PASSWORD
。
回到workflows中,我们可以先来测试登入:
name: Express to Azure
on:
push:
branches:
- "master"
pull_request:
branches: ["master"]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- run: |
az account show
显示成功登入即可:
接着就是部属了,参考Day 17就会知道你的login-server与resource-group。我的login-server是luforresourcegroup.azurecr.io
、resource-group是luforresourcegroup
,workflows写法如下:
# .github/workflows/main.yml
name: Express to Azure
on:
push:
branches:
- "master"
pull_request:
branches: ["master"]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# checkout the repo
- name: 'Checkout GitHub Action'
uses: actions/checkout@master
- name: 'Login via Azure CLI'
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- uses: azure/docker-login@v1
with:
login-server: luforresourcegroup.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t luforresourcegroup.azurecr.io/mynodeapp:${{ github.sha }}
docker push luforresourcegroup.azurecr.io/mynodeapp:${{ github.sha }}
如此一来就能把image自动化推上Azure了,参考Day 17来建立container,并完成API。
<<: DAY 17 取得资料库资料并将含LINE emoji的讯息传出
另一个常见资料库分类是从「资料处理*」的应用角度来区分: 交易型Transaction: OLTP:...
D28. 题目练习 这次一样是练3n+1的题目,之前是用C语言,这次用C++来写 #include&...
昨天我们画完了 业务流程图 今天要来介绍 页面流程图 要介绍这个之前可能要先讲一下wireframe...
当运算式有多个或多个类别的运算子时,我们会以运算子的 优先性 以及 相依性 来决定运算执行的顺序与方...
状况 最近的经验是要把公司的程序码翻新 但由於旧有的程序码技术债实在太过庞大,没办法像以前以往接手到...