steps:
- uses: actions/checkout@v2
- run: npm ci
- name: Run production migration
run: npm run migrate:deploy
env:
DATABASE_URL: $ secrets . DATABASE_URL
- uses: akhileshns/heroku-deploy@v3.4.6
with:
heroku_api_key: $ secrets . HEROKU_API_KEY
heroku_app_name: $ secrets . HEROKU_APP_NAME
heroku_email: $ secrets . HEROKU_EMAIL
jobs:
test:
runs-on: ubuntu-latest

# Service containers to run with container-job services: # Label used to access the service container postgres: # Docker Hub image image: postgres # Provide the password for postgres env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 ports: # Maps TCP port 5432 on service container to the host - 5432:5432 env: DATABASE_URL: postgresql://postgres:postgres@localhost:5432/grading-app steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 with: node-version: '12.x' - run: npm ci # run the migration in the test database - run: npm run db:push - run: npm run test deploy: runs-on: ubuntu-latest if: github.event_name == 'push' && github.ref == 'refs/heads/master' # Only deploy master needs: test steps: - uses: actions/checkout@v2 - run: npm ci - name: Run production migration run: npm run migrate:deploy env: DATABASE_URL: ${{ secrets.DATABASE_URL }} - uses: akhileshns/heroku-deploy@v3.4.6 with: heroku_api_key: ${{ secrets.HEROKU_API_KEY }} heroku_app_name: ${{ secrets.HEROKU_APP_NAME }} heroku_email: ${{ secrets.HEROKU_EMAIL }}

grading-app工作流有兩個作業:testdeploy

測試作業將執行以下操作:

  1. 查看存儲庫。
  2. 配置節點。
  3. 安裝依賴項。
  4. 在使用 啟動的測試數據庫中創建數據庫架構services
  5. 運行測試。

注意:services可用于運行附加服務。在上面的測試作業中,它用于創建測試 PostgreSQL 數據庫。

部署作業將執行以下操作:

  1. 查看存儲庫
  2. 安裝依賴項
  3. 針對生產數據庫運行遷移
  4. 部署到 Heroku

注意:on: push 會為每次代碼推送到倉庫時觸發相應的工作流程。而 if: github.event_name == 'push' && github.ref == 'refs/heads/master' 這個條件則確保了名為 deploy 的作業僅在代碼被推送到 master 分支時才會被觸發執行。

分叉存儲庫并啟用工作流程

首先分叉GitHub 存儲庫,以便您可以配置 GitHub 操作。

注意:如果您已經對倉庫進行了分叉,那么請將原始倉庫中master分支的更改合并到您的分叉倉庫中。

分叉后,轉到Github 上的操作選項卡:

單擊啟用按鈕啟用工作流程:

現在,當您將提交推送到存儲庫時,GitHub 將運行工作流程。

Heroku CLI 登錄

確保您已使用 CLI 登錄到 Heroku:

heroku login

創建 Heroku 應用程序

要將后端應用程序部署到 Heroku,您需要創建一個 Heroku 應用程序。從克隆存儲庫的文件夾中運行以下命令:

cd real-world-grading-app
heroku apps:create YOUR_APP_NAME

注意:使用您選擇的唯一名稱而不是YOUR_APP_NAME

檢查點Heroku CLI 應記錄應用程序已成功創建:

Creating ? YOUR_APP_NAME... done

在 Heroku 上配置 PostgreSQL 數據庫

使用以下命令創建數據庫:

heroku addons:create heroku-postgresql:hobby-dev

檢查點:要驗證數據庫是否已創建,您應該看到以下內容:

Creating heroku-postgresql:hobby-dev on ? YOUR_APP_NAME... free
Database has been created and is available
! This database is empty. If upgrading, you can transfer
! data from another database with pg:copy
Created postgresql-closed-86440 as DATABASE_URL

注意: Heroku 會自動設置DATABASE_URL應用程序運行時的環境變量。Prisma 客戶端會使用與在 Prisma 架構的 DATABASE_URL 中所配置的環境變量相匹配的那個環境變量。

在 GitHub 中定義構建的機密

為了在 GitHub Actions 中執行生產數據庫的遷移操作以及將后端部署到 Heroku,您需要在 GitHub 中創建四個機密,這些機密將在工作流程中被引用。

注意:構建時機密和運行時機密之間存在區別。構建時機密將在 GitHub 中定義并在 GitHub Actions 運行期間使用。另一方面,運行時秘密將在 Heroku 中定義并由后端使用。

密語

獲取生產

要獲取DATABASE_URLHeroku 在配置數據庫時設置的 , 請使用以下 Heroku CLI 命令:

heroku config:get DATABASE_URL

檢查點:您應該在輸出中看到 URL,例如,postgres://username:password@ec2-12.eu-west-1.compute.amazonaws.com:5432/dbname

得到的HEROKU_API_KEY

您可以從自己的Heroku帳戶設置頁面中獲取Heroku API密鑰:

Heroku 賬戶設置中的 Heroku API 密鑰

在 GitHub 中創建機密

要創建四個機密,請轉到存儲庫設置并打開“機密”選項卡:

GitHub 存儲庫的秘密
單擊“新建密鑰”,使用名稱字段作為密鑰名稱,例如,HEROKU_APP_NAME并設置值:

檢查點:創建四個秘密后,您應該看到以下內容:

GitHub 存儲庫的秘密

在 Heroku 上定義環境變量

后端需要三個密鑰,這些密鑰將在運行時作為環境變量傳遞給應用程序:

注意:您可以JWT_SECRET通過在終端中運行以下命令來生成:

node -e "console.log(require('crypto').randomBytes(256).toString('base64'));"

要使用 Heroku CLI 設置它們,請使用以下命令:

heroku config:set SENDGRID_API_KEY="REPLACE_WITH_API_KEY" JWT_SECRET="REPLACE_WITH_SECRET"

檢查點:為了確認環境變量是否已經正確設置,您應該能夠看到如下內容:

Setting SENDGRID_API_KEY, JWT_SECRET and restarting ? YOUR_APP_NAME... done, v7

觸發工作流程來運行測試和部署

配置工作流程、在 Heroku 上創建應用程序以及設置所有機密后,您現在可以觸發工作流程來運行測試和部署。

為了觸發構建流程,您可以創建一個空提交并將其推送。

git commit --allow-empty -m "Trigger build"
git push

推送提交后,轉到 GitHub 存儲庫的“操作”選項卡,您應該會看到以下內容:

單擊表中包含提交消息的第一行:

查看日志

要查看作業的日志test,請單擊test相應的按鈕,您可以查看每個步驟的日志。例如,在下面的屏幕截圖中,您可以查看測試結果:

驗證 Heroku 的部署

要驗證該deploy作業已成功部署到 Heroku,請單擊deploy左側的Deploy to Heroku并展開該步驟。您應該在日志末尾看到以下行:

remote: https://***.herokuapp.com/ deployed to Heroku

若要從瀏覽器中訪問API,請在已克隆的存儲庫文件夾內執行以下Heroku CLI命令:

heroku open

這將打開指向https://YOUR_APP_NAME.herokuapp.com/的瀏覽器。

檢查點:您應該在瀏覽器中看到由狀態端點{"up":true}提供的服務。

查看后端日志

要查看后端日志,請從克隆的存儲庫文件夾中使用以下 Heroku CLI 命令:

heroku logs --tail -a YOUR_APP_NAME

測試登錄流程

要測試登錄流程,您需要對 REST API 進行兩次調用。

首先獲取 API 的 URL:

heroku apps:info

使用curl 對登錄端點進行POST 調用:

curl --header "Content-Type: application/json" --request POST --data '{"email":"your-email@prisma.io"}' https://YOUR_APP_NAME.herokuapp.com/login

檢查您電子郵件中收到的8位數令牌,并據此執行下一步操作。

curl -v --header "Content-Type: application/json" --request POST --data '{"email":"your-email@prisma.io", "emailToken": "99223388"}' https://YOUR_APP_NAME.herokuapp.com/authenticate

檢查點:響應應具有 200 成功狀態代碼并包含Authorization帶有 JWT 令牌的標頭:

< Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbklkIjo4fQ.ea2lBPMJ6mrPkwEHCgeIFqqQfkQ2uMQ4hL-GCuwtBAE

概括

您的后端已經成功部署并正在運行中。做得非常好!

您通過定義 GitHub Actions 工作流程配置持續集成和部署,創建 Heroku 應用程序,配置 PostgreSQL 數據庫,并使用 GitHub Actions 將后端部署到 Heroku。

當您向倉庫提交代碼并推送更改以引入新功能時,測試和TypeScript編譯器將會自動執行。如果一切順利,后端將會被部署。

您可以通過進入 Heroku 儀表板來查看內存使用情況、響應時間和吞吐量等指標。這對于深入了解后端如何處理不同的流量非常有用。例如,后端負載增加可能會導致響應時間變慢。

通過將TypeScript與Prisma Client結合使用,您可以在編譯階段就消除一類通常在運行時才會發現且需要調試的類型錯誤。

您可以在GitHub上找到后端的完整源代碼。

盡管Prisma的設計初衷是為了簡化關系數據庫的使用,但深入了解底層數據庫以及Heroku的具體細節仍然是非常有益的。

原文鏈接:https://www.prisma.io/blog/backend-prisma-typescript-orm-with-postgresql-deployment-bbba1ps7kip5

熱門推薦
一個賬號試用1000+ API
助力AI無縫鏈接物理世界 · 無需多次注冊
3000+提示詞助力AI大模型
和專業工程師共享工作效率翻倍的秘密
返回頂部
上一篇
探索 Flink SQL Gateway REST API
下一篇
如何獲取 truora 開放平臺 API Key 密鑰(分步指南)
国内精品久久久久影院日本,日本中文字幕视频,99久久精品99999久久,又粗又大又黄又硬又爽毛片
91精品国产综合久久精品麻豆 | 99久久99久久精品国产片果冻| 免费观看一级欧美片| 青娱乐精品视频| 久久成人18免费观看| 麻豆91精品视频| 精品一区二区免费| 国产精品亚洲综合一区在线观看| 国产在线乱码一区二区三区| 国产一区二区三区日韩| 精品一区二区免费看| 国产精品一线二线三线精华| 国产99久久久国产精品潘金网站| 成av人片一区二区| 色综合久久综合网97色综合 | 欧美日韩国产在线播放网站| 555www色欧美视频| 久久久久青草大香线综合精品| 中文字幕乱码一区二区免费| 亚洲视频一区在线观看| 亚洲一区二区欧美日韩| 全部av―极品视觉盛宴亚洲| 国产一区二区三区四| 99这里只有精品| 欧美巨大另类极品videosbest| 精品美女在线播放| 综合激情网...| 日韩高清不卡一区二区| 丁香婷婷综合色啪| 欧美午夜影院一区| 久久综合久久久久88| 国产精品久久久久桃色tv| 亚洲成人久久影院| 成人一区二区三区中文字幕| 欧美色精品在线视频| 精品久久久三级丝袜| 亚洲视频在线一区观看| 毛片一区二区三区| 色哟哟一区二区在线观看| 日韩精品一区二区三区视频| 亚洲欧美日韩精品久久久久| 老汉av免费一区二区三区| 色天天综合色天天久久| 国产精品久久久久久久久动漫| 中文字幕不卡在线播放| 欧美三级乱人伦电影| 国产亚洲精品7777| 午夜av电影一区| 国产一二精品视频| 4438成人网| 一区二区国产盗摄色噜噜| 国产成人精品免费一区二区| 日韩视频一区在线观看| 亚洲国产日韩在线一区模特| 成人免费视频播放| 国产三级久久久| 国产一区二区调教| 日韩三级在线观看| 日韩精品91亚洲二区在线观看| 色综合色综合色综合 | 国产精品日日摸夜夜摸av| 免费高清视频精品| 欧美日韩国产中文| 亚洲成人精品在线观看| 色诱视频网站一区| 亚洲女性喷水在线观看一区| 成人激情午夜影院| 欧美激情资源网| 福利一区二区在线| 久久久91精品国产一区二区三区| 久久国产精品99精品国产| 日韩欧美激情一区| 麻豆国产91在线播放| 日韩亚洲电影在线| 久久精品国产一区二区三| 欧美一二三区在线观看| 精品一区二区三区视频在线观看| 精品噜噜噜噜久久久久久久久试看| 日韩精品成人一区二区在线| 日韩一区二区三区在线| 精品一区二区三区视频在线观看 | 97久久精品人人爽人人爽蜜臀| 国产精品久久久久婷婷| 99国产精品久久久| 亚洲精品日韩一| 欧美乱妇23p| 久久国产婷婷国产香蕉| 久久免费视频色| 亚洲精品一区二区在线观看| 51午夜精品国产| 亚洲福利一二三区| 亚洲国产精品久久久久秋霞影院| 色婷婷激情综合| 亚洲成人av电影在线| 91麻豆精品国产91久久久资源速度 | 日韩女优av电影在线观看| 狠狠色综合播放一区二区| 亚洲综合一区二区| 亚洲色图欧美偷拍| 日韩在线一二三区| 久久久美女艺术照精彩视频福利播放| 国产成人免费在线视频| 亚洲日本在线a| 91精品国产综合久久精品麻豆| 美女在线视频一区| 中文字幕永久在线不卡| 欧美日韩久久不卡| 国产精品123区| 亚洲美女区一区| 精品黑人一区二区三区久久| 91麻豆国产在线观看| 久久精品国产秦先生| 亚洲精品中文在线| www精品美女久久久tv| 色狠狠av一区二区三区| 久久99久久精品| 亚洲影视在线播放| 久久精品网站免费观看| 欧美日韩卡一卡二| 亚洲aⅴ怡春院| 久久国内精品自在自线400部| 欧美日韩的一区二区| 国内精品写真在线观看 | 日韩色在线观看| 久久电影网电视剧免费观看| 91亚洲大成网污www| 成人a免费在线看| 国产精品国产a级| 国产精品成人午夜| 麻豆国产精品777777在线| 国产福利一区在线| 9191久久久久久久久久久| 国产精品久久久一本精品 | 亚洲精品一二三| 日韩一区二区电影在线| 91黄色激情网站| voyeur盗摄精品| 国产乱码字幕精品高清av| 日韩福利电影在线| 亚洲福利视频一区二区| 亚洲精品视频在线观看网站| 色婷婷综合中文久久一本| xvideos.蜜桃一区二区| 91亚洲精品久久久蜜桃网站| 日韩 欧美一区二区三区| 日韩精品欧美精品| 亚洲精品在线网站| 国产丝袜在线精品| 日韩欧美你懂的| 91麻豆精品视频| 精品一区二区三区在线播放视频| 亚洲精品午夜久久久| 欧美在线免费观看视频| 色94色欧美sute亚洲线路一ni| 欧美在线一区二区| 国产精品午夜在线| 性感美女极品91精品| 国产精品国产三级国产有无不卡 | 欧美日韩亚洲另类| 在线日韩国产精品| 91麻豆免费看片| 91蝌蚪porny成人天涯| 91蜜桃免费观看视频| 91视频国产资源| 色婷婷久久久久swag精品| 欧美综合视频在线观看| 欧美日韩在线播| 91精品国产综合久久久久久漫画 | 亚洲欧美日韩在线| 亚洲欧洲精品一区二区三区不卡| 中文字幕一区二区三区蜜月| 亚洲欧美一区二区三区国产精品| 亚洲精品久久久蜜桃| 一区二区三区鲁丝不卡| 日韩美一区二区三区| 乱中年女人伦av一区二区| 亚洲欧美日韩国产综合| 精品午夜久久福利影院| 亚洲视频你懂的| 亚洲视频一区二区在线观看| 国产精品国产三级国产aⅴ中文 | 亚洲欧美偷拍三级| 欧美中文字幕一区二区三区| 日本在线不卡一区| 日韩精品一级二级| 久久精品999| 成人精品国产一区二区4080| 91丨九色丨黑人外教| 91麻豆精品国产无毒不卡在线观看 | 欧美三区在线视频| 欧美军同video69gay| 精品sm在线观看| 欧美精选一区二区| 久久久99精品免费观看不卡| 国产91在线观看丝袜| 久久亚洲综合色一区二区三区| 在线不卡免费av| 欧美激情一区二区三区四区| 亚洲欧美日韩中文播放| 日本sm残虐另类|