Merge pull request #20 from imantsk/develop #9
Workflow file for this run
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: Publish Docker image | |
on: | |
push: | |
tags: | |
- "v[0-9]+.[0-9]+.[0-9]+*" | |
jobs: | |
push_to_registry: | |
name: Push Docker images to GHCR and Docker Hub | |
runs-on: self-hosted | |
steps: | |
- name: Check out the repo | |
uses: actions/checkout@v4 | |
- name: Setup yarn | |
uses: mskelton/setup-yarn@v3 | |
with: | |
node-version: '20' | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: '8.2' | |
extensions: 'gd, pdo_pgsql, sodium, curl, intl, mbstring, xml, zip, bcmath' | |
- name: Log in to GitHub Container Registry | |
id: login-ghcr | |
uses: docker/[email protected] | |
with: | |
registry: 'ghcr.io' | |
username: '${{ github.repository_owner }}' | |
password: '${{ secrets.GHCR_PAT }}' | |
# All-in-one Image Steps | |
- name: Extract metadata (tags, labels) for All-in-one Docker | |
id: meta_all_in_one | |
uses: docker/metadata-action@v3 | |
with: | |
images: | | |
ghcr.io/imantsk/hi.events-all-in-one | |
${{ secrets.DOCKER_USER }}/hi.events-all-in-one | |
tags: | | |
type=ref,event=tag | |
type=ref,event=branch,pattern=main | |
type=raw,value=latest | |
- name: Build and push All-in-one Docker image | |
uses: docker/build-push-action@v3 | |
with: | |
context: './' | |
file: './Dockerfile.all-in-one' | |
push: true | |
platforms: 'linux/arm64' | |
tags: '${{ steps.meta_all_in_one.outputs.tags }}' | |
labels: '${{ steps.meta_all_in_one.outputs.labels }}' | |
# Backend Image Steps | |
- name: Extract metadata (tags, labels) for Backend Docker | |
id: meta_backend | |
uses: docker/metadata-action@v3 | |
with: | |
images: | | |
ghcr.io/imantsk/hi.events-backend | |
${{ secrets.DOCKER_USER }}/hi.events-backend | |
tags: | | |
type=ref,event=tag | |
type=ref,event=branch,pattern=main | |
type=raw,value=latest | |
- name: Build and push Backend Docker image | |
uses: docker/build-push-action@v3 | |
with: | |
context: './backend' | |
file: './backend/Dockerfile' | |
push: true | |
platforms: 'linux/arm64' | |
tags: '${{ steps.meta_backend.outputs.tags }}' | |
labels: '${{ steps.meta_backend.outputs.labels }}' | |
# Frontend Image Steps | |
- name: Extract metadata (tags, labels) for Frontend Docker | |
id: meta_frontend | |
uses: docker/metadata-action@v3 | |
with: | |
images: | | |
ghcr.io/imantsk/hi.events-frontend | |
${{ secrets.DOCKER_USER }}/hi.events-frontend | |
tags: | | |
type=ref,event=tag | |
type=ref,event=branch,pattern=main | |
type=raw,value=latest | |
- name: Build and push Frontend Docker image | |
uses: docker/build-push-action@v3 | |
with: | |
context: './frontend' | |
file: './frontend/Dockerfile.ssr' | |
push: true | |
platforms: 'linux/arm64' | |
tags: '${{ steps.meta_frontend.outputs.tags }}' | |
labels: '${{ steps.meta_frontend.outputs.labels }}' | |
# Log out from GHCR and log in to Docker Hub | |
- name: Log out from GHCR | |
run: docker logout ghcr.io | |
- name: Log in to Docker Hub | |
uses: docker/[email protected] | |
with: | |
username: ${{ secrets.DOCKER_USER }} | |
password: ${{ secrets.DOCKER_KEY }} | |
# Push images to Docker Hub | |
- name: Push All-in-one image to Docker Hub | |
run: | | |
docker push ${{ secrets.DOCKER_USER }}/hi.events-all-in-one:latest | |
docker push ${{ secrets.DOCKER_USER }}/hi.events-all-in-one:${{ github.ref_name }} | |
- name: Push Backend image to Docker Hub | |
run: | | |
docker push ${{ secrets.DOCKER_USER }}/hi.events-backend:latest | |
docker push ${{ secrets.DOCKER_USER }}/hi.events-backend:${{ github.ref_name }} | |
- name: Push Frontend image to Docker Hub | |
run: | | |
docker push ${{ secrets.DOCKER_USER }}/hi.events-frontend:latest | |
docker push ${{ secrets.DOCKER_USER }}/hi.events-frontend:${{ github.ref_name }} |