Integrate react-letter for improved email rendering #40
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build React App and Docker Image | |
on: | |
push: | |
branches: | |
- main | |
env: | |
DOCKER_REPOSITORY: hppanpaliya/react-trashmail | |
jobs: | |
build-and-push: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: [linux/amd64, linux/arm64] | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Set up Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: '18' | |
- name: Install React dependencies | |
run: yarn install --frozen-lockfile | |
working-directory: ./react | |
- name: Build React app | |
run: yarn build | |
working-directory: ./react | |
- name: Delete node_modules from React app | |
run: rm -rf ./node_modules | |
working-directory: ./react | |
- name: Install Mailserver dependencies | |
run: yarn install --frozen-lockfile | |
working-directory: ./mailserver | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Log in to Docker Hub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKER_HUB_USERNAME }} | |
password: ${{ secrets.DOCKER_HUB_TOKEN }} | |
- name: Extract platform short name | |
id: platform | |
run: | | |
if [[ "${{ matrix.platform }}" == "linux/amd64" ]]; then | |
echo "short=amd64" >> $GITHUB_OUTPUT | |
elif [[ "${{ matrix.platform }}" == "linux/arm64" ]]; then | |
echo "short=arm64" >> $GITHUB_OUTPUT | |
fi | |
- name: Build and push Docker image | |
uses: docker/build-push-action@v6 | |
with: | |
context: . | |
file: Dockerfile.prod | |
platforms: ${{ matrix.platform }} | |
push: true | |
tags: | | |
${{ env.DOCKER_REPOSITORY }}:${{ github.sha }} | |
${{ env.DOCKER_REPOSITORY }}:${{ github.sha }}-${{ steps.platform.outputs.short }} | |
merge: | |
runs-on: ubuntu-latest | |
needs: build-and-push | |
steps: | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Log in to Docker Hub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKER_HUB_USERNAME }} | |
password: ${{ secrets.DOCKER_HUB_TOKEN }} | |
- name: Create and push Docker manifest | |
run: | | |
docker buildx imagetools create \ | |
--tag ${{ env.DOCKER_REPOSITORY }}:latest \ | |
--tag ${{ env.DOCKER_REPOSITORY }}:${{ github.sha }} \ | |
${{ env.DOCKER_REPOSITORY }}:${{ github.sha }}-amd64 \ | |
${{ env.DOCKER_REPOSITORY }}:${{ github.sha }}-arm64 | |
- name: Inspect image | |
run: | | |
docker buildx imagetools inspect ${{ env.DOCKER_REPOSITORY }}:latest | |
docker buildx imagetools inspect ${{ env.DOCKER_REPOSITORY }}:${{ github.sha }} |