Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4003aab9e0 |
@@ -1,120 +1,27 @@
|
||||
name: Build (develop) / Promote (main)
|
||||
on:
|
||||
push:
|
||||
branches: [main, develop]
|
||||
name: Deploy NestJS API
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
build-and-push-deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Free disk space
|
||||
- name: Login no Harbor
|
||||
run: |
|
||||
df -h
|
||||
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc || true
|
||||
sudo apt-get clean || true
|
||||
docker system prune -af --volumes || true
|
||||
df -h
|
||||
- name: Build (develop) / Promote (main)
|
||||
env:
|
||||
REGISTRY: harbor.jurunense.com
|
||||
DEV_PROJECT: vendaweb-dev
|
||||
PROD_PROJECT: vendaweb-prod
|
||||
IMAGE_REPO: vendaweb-api
|
||||
PROMOTE_LEGACY: 'false'
|
||||
HARBOR_USERNAME: ${{ secrets.HARBOR_USERNAME }}
|
||||
HARBOR_PASSWORD: ${{ secrets.HARBOR_PASSWORD }}
|
||||
HARBOR_DEV_USERNAME: ${{ secrets.HARBOR_DEV_USERNAME }}
|
||||
HARBOR_DEV_PASSWORD: ${{ secrets.HARBOR_DEV_PASSWORD }}
|
||||
HARBOR_PROD_USERNAME: ${{ secrets.HARBOR_PROD_USERNAME }}
|
||||
HARBOR_PROD_PASSWORD: ${{ secrets.HARBOR_PROD_PASSWORD }}
|
||||
HARBOR_LEGACY_USERNAME: ${{ secrets.HARBOR_LEGACY_USERNAME }}
|
||||
HARBOR_LEGACY_PASSWORD: ${{ secrets.HARBOR_LEGACY_PASSWORD }}
|
||||
echo "${{ secrets.HARBOR_PASSWORD }}" | docker login 172.35.0.216 -u ${{ secrets.HARBOR_USERNAME }} --password-stdin
|
||||
|
||||
- name: Build e Push
|
||||
run: |
|
||||
set -euo pipefail
|
||||
TAG=${{ gitea.sha }}
|
||||
docker build -t 172.35.0.216/library/vendaweb-api:$TAG .
|
||||
docker tag 172.35.0.216/library/vendaweb-api:$TAG 172.35.0.216/library/vendaweb-api:latest
|
||||
|
||||
BRANCH="${GITHUB_REF_NAME:-${GITEA_REF_NAME:-}}"
|
||||
if [ -z "$BRANCH" ] && [ -n "${GITHUB_REF:-}" ]; then
|
||||
BRANCH="${GITHUB_REF#refs/heads/}"
|
||||
fi
|
||||
docker push 172.35.0.216/library/vendaweb-api:$TAG
|
||||
docker push 172.35.0.216/library/vendaweb-api:latest
|
||||
|
||||
DEV_IMAGE="$REGISTRY/$DEV_PROJECT/$IMAGE_REPO"
|
||||
PROD_IMAGE="$REGISTRY/$PROD_PROJECT/$IMAGE_REPO"
|
||||
LEGACY_IMAGE="$REGISTRY/library/$IMAGE_REPO"
|
||||
|
||||
DEV_USER="${HARBOR_DEV_USERNAME:-$HARBOR_USERNAME}"
|
||||
DEV_PASS="${HARBOR_DEV_PASSWORD:-$HARBOR_PASSWORD}"
|
||||
PROD_USER="${HARBOR_PROD_USERNAME:-$HARBOR_USERNAME}"
|
||||
PROD_PASS="${HARBOR_PROD_PASSWORD:-$HARBOR_PASSWORD}"
|
||||
LEGACY_USER="${HARBOR_LEGACY_USERNAME:-$PROD_USER}"
|
||||
LEGACY_PASS="${HARBOR_LEGACY_PASSWORD:-$PROD_PASS}"
|
||||
|
||||
if [ "$BRANCH" = "develop" ]; then
|
||||
TAG=$(echo ${{ gitea.sha }} | cut -c1-7)
|
||||
|
||||
echo "$DEV_PASS" | docker login "$REGISTRY" -u "$DEV_USER" --password-stdin
|
||||
docker build -t "$DEV_IMAGE:$TAG" -f ./Dockerfile .
|
||||
docker push "$DEV_IMAGE:$TAG"
|
||||
docker tag "$DEV_IMAGE:$TAG" "$DEV_IMAGE:develop"
|
||||
docker push "$DEV_IMAGE:develop"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$BRANCH" = "main" ]; then
|
||||
sudo apt-get update -y
|
||||
sudo apt-get install -y skopeo
|
||||
|
||||
if [ -z "${DEV_USER:-}" ] || [ -z "${DEV_PASS:-}" ]; then
|
||||
echo "Missing Harbor DEV credentials (HARBOR_DEV_USERNAME/HARBOR_DEV_PASSWORD or HARBOR_USERNAME/HARBOR_PASSWORD)." >&2
|
||||
exit 1
|
||||
fi
|
||||
if [ -z "${PROD_USER:-}" ] || [ -z "${PROD_PASS:-}" ]; then
|
||||
echo "Missing Harbor PROD credentials (HARBOR_PROD_USERNAME/HARBOR_PROD_PASSWORD or HARBOR_USERNAME/HARBOR_PASSWORD)." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Merge commit: HEAD has 2 parents; HEAD^2 is the merged branch tip.
|
||||
PARENTS="$(git rev-list --parents -n 1 HEAD)"
|
||||
set -- $PARENTS
|
||||
SOURCE_SHA="${3:-${1:-}}"
|
||||
if [ -z "$SOURCE_SHA" ]; then
|
||||
SOURCE_SHA="${{ gitea.sha }}"
|
||||
fi
|
||||
TAG="$(echo "$SOURCE_SHA" | cut -c1-7)"
|
||||
|
||||
# Promote the exact artifact built on develop into prod (no rebuild).
|
||||
skopeo inspect --creds "$DEV_USER:$DEV_PASS" "docker://$DEV_IMAGE:$TAG" >/dev/null
|
||||
|
||||
# Validate destination repository exists and auth works.
|
||||
# Using list-tags avoids assuming a specific tag exists.
|
||||
skopeo list-tags --creds "$PROD_USER:$PROD_PASS" "docker://$PROD_IMAGE" >/dev/null
|
||||
|
||||
skopeo copy --all \
|
||||
--src-creds "$DEV_USER:$DEV_PASS" \
|
||||
--dest-creds "$PROD_USER:$PROD_PASS" \
|
||||
"docker://$DEV_IMAGE:$TAG" \
|
||||
"docker://$PROD_IMAGE:$TAG"
|
||||
|
||||
# Optional: keep legacy tags working during migration.
|
||||
if [ "${PROMOTE_LEGACY:-false}" = "true" ]; then
|
||||
skopeo copy --all \
|
||||
--src-creds "$DEV_USER:$DEV_PASS" \
|
||||
--dest-creds "$LEGACY_USER:$LEGACY_PASS" \
|
||||
"docker://$DEV_IMAGE:$TAG" \
|
||||
"docker://$LEGACY_IMAGE:$TAG"
|
||||
skopeo copy --all \
|
||||
--src-creds "$DEV_USER:$DEV_PASS" \
|
||||
--dest-creds "$LEGACY_USER:$LEGACY_PASS" \
|
||||
"docker://$DEV_IMAGE:$TAG" \
|
||||
"docker://$LEGACY_IMAGE:latest"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Unsupported branch: $BRANCH" >&2
|
||||
exit 1
|
||||
- name: Notificar Portainer via Webhook
|
||||
run: |
|
||||
# O Webhook avisa o Portainer para puxar a nova imagem imediatamente
|
||||
curl -X POST "${{ secrets.PORTAINER_WEBHOOK_VENDAWEBAPI }}"
|
||||
@@ -16,7 +16,7 @@ async function bootstrap() {
|
||||
do cadastro de parceiros, consulta de venda de movimentação e pagamentos, e fechamento das comissões dos parceiros.`)
|
||||
.setVersion("2023.1.2")
|
||||
.addTag("VendaWeb")
|
||||
.addTag("Auth")
|
||||
.addTag("Autenticação")
|
||||
.build();
|
||||
const document = SwaggerModule.createDocument(app, options);
|
||||
SwaggerModule.setup("docs", app, document);
|
||||
|
||||
@@ -1448,7 +1448,7 @@ export class SalesService {
|
||||
const queryRunner = connectionDb.createQueryRunner();
|
||||
await queryRunner.connect();
|
||||
try {
|
||||
/*const sql = 'SELECT ESVCALCULOFRETE.CODTABELAFRETE as "id" ' +
|
||||
const sql = 'SELECT ESVCALCULOFRETE.CODTABELAFRETE as "id" ' +
|
||||
' ,ESVCALCULOFRETE.CODFILIAL as "store" ' +
|
||||
' ,ESVCALCULOFRETE.CODCIDADE as "cityId" ' +
|
||||
' ,PCCIDADE.NOMECIDADE as "cityName" ' +
|
||||
@@ -1462,22 +1462,7 @@ export class SalesService {
|
||||
' AND ESVCALCULOFRETE.CODCIDADE = PCCIDADE.CODCIDADE ' +
|
||||
' AND ESVCALCULOFRETE.CODCIDADE = :1 ' +
|
||||
' AND ESVCALCULOFRETE.IDCART = :2 ' +
|
||||
' ORDER BY VLFRETE';*/
|
||||
|
||||
const sql = `SELECT 0 as "id"
|
||||
,'1' as "store"
|
||||
,ESVCALCULOFRETE.CODCIDADE as "cityId"
|
||||
,PCCIDADE.NOMECIDADE as "cityName"
|
||||
,NULL as "carrierId"
|
||||
,'SIMPLIFIQUE HOMECENTER' as "carrierName"
|
||||
,0 as "minSale"
|
||||
,ESVCALCULOFRETE.VLFRETE as "deliveryValue"
|
||||
,NULL as "deliveryTime"
|
||||
FROM ESVCALCULOFRETE, PCCIDADE
|
||||
WHERE ESVCALCULOFRETE.CODCIDADE = PCCIDADE.CODCIDADE
|
||||
AND ESVCALCULOFRETE.CODCIDADE = :1
|
||||
AND ESVCALCULOFRETE.IDCART = :2
|
||||
ORDER BY VLFRETE`;
|
||||
' ORDER BY VLFRETE';
|
||||
|
||||
const deliveryTaxTable = await queryRunner.manager
|
||||
.query(sql, [cityId, cartId]);
|
||||
@@ -1529,22 +1514,7 @@ export class SalesService {
|
||||
const queryRunner = connectionDb.createQueryRunner();
|
||||
await queryRunner.connect();
|
||||
try {
|
||||
const sql = `SELECT 0 as "id"
|
||||
,'1' as "store"
|
||||
,ESVCALCULOFRETE.CODCIDADE as "cityId"
|
||||
,PCCIDADE.NOMECIDADE as "cityName"
|
||||
,NULL as "carrierId"
|
||||
,'SIMPLIFIQUE HOMECENTER' as "carrierName"
|
||||
,0 as "minSale"
|
||||
,ESVCALCULOFRETE.VLFRETE as "deliveryValue"
|
||||
,NULL as "deliveryTime"
|
||||
FROM ESVCALCULOFRETE, PCCIDADE
|
||||
WHERE ESVCALCULOFRETE.CODCIDADE = PCCIDADE.CODCIDADE
|
||||
AND ESVCALCULOFRETE.CODCIDADE = :1
|
||||
AND ESVCALCULOFRETE.IDCART = :2
|
||||
ORDER BY VLFRETE`;
|
||||
|
||||
/*const sql = 'SELECT ESVCALCULOFRETE.CODTABELAFRETE as "id" ' +
|
||||
const sql = 'SELECT ESVCALCULOFRETE.CODTABELAFRETE as "id" ' +
|
||||
' ,ESVCALCULOFRETE.CODFILIAL as "store" ' +
|
||||
' ,ESVCALCULOFRETE.CODCIDADE as "cityId" ' +
|
||||
' ,PCCIDADE.NOMECIDADE as "cityName" ' +
|
||||
@@ -1558,7 +1528,7 @@ export class SalesService {
|
||||
' AND ESVCALCULOFRETE.CODCIDADE = PCCIDADE.CODCIDADE ' +
|
||||
' AND ESVCALCULOFRETE.CODCIDADE = :1 ' +
|
||||
' AND ESVCALCULOFRETE.IDCART = :2 ' +
|
||||
' ORDER BY VLFRETE';*/
|
||||
' ORDER BY VLFRETE';
|
||||
|
||||
let deliveryTaxTable = await queryRunner.manager
|
||||
.query(sql, [dataDeliveryTax.cityId, dataDeliveryTax.cartId]);
|
||||
|
||||
Reference in New Issue
Block a user