Skip to content

WP: build frontend

WP: build frontend #40

# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
name: Deploy backend container
on:
push:
branches: [ "master","feat/kubernetes" ,"feat/backend-*"]
tags:
- 'v*'
# pull_request:
# branches: [ "master" ]
env:
REGISTRY: ghcr.io
APPLICATION: backend
IMAGE_NAME: ${{ github.repository }}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
check:
name: ≠ Check files
runs-on: ubuntu-latest
outputs:
docs_changed: ${{ steps.changed-files-specific.outputs.any_changed }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 2 # OR "2" -> To retrieve the preceding commit.
submodules: 'true'
- name: Get changed files in the ${{ env.APPLICATION }} folder
id: changed-files-specific
uses: tj-actions/changed-files@v34
with:
files: |
${{ env.APPLICATION }}/**
- name: Run step if any file(s) in the docs folder change
if: steps.changed-files-specific.outputs.any_changed == 'true'
run: |
echo "One or more files in the docs folder has changed."
echo "List all the files that have changed: ${{ steps.changed-files-specific.outputs.all_changed_files }}"
test:
name: ✅ Test with flake8
runs-on: ubuntu-20.04
needs: check
if: needs.check.outputs.docs_changed == 'true'
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.7
uses: actions/setup-python@v3
with:
python-version: "3.7"
- name: Install dependencies
working-directory: ${{ env.APPLICATION }}
run: |
python -m pip install --upgrade pip
pip install flake8 pytest
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Lint with flake8
run: |
# stop the build if there are Python syntax errors or undefined names
flake8 . --exclude benchmark --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --exclude benchmark --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
build:
name: 🐋 Save docker image
runs-on: ubuntu-latest
needs: test
permissions:
contents: read
packages: write
#if: github.ref == 'refs/heads/master'
#if: github.ref_type == 'tag' && github.ref == 'refs/heads/master'
steps:
-
uses: actions/checkout@v3
-
name: Set up QEMU
uses: docker/setup-qemu-action@v2
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
-
name: Login to grcio
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
-
name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v4
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-${{ env.APPLICATION }}
flavor: |
latest=auto
tags: |
type=schedule
# branch event
type=ref,enable=true,priority=600,prefix=,suffix=,event=branch
# tag event
# type=ref,enable=true,priority=600,prefix=,suffix=,event=tag
# pull request event
type=ref,enable=true,priority=600,prefix=pr-,suffix=,event=pr
# push tag version of tagged branch
type=semver,pattern={{version}},event=tag
# set latest tag for master branch
type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'master') }}
-
name: Build and Push (latest)
uses: docker/build-push-action@v3
with:
target: prod
context: ${{ env.APPLICATION }}
platforms: linux/amd64
push: true
tags: ${{ steps.meta.outputs.tags }}
cache-from: type=gha
cache-to: type=gha,mode=max
labels: ${{ steps.meta.outputs.labels }}
# deploy:
# name: 🚀 Deploy
# if: github.ref == 'refs/heads/master'
# needs: [ check, build ]
# runs-on: ubuntu-latest
# steps:
# - name: Sleep for 30 seconds (to let the new image to be saved)
# run: sleep 30s
# shell: bash
# - name: Set the Kubernetes context
# uses: azure/k8s-set-context@v3
# with:
# method: service-account
# k8s-url: https://${{ secrets.KUBERNETES_URL }}
# k8s-secret: ${{ secrets.KUBERNETES_TOKEN }}
# - name: Checkout source code
# uses: actions/checkout@v3
# - name: Deploy to the Kubernetes cluster
# uses: azure/k8s-deploy@v4
# with:
# namespace: pavima
# action: deploy
# manifests: |
# deployments/faust.yaml
# images: |
# ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-${{ env.APPLICATION }}
# # try to solve Warning: Failed to get dockerfile path for image ghcr.io
# pull-images: false
# imagePullSecrets: |
# ghcr-login-secret