Skip to content

building and deploying Metis-UI develop to test #60

building and deploying Metis-UI develop to test

building and deploying Metis-UI develop to test #60

name: '* Build & Deployment (Metis-UI)'
run-name: |
${{ github.event.inputs.delete == 'true'
&& 'deleting' || github.event.inputs.run_build == 'true'
&& 'building and deploying Metis-UI' || 'deploying Metis-UI' }}
${{ github.event.inputs.tag_name }}
${{ github.event.inputs.delete == 'true' && 'from' || 'to' }}
${{ github.event.inputs.deploy_environment }}
on:
workflow_dispatch:
inputs:
deploy_environment:
description: 'target environment'
required: true
default: 'test'
type: choice
options:
- test
- acceptance
- production
tag_name:
description: 'branch or tag to deploy'
default: 'develop'
type: string
run_build:
description: '(re)build docker image'
default: false
type: boolean
delete:
default: false
type: boolean
jobs:
make-env-file:
uses: ./.github/workflows/env-file-generation.yaml
with:
deploy_environment: ${{ github.event.inputs.deploy_environment }}
secrets: inherit
run-e2e:
if: ${{ github.event.inputs.run_build == 'true' }}
name: 'e2e'
uses: ./.github/workflows/run-tests-e2e.yaml
run-unit:
if: ${{ github.event.inputs.run_build == 'true' }}
name: 'tests'
uses: ./.github/workflows/run-tests.yaml
secrets: inherit
run-sonar:
if: ${{ github.event.inputs.run_build == 'true' }}
needs: [run-unit]
uses: ./.github/workflows/run-sonar.yaml
secrets: inherit
build-dist:
if: ${{ github.event.inputs.run_build == 'true' }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.event.inputs.tag_name }}
- name: Build Artifact
uses: actions/setup-node@v4
with:
node-version: '18.18.0'
- run: npm install
- run: npm run build-shared
- run: npm run dist-metis
- uses: actions/upload-artifact@master
with:
name: dist
path: ./projects/metis/dist
push-docker-image:
needs: [build-dist, run-unit]
if: ${{ github.event.inputs.run_build == 'true' }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.event.inputs.tag_name }}
- name: Get Built Artifact
uses: actions/download-artifact@master
with:
name: dist
path: ./projects/metis/dist
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
- name: Set up Docker Build
uses: docker/setup-buildx-action@v3
- run: |
tag=${{ github.event.inputs.tag_name || 'develop' }}
TAG_ESCAPED=${tag//[\/]/_}
echo TAG_ESCAPED=${TAG_ESCAPED} >> $GITHUB_ENV
- name: Extract Metadata for Docker Image
id: meta
uses: docker/metadata-action@v5
env:
PROJECT_VERSION: ${{ secrets.PROJECT_VERSION }}
with:
images: europeana/metis-ui
#tags: |
# ${{ env.TAG_ESCAPED }}
tags: |
type=sha
${{ env.TAG_ESCAPED }}
# type=schedule
# type=ref,event=branch
# type=ref,event=pr
# type=semver,pattern={{version}}
# type=semver,pattern={{major}}.{{minor}}
# type=semver,pattern={{major}}
# ${{ env.PROJECT_VERSION }}
# type=raw,value=latest,enable={{is_default_branch}}
- name: Build and push
uses: docker/build-push-action@v5
with:
context: ./projects/metis
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
push-to-kubernetes:
if: |
always()
&& !contains(needs.*.result, 'failure')
&& !cancelled()
needs: [push-docker-image, make-env-file]
uses: ./.github/workflows/deploy-image.yaml
with:
image_name: metis-ui
project_dir: metis
secrets: inherit