diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..13ba8b4 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,8 @@ +.git +*.yaml +*.md +docs +Dockerfile +scripts +tests +venv diff --git a/.github/workflows/publish-image.yml b/.github/workflows/publish-image.yml new file mode 100644 index 0000000..6b14650 --- /dev/null +++ b/.github/workflows/publish-image.yml @@ -0,0 +1,55 @@ +name: Docker image + +on: push + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + build-and-push-image: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Get the release channel + id: get_channel + shell: bash + run: | + if [[ "$GITHUB_REF" == 'refs/heads/main' ]]; then + echo ::set-output name=channel::"latest" + echo ::set-output name=version::${GITHUB_REF/refs\/heads\//}-${GITHUB_SHA::6} + elif [[ "$GITHUB_REF" == "refs/heads/"* ]]; then + echo ::set-output name=version::${GITHUB_REF/refs\/heads\//}-${GITHUB_SHA::6} + elif [[ "$GITHUB_REF" == "refs/tags/"* ]]; then + echo ::set-output name=channel::${GITHUB_REF/refs\/tags\//} + fi + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=raw,value=${{ steps.get_channel.outputs.channel }} + type=raw,value=${{ steps.get_channel.outputs.version }} + + - name: Log in to the Container registry + uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push Docker image + uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..72695dd --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +FROM python:3.10-slim + +ENV CHIADOG_CONFIG_DIR=/root/.chiadog/config.yaml +ENV TZ=UTC + +COPY . /chiadog +WORKDIR /chiadog +RUN python3 -m venv venv \ +&& . ./venv/bin/activate \ +&& pip3 install -r requirements.txt + +ENTRYPOINT ["/chiadog/entrypoint.sh"] diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 0000000..89fd644 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +cd /chiadog +. ./venv/bin/activate +python main.py --config ${CHIADOG_CONFIG_DIR}