diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml new file mode 100644 index 0000000..52f4db0 --- /dev/null +++ b/.gitea/workflows/build.yaml @@ -0,0 +1,104 @@ +name: Build & Publish Backend +on: + push: + paths: + - "api/**" + - "frontend/**" + - "telegram_bot/**" +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Check out the repo + uses: actions/checkout@v3 + + - name: Check changed directories + uses: https://github.com/dorny/paths-filter@v2 + id: changes + with: + filters: | + api: + - 'api/**' + frontend: + - 'frontend/**' + telegram_bot: + - 'telegram_bot/**' + + # Frontend + - name: "[Frontend] Docker meta" + if: steps.changes.outputs.frontend == 'true' + id: frontend-meta + uses: https://github.com/docker/metadata-action@v4 + with: + images: git.flokaiser.com/dhbw/aktienbot-frontend + tags: | + type=sha,enable=true,priority=100,prefix={{branch}}-,suffix=,format=short + type=raw,value=latest,enable={{is_default_branch}} + + # API + - name: "[API] Docker meta" + if: steps.changes.outputs.api == 'true' + id: api-meta + uses: https://github.com/docker/metadata-action@v4 + with: + images: git.flokaiser.com/dhbw/aktienbot-api + tags: | + type=sha,enable=true,priority=100,prefix={{branch}}-,suffix=,format=short + type=raw,value=latest,enable={{is_default_branch}} + + # Bot + - name: "[Bot] Docker meta" + if: steps.changes.outputs.telegram_bot == 'true' + id: bot-meta + uses: https://github.com/docker/metadata-action@v4 + with: + images: git.flokaiser.com/dhbw/aktienbot-bot + tags: | + type=sha,enable=true,priority=100,prefix={{branch}}-,suffix=,format=short + type=raw,value=latest,enable={{is_default_branch}} + + - name: Get get-docker.sh + run: curl -fsSL https://get.docker.com -o get-docker.sh + + - name: Install docker + run: sh get-docker.sh + + - name: Login to Registry + uses: docker/login-action@v2 + with: + registry: git.flokaiser.com + username: ${{ secrets.REGISTRY_USERNAME }} + password: ${{ secrets.REGISTRY_TOKEN }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + # Frontend + - name: "[Frontend] Build and push" + if: steps.changes.outputs.frontend == 'true' + uses: docker/build-push-action@v4 + with: + file: frontend/Dockerfile + platforms: linux/amd64 + push: true + tags: ${{ steps.frontend-meta.outputs.tags }} + + # API + - name: "[Frontend] Build and push" + if: steps.changes.outputs.api == 'true' + uses: docker/build-push-action@v4 + with: + file: api/Dockerfile + platforms: linux/amd64 + push: true + tags: ${{ steps.api-meta.outputs.tags }} + + # Bot + - name: "[Bot] Build and push" + if: steps.changes.outputs.bot == 'true' + uses: docker/build-push-action@v4 + with: + file: telegram_bot/Dockerfile + platforms: linux/amd64 + push: true + tags: ${{ steps.bot-meta.outputs.tags }} \ No newline at end of file diff --git a/.woodpecker.yml b/.woodpecker.yml deleted file mode 100644 index 201f398..0000000 --- a/.woodpecker.yml +++ /dev/null @@ -1,87 +0,0 @@ -pipeline: - generate_docker_tag: - image: golang - commands: - - echo -n "${CI_COMMIT_BRANCH//\//-}-${CI_COMMIT_SHA:0:8}, latest" > .tags - when: - path: [ "frontend/**", "telegram_bot/**", "api/**" ] - event: push - - - # -------------------------------------- API -------------------------------------- - build_api: - image: woodpeckerci/plugin-docker-buildx - settings: - repo: - from_secret: repo_api - username: - from_secret: username - password: - from_secret: password - registry: - from_secret: registry - dockerfile: api/Dockerfile - platforms: linux/amd64 - when: - path: "api/**" - event: push - - - # -------------------------------------- Bot -------------------------------------- - build_bot: - image: woodpeckerci/plugin-docker-buildx - settings: - repo: - from_secret: repo_bot - username: - from_secret: username - password: - from_secret: password - registry: - from_secret: registry - dockerfile: telegram_bot/Dockerfile - platforms: linux/amd64 - when: - path: "telegram_bot/**" - event: push - - - # -------------------------------------- Frontend -------------------------------------- - build_frontend: - image: woodpeckerci/plugin-docker-buildx - settings: - repo: - from_secret: repo_frontend - username: - from_secret: username - password: - from_secret: password - registry: - from_secret: registry - dockerfile: frontend/Dockerfile - platforms: linux/amd64 - when: - path: "frontend/**" - event: push - - - # -------------------------------------- Deploy -------------------------------------- - deploy: - image: appleboy/drone-ssh - network_mode: host - settings: - host: - from_secret: ssh_host - username: - from_secret: ssh_user - password: - from_secret: ssh_password - script: - - cd ~/docker-compose-files/telegram_aktien_bot - - docker-compose pull - - docker-compose --env-file ~/docker-compose-env/telegram_aktien_bot.env up -d - when: - path: [ "frontend/**", "telegram_bot/**", "api/**" ] - event: push - -branches: main diff --git a/telegram_bot/Dockerfile b/telegram_bot/Dockerfile index 3a780ec..97d6272 100644 --- a/telegram_bot/Dockerfile +++ b/telegram_bot/Dockerfile @@ -1,14 +1,18 @@ -FROM python:3.11-slim +FROM python:3.10-slim # Change the working directory to the root of the project WORKDIR /srv/flask_app +# Create venv +RUN python -m venv myvenv +ENV PATH="myvenv/bin:$PATH" + # Install the dependencies -COPY telegram_bot/requirements.txt /srv/flask_app/ +COPY requirements.txt /srv/flask_app/ RUN pip install -r requirements.txt --src /usr/local/src --no-warn-script-location # Copy the source code to the working directory -COPY telegram_bot /srv/flask_app +COPY . /srv/flask_app # Change file permissions RUN chmod +x ./deploy/start.sh