From cc6aa1d883f65de95e0fa42a3e7a29175660352c Mon Sep 17 00:00:00 2001 From: dotpep Date: Thu, 29 Feb 2024 20:55:18 +0600 Subject: [PATCH] Add github action job for pushing docker and CI testing build integrations --- .github/workflows/build-deploy.yml | 59 +++++++++++++++++++++++++++++- README.md | 1 + 2 files changed, 59 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-deploy.yml b/.github/workflows/build-deploy.yml index cee04ea..a84715c 100644 --- a/.github/workflows/build-deploy.yml +++ b/.github/workflows/build-deploy.yml @@ -3,7 +3,7 @@ name: Build and Deploy Code on: [push, pull_request] jobs: - my_first_job: + build: environment: name: testing env: @@ -34,15 +34,72 @@ jobs: steps: - name: Pulling Git Repo uses: actions/checkout@v4 + - name: Install Python version 3.10 uses: actions/setup-python@v5 with: python-version: '3.10' + - name: Update pip run: python -m pip install --upgrade pip - name: Install dependencies run: pip install -r requirements.txt + - name: Run tests with PyTest run: | pip install pytest pytest -v + + #- name: Login to Docker Hub + # uses: docker/login-action@v3 + # with: + # username: ${{ secrets.DOCKERHUB_USERNAME }} + # password: ${{ secrets.DOCKERHUB_TOKEN }} + #- name: Set up Docker Buildx + # uses: docker/setup-buildx-action@v3 + #- name: Build and push + # uses: docker/build-push-action@v5 + # with: + # context: . + # file: ./Dockerfile + # push: true + # tags: ${{ secrets.DOCKERHUB_USERNAME }}/social-media-fastapi:latest + # cache-from: type=local,src=/tmp/.buildx-cache + # cache-to: type=local,dest=/tmp/.buildx-cache + #- name: Image digest + # run: echo ${{ steps.docker_build.outputs.digest }} + + docker: + runs-on: ubuntu-20.04 + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Cache Docker layers + uses: actions/cache@v3 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx- + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: . + push: true + tags: ${{ secrets.DOCKERHUB_USERNAME }}/social-media-fastapi:latest + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max + - # Temp fix + # https://github.com/docker/build-push-action/issues/252 + # https://github.com/moby/buildkit/issues/1896 + name: Move cache + run: | + rm -rf /tmp/.buildx-cache + mv /tmp/.buildx-cache-new /tmp/.buildx-cache diff --git a/README.md b/README.md index de55688..42ba324 100644 --- a/README.md +++ b/README.md @@ -64,6 +64,7 @@ Endpoints: - [x] Conteinerize with Docker & Docker compose - [x] Configure Nginx and Uvicorn ASGI, Gunicorn workers - [ ] GitHub action, CI/CD Pipeline + - [ ] Use Poetry insead of pip in action steps - [ ] Apply SOLID principles, Best practices and Common patterns for Backend/API - [ ] Restructure project - [ ] Continue project, add new features, ideas like logging etc.