Skip to content
name: Publish images to DockerHub, deploy Demo environment to AWS
on:
release:
types:
- published
workflow_dispatch:
jobs:
publish-dockerhub:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
image:
- repo: enaccess/micropowermanager-frontend
dockerfile: ./docker/DockerfileFrontendProd
- repo: enaccess/micropowermanager-backend
dockerfile: ./docker/DockerfileBackendProd
permissions:
contents: read
id-token: write
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: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Get version
run: |
VERSION=$(cat version)
echo "VERSION=$VERSION" >> $GITHUB_ENV
- name: Check if image tag already exists
run: |
VERSION="${{ env.VERSION }}"
if docker manifest inspect ${{ matrix.image.repo }}:$VERSION > /dev/null 2>&1; then
echo "Docker image tag $VERSION already exists."
exit 1
else
echo "Docker image tag $VERSION does not exist. Proceeding with build."
fi
- name: Build and push Docker image
uses: docker/build-push-action@v6
with:
file: ${{ matrix.image.dockerfile }}
platforms: linux/amd64,linux/arm64
push: true
tags: |
${{ matrix.image.repo }}:latest
${{ matrix.image.repo }}:${{ env.VERSION }}
- name: Update Docker Hub Description
uses: peter-evans/dockerhub-description@v4
with:
username: ${{ secrets.DOCKERHUB_USERNAME_LEGACY }}
password: ${{ secrets.DOCKERHUB_TOKEN_LEGACY }}
repository: ${{ matrix.image.repo }}
short-description: Open Source Management Tool for Decentralized Utilities
deploy-aws:
runs-on: ubuntu-latest
needs: publish-dockerhub
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-central-1
- name: Setup kubectl
uses: azure/setup-kubectl@v3
with:
version: latest
- name: Authenticate kubectl with EKS
run: |
aws eks update-kubeconfig --region eu-central-1 --name mpm
- name: Deploy to EKS
run: |
kubectl apply -f k8s/services/mpm-frontend.yaml
kubectl apply -f k8s/services/mpm-backend.yaml
kubectl apply -f k8s/deployments/mpm-frontend.yaml
kubectl apply -f k8s/deployments/mpm-backend.yaml
kubectl rollout restart deployment/mpm-frontend
kubectl rollout restart deployment/mpm-backend