Skip to content

Add files via upload #15

Add files via upload

Add files via upload #15

Workflow file for this run

# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
name: Deployment
on:
workflow_dispatch:
push:
tags:
- 'v*.*.*'
branches:
- next
- main
env:
REGISTRY: ghcr.io
USERNAME: ${{ github.repository_owner }}
NODE_VERSION: v20.0.0
jobs:
build:
name: πŸš€ Build Container
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- name: persianpart-pwa
dockerfile: cloud/pwa/Dockerfile
description: Persian Part Company PWA Nginx Server
- name: persianpart-api
dockerfile: cloud/api/Dockerfile
description: Persian Part Company API Server
permissions:
contents: read
packages: write
# This is used to complete the identity challenge
# with sigstore/fulcio when running outside of PRs.
id-token: write
steps:
- name: ‡️ Checkout repository
uses: actions/checkout@v4.1.1
- name: πŸ— Setup nodejs
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: yarn
- name: πŸ— Install dependencies
run: yarn install --immutable
- name: πŸš€ Build `${{ matrix.name }}` Projects
run: yarn nx run ${{ matrix.name }}:build
- name: πŸ— Setup Docker Buildx
uses: docker/setup-buildx-action@v2.9.1
- name: πŸ— Log into registry `${{ env.REGISTRY }}`
if: ${{ github.event_name != 'pull_request' }}
uses: docker/login-action@v2.2.0
with:
registry: ${{ env.REGISTRY }}
username: ${{ env.USERNAME }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: πŸ— Extract metadata
id: meta
uses: docker/metadata-action@v4.6.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
images: name=${{ env.REGISTRY }}/${{ env.USERNAME }}/deprecate/${{ matrix.name }},enable=true
labels: |
org.opencontainers.image.authors=MM25Zamanian@gmail.com
org.opencontainers.image.title=@gecut/${{ matrix.name }}-deprecate
org.opencontainers.image.description=${{ matrix.description }}
org.opencontainers.image.distribution = "https://github.com/gecut/persianpart"
tags: |
type=semver,enable=true,pattern={{major}}
type=semver,enable=true,pattern={{major}}.{{minor}}
type=semver,enable=true,pattern={{version}}
type=ref,enable=true,event=pr
type=ref,enable=true,event=branch
type=sha,format=long
type=raw,enable={{is_default_branch}},value=latest
- name: πŸš€ Build and push container image
id: build-and-push
uses: docker/build-push-action@v4.1.1
with:
push: ${{ github.event_name != 'pull_request' }}
github-token: ${{ secrets.GITHUB_TOKEN }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
context: .
file: ${{ matrix.dockerfile }}
build-args: |
APP_NAME=${{ matrix.name }}
PACKAGE_SOURCE=dist/apps/${{ matrix.name }}
cache-from: type=gha
cache-to: type=gha,mode=max
darkube_deploy:
name: πŸš€ Deploy On Darkube
concurrency: ${{ matrix.name }}-ci-${{ github.ref }}-${{ github.event_name }}
container: hamravesh.hamdocker.ir/public/darkube-cli:v1.1
needs: build
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- name: PERSIANPART_PWA
image_tag: latest
- name: PERSIANPART_API
image_tag: latest
steps:
- name: πŸš€ Deploy [' ${{ matrix.name }} ']
run: darkube deploy --ref master --token ${DARKUBE_DEPLOY_TOKEN} --app-id ${DARKUBE_APP_ID} --image-tag ${{ matrix.image_tag }} --job-id "$GITHUB_RUN_ID" --stateless-app true
env:
DARKUBE_DEPLOY_TOKEN: ${{ secrets[format('{0}__DEPLOY_TOKEN', matrix.name)] }}
DARKUBE_APP_ID: ${{ secrets[format('{0}__APP_ID', matrix.name)] }}
liara_deploy:
name: πŸš€ Deploy On Lira
needs: build
if: false
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- name: hami-pwa
source: apps/hami-pwa
- name: hami-orders-site
source: apps/hami-orders-site
- name: hami-api
source: apps/hami-api
steps:
- name: ‡️ Checkout repository
uses: actions/checkout@v4.1.1
- name: πŸ— Setup nodejs
uses: actions/setup-node@v4
with:
node-version: 19
- name: πŸš€ Deploy [' ${{ matrix.name }} ']
uses: nick-fields/retry@v2
with:
timeout_minutes: 3
max_attempts: 10
command: |
cd ${{ matrix.source }}
npx @liara/cli deploy --api-token="${{ secrets.LIARA_API_TOKEN }}" --detach