diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml new file mode 100644 index 0000000..393b080 --- /dev/null +++ b/.gitea/workflows/docker-build.yml @@ -0,0 +1,71 @@ +name: build container aoc +on: + push: + paths: + - 'Dockerfile' + - '*.py' + - skills/* + +defaults: + run: + working-directory: ./aoc + +env: + REGISTRY_HOST: ${{ vars.AOIT_GIT_URL }} + CONTAINER_TAG: ${{ gitea.repository }} + CONTAINER_VERSION: latest + CONTAINER_NAME: deploy_test-${{ gitea.run_id }} + GIT_REPO_NAME: ${{ gitea.event.repository.name }} + GIT_HOST: ${{ vars.AOIT_GIT_URL }} + +jobs: + build: + runs-on: test + steps: + - name: clone repo + working-directory: ${{ gitea.workspace }} + run: | + echo 'echo $TOKEN' > $GIT_ASKPASS + chmod +x $GIT_ASKPASS + git clone https://$GIT_HOST/$GIT_REPO + cd $GIT_REPO_NAME + git submodule update --init + env: + TOKEN: ${{ secrets.TOKEN_SVC_CI }} + GIT_ASKPASS: ${{ runner.temp }}/tmp.sh + GIT_REPO: ${{ gitea.repository }} + + - name: docker build + working-directory: ./${{ gitea.event.repository.name }} + run: docker build -t $GIT_HOST/$CONTAINER_TAG:$CONTAINER_VERSION . + + - name: test docker container comes up + run: docker run --rm -d --name $CONTAINER_NAME $GIT_HOST/$CONTAINER_TAG:$CONTAINER_VERSION + + - name: cleanup container + if: always() + run: docker kill $CONTAINER_NAME + + - name: upload container + run: | + docker login $GIT_HOST -u $REGISTRY_USER -p $REGISTRY_PASS + docker push $GIT_HOST/$CONTAINER_TAG:$CONTAINER_VERSION + docker logout + env: + REGISTRY_USER: ${{ secrets.REGISTRY_USER }} + REGISTRY_PASS: ${{ secrets.TOKEN_SVC_DOCKER }} + + - name: docker cleanup image and build cache + run: | + docker image rm $GIT_HOST/$CONTAINER_TAG:$CONTAINER_VERSION + docker builder prune -af + + - name: inform if fail + if: ${{ failure() }} + run: curl -u $NTFY_USER:$NTFY_PASS -H tags:warning -d "$NTFY_DATA" $NTFY_HOST/$NTFY_CHANNEL + env: + NTFY_HOST: ${{ vars.NTFY_HOST }} + NTFY_USER: ${{ vars.NTFY_USER }} + NTFY_PASS: ${{ secrets.NTFY_PASS }} + NTFY_DATA: deployment of ${{ gitea.repository }} fails + NTFY_CHANNEL: ${{ vars.NTFY_CHANNEL }} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..58ceb4e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,18 @@ +FROM python:3.14-slim + +LABEL Maintainer="anima" + +WORKDIR /data + +COPY main.py /data +COPY requirements.txt /data +RUN pip install -r requirements.txt +COPY skills/ skills/ +RUN for req in skills/*/requirements.txt; do \ + if [ -f "$req" ]; then \ + echo "Installing $req"; \ + pip install -r "$req"; \ + fi; \ + done + +CMD ["/usr/local/bin/python", "-m", "main"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..1065464 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,7 @@ +services: + aoc: + image: git.ao-it.net/aoit/aoc:latest + restart: always + volumes: + - ./files/aoc.conf:/data/aoc.conf + - ./files/aoc.db:/data/aoc.db \ No newline at end of file