diff --git a/.github/workflows/docker-backend.yaml b/.github/workflows/docker-backend.yaml new file mode 100644 index 00000000..027d8e03 --- /dev/null +++ b/.github/workflows/docker-backend.yaml @@ -0,0 +1,16 @@ +name: (Backend) Publish Docker Image + +on: + push: + paths: + - "backend/**" + tags: + - v* + +jobs: + build: + uses: ./.github/workflows/docker-build.yaml + with: + image-name: backend + folder: backend + build-args: "" diff --git a/.github/workflows/docker-bot.yaml b/.github/workflows/docker-bot.yaml new file mode 100644 index 00000000..589499a0 --- /dev/null +++ b/.github/workflows/docker-bot.yaml @@ -0,0 +1,16 @@ +name: (Bot) Publish Docker Image + +on: + push: + paths: + - "bot/**" + tags: + - v* + +jobs: + build: + uses: ./.github/workflows/docker-build.yaml + with: + image-name: bot + folder: bot + build-args: "" diff --git a/.github/workflows/docker-build.yaml b/.github/workflows/docker-build.yaml new file mode 100644 index 00000000..9d5c0106 --- /dev/null +++ b/.github/workflows/docker-build.yaml @@ -0,0 +1,53 @@ +name: Build + +on: + workflow_call: + inputs: + folder: + required: true + type: string + image-name: + required: true + type: string + build-args: + required: false + type: string + +jobs: + build: + name: Build Images + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2.2.1 + - name: Login to container registry + uses: docker/login-action@v2.1.0 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Get base registry + run: | + echo "REGISTRY=ghcr.io/${GITHUB_REPOSITORY,,}" >> $GITHUB_ENV + - name: Set tag prefix + if: github.ref_name != 'main' + run: | + echo "TAG_PREFIX=${{ github.ref_name }}-" >> $GITHUB_ENV + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v4.1.1 + with: + images: ${{ env.REGISTRY }}/${{ inputs.image-name }} + tags: | + type=sha,prefix=${{ env.TAG_PREFIX }},format=short + - name: Build and push Docker image + uses: docker/build-push-action@v3.2.0 + with: + context: ${{ inputs.folder }} + build-args: ${{ inputs.build-args }} + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/bot/Dockerfile b/bot/Dockerfile new file mode 100644 index 00000000..ab215b5b --- /dev/null +++ b/bot/Dockerfile @@ -0,0 +1,7 @@ +FROM python:3.10-slim-bullseye +RUN mkdir /app +ADD requirements.txt /app/requirements.txt +WORKDIR /app +RUN pip install -r requirements.txt +ADD . /app +CMD ["python", "bot.py"]