Skip to content

feat: Enhance Boutique (#1817) #1516

feat: Enhance Boutique (#1817)

feat: Enhance Boutique (#1817) #1516

name: Build & Publish
on:
pull_request:
branches:
- '**'
push:
branches:
- main
tags:
- 'v[0-9]+.[0-9]+.[0-9]+'
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 10
strategy:
matrix:
package:
[
'wallet:backend',
'wallet:frontend',
'boutique:backend',
'boutique:frontend'
]
steps:
- name: Checkout code
uses: actions/checkout@v4
- uses: pnpm/action-setup@v3
with:
version: v9.1.4
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'
- name: Install dependencies for ${{ matrix.package }}
shell: bash
run: |
pnpm ${{ matrix.package }} install --frozen-lockfile
- name: Run build
run: |
pnpm ${{ matrix.package }} build
publish:
runs-on: ubuntu-latest
needs: build
timeout-minutes: 15
if: startsWith(github.ref, 'refs/tags/v')
strategy:
matrix:
package:
- name: test-wallet-backend
identifier: 'wallet:backend'
path: packages/wallet/backend
- name: test-wallet-frontend
identifier: 'wallet:frontend'
path: packages/wallet/frontend
port: 4003
cookie_name: testnet.cookie
backend_url: https://api.wallet.interledger-test.dev
open_payments_host: $ilp.interledger-test.dev/
auth_host: https://auth.interledger-test.dev
gatehub_env: sandbox
theme: dark
- name: test-wallet-frontend-cards
identifier: 'wallet:frontend'
path: packages/wallet/frontend
port: 4003
cookie_name: interledgercards.cookie
backend_url: https://api.interledger.cards
open_payments_host: $ilp.dev/
auth_host: https://auth.interledger.cards
gatehub_env: production
theme: light
- name: test-boutique-frontend
identifier: 'boutique:frontend'
path: packages/boutique/frontend
api_base_url: 'https://api.boutique.interledger-test.dev'
currency: 'USD'
theme: dark
- name: test-boutique-frontend-jopacc
identifier: 'boutique:frontend'
path: packages/boutique/frontend
api_base_url: 'https://api.boutique.jopacc.openpayments.directory'
currency: 'JOD'
theme: light
- name: test-boutique-backend
identifier: 'boutique:backend'
path: packages/boutique/backend
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Docker build and push
uses: docker/build-push-action@v6
with:
context: ./
push: true
file: ${{ matrix.package.path }}/Dockerfile.prod
build-args: |
${{ matrix.package.identifier == 'boutique:frontend' && format('VITE_API_BASE_URL={0}', matrix.package.api_base_url) || '' }}
${{ matrix.package.identifier == 'boutique:frontend' && format('VITE_CURRENCY={0}', matrix.package.currency) || '' }}
${{ matrix.package.identifier == 'boutique:frontend' && format('VITE_THEME={0}', matrix.package.theme) || '' }}
${{ matrix.package.identifier == 'wallet:frontend' && format('PORT={0}', matrix.package.port) || '' }}
${{ matrix.package.identifier == 'wallet:frontend' && format('COOKIE_NAME={0}', matrix.package.cookie_name) || '' }}
${{ matrix.package.identifier == 'wallet:frontend' && format('NEXT_PUBLIC_BACKEND_URL={0}', matrix.package.backend_url) || '' }}
${{ matrix.package.identifier == 'wallet:frontend' && format('NEXT_PUBLIC_OPEN_PAYMENTS_HOST={0}', matrix.package.open_payments_host) || '' }}
${{ matrix.package.identifier == 'wallet:frontend' && format('NEXT_PUBLIC_AUTH_HOST={0}', matrix.package.auth_host) || '' }}
${{ matrix.package.identifier == 'wallet:frontend' && format('NEXT_PUBLIC_GATEHUB_ENV={0}', matrix.package.gatehub_env) || '' }}
${{ matrix.package.identifier == 'wallet:frontend' && format('NEXT_PUBLIC_THEME={0}', matrix.package.theme) || '' }}
tags: ghcr.io/${{ github.repository_owner }}/${{ matrix.package.name }}:${{ github.ref_name }},ghcr.io/${{ github.repository_owner }}/${{ matrix.package.name }}:latest
generate-release:
runs-on: ubuntu-latest
needs: publish
timeout-minutes: 5
if: startsWith(github.ref, 'refs/tags/v')
permissions:
contents: write
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Update CHANGELOG
id: changelog
uses: requarks/changelog-action@v1
with:
token: ${{ github.token }}
tag: ${{ github.ref_name }}
- name: Create Release
uses: ncipollo/[email protected]
with:
allowUpdates: true
draft: false
makeLatest: true
name: ${{ github.ref_name }}
body: ${{ steps.changelog.outputs.changes }}
tag: ${{ github.ref_name }}
token: ${{ github.token }}
- name: Commit CHANGELOG.md
uses: stefanzweifel/git-auto-commit-action@v5
with:
branch: main
commit_message: 'docs: update CHANGELOG.md for ${{ github.ref_name }} [skip ci]'
file_pattern: CHANGELOG.md