Add CI Workflow

This commit is contained in:
Joris Bertomeu
2024-10-01 11:47:43 +02:00
parent 9aa7ba809d
commit 2a12a9977e
2 changed files with 76 additions and 13 deletions

60
workflows/ci.yaml Normal file
View File

@@ -0,0 +1,60 @@
name: ci
on:
push:
branches:
- main
env:
REGISTRY: ${{ vars.DOCKER_REGISTRY_URL }}
IMAGE_NAME: bertomlab/crawlflix-api
IMAGE_TAG: ${{ github.sha }}
CONTAINER_NAME: ${{ vars.CONTAINER_NAME }}
jobs:
Image build:
runs-on: ubuntu-latest
steps:
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
config-inline: |
[registry."${{ env.REGISTRY }}"]
http = true
- name: Login to Docker Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ vars.DOCKER_REGISTRY_USERNAME }}
password: ${{ secrets.DOCKER_REGISTRY_PASSWORD }}
- name: Build and push
uses: docker/build-push-action@v6
with:
platforms: linux/amd64
push: true
tags: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
- name: Inspect
run: |
docker buildx imagetools inspect ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}
Deployment:
runs-on: ubuntu-latest
steps:
- name: Deploy to server
uses: appleboy/ssh-action@master
with:
host: ${{ vars.SERVER_HOST }}
username: ${{ vars.SERVER_USERNAME }}
key: ${{ secrets.SERVER_SSH_KEY }}
envs: REGISTRY,IMAGE_NAME,IMAGE_TAG
script: |
docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}
docker stop ${{ env.CONTAINER_NAME }} || true
docker rm ${{ env.CONTAINER_NAME }} || true
docker run -d --name ${{ env.CONTAINER_NAME }} ${{ vars.CONTAINER_EXTRA }} -p ${{ vars.CONTAINER_EXTERNAL_PORT }}:${{ vars.CONTAINER_INTERNAL_PORT }} ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}