Compare commits

...

3 Commits

Author SHA1 Message Date
Gabriele De Rosa a9fbe72fa4 Add PiWheels support 2021-10-17 15:28:01 +02:00
Gabriele De Rosa 64c1885fcf Publish on Docker Hub 2021-10-17 14:29:52 +02:00
Gabriele De Rosa 3bebcba5fc Use semver for docker versioning 2021-10-17 13:10:37 +02:00
2 changed files with 89 additions and 10 deletions

View File

@ -21,7 +21,8 @@ on:
env: env:
# Use docker.io for Docker Hub if empty # Use docker.io for Docker Hub if empty
REGISTRY: ghcr.io GITHUB_REGISTRY: ghcr.io
DOCKER_REGISTRY: docker.io
# github.repository as <account>/<repo> # github.repository as <account>/<repo>
IMAGE_NAME: ${{ github.repository }} IMAGE_NAME: ${{ github.repository }}
@ -30,6 +31,7 @@ jobs:
# Run tests. # Run tests.
test: test:
name: Test
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
@ -45,11 +47,12 @@ jobs:
fi fi
# Push image to GitHub Packages. # Push image to GitHub Packages.
push: push-to-github-packages:
# Ensure test job passes before pushing image. # Ensure test job passes before pushing image.
needs: test needs: test
name: Build & Push to GitHub Registry
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions: permissions:
contents: read contents: read
@ -67,11 +70,11 @@ jobs:
# Login against a Docker registry except on PR # Login against a Docker registry except on PR
# https://github.com/docker/login-action # https://github.com/docker/login-action
- name: Log into registry ${{ env.REGISTRY }} - name: Log into registry ${{ env.GITHUB_REGISTRY }}
if: github.event_name != 'pull_request' if: github.event_name != 'pull_request'
uses: docker/login-action@v1 uses: docker/login-action@v1
with: with:
registry: ${{ env.REGISTRY }} registry: ${{ env.GITHUB_REGISTRY }}
username: ${{ github.actor }} username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }} password: ${{ secrets.GITHUB_TOKEN }}
@ -81,7 +84,13 @@ jobs:
id: meta id: meta
uses: docker/metadata-action@v3 uses: docker/metadata-action@v3
with: with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} images: ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=ref,event=branch
type=semver,pattern={{version}}
type=semver,pattern={{major}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}.{{minor}}.{{patch}}
# Build and push Docker image with Buildx (don't push on PR) # Build and push Docker image with Buildx (don't push on PR)
# https://github.com/docker/build-push-action # https://github.com/docker/build-push-action
@ -93,3 +102,60 @@ jobs:
push: ${{ github.event_name != 'pull_request' }} push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }} tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }} labels: ${{ steps.meta.outputs.labels }}
# Push image to Docker Hub.
push-to-docker-hub:
# Ensure test job passes before pushing image.
needs: test
name: Build & Push to Docker Hub
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
# Login against a Docker registry except on PR
# https://github.com/docker/login-action
- name: Log into registry ${{ env.DOCKER_REGISTRY }}
if: github.event_name != 'pull_request'
uses: docker/login-action@v1
with:
registry: ${{ env.DOCKER_REGISTRY }}
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
# Extract metadata (tags, labels) for Docker
# https://github.com/docker/metadata-action
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v3
with:
images: ${{ env.IMAGE_NAME }}
tags: |
type=ref,event=branch
type=semver,pattern={{version}}
type=semver,pattern={{major}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}.{{minor}}.{{patch}}
# Build and push Docker image with Buildx (don't push on PR)
# https://github.com/docker/build-push-action
- name: Build and push Docker image
uses: docker/build-push-action@v2
with:
context: .
platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

View File

@ -3,11 +3,24 @@ FROM python:3
# Set working space # Set working space
WORKDIR /usr/src/app WORKDIR /usr/src/app
# Install requirements # Install dependencies
RUN ln -snf /usr/share/zoneinfo/Europe/Rome /etc/localtime && \ RUN apt-get update \
apt-get update && apt-get install -y wkhtmltopdf # Prevent endless waiting
&& DEBIAN_FRONTEND=noninteractive \
# Set UTC as timezone
&& ln -snf /usr/share/zoneinfo/Europe/Rome /etc/localtime \
# Install APT packages
&& apt-get install -y --fix-missing wkhtmltopdf \
# Remove tmp files
&& apt-get clean && rm -rf /tmp/* /var/tmp/* \
# Add PiWheels support
&& echo "[global]\nextra-index-url=https://www.piwheels.org/simple" >> /etc/pip.conf \
# Upgrade PIP
&& python3 -m pip install --no-cache-dir --upgrade pip
# Copy and install requirements
COPY requirements.txt . COPY requirements.txt .
RUN pip install -r requirements.txt RUN python3 -m pip install -r requirements.txt
# Copy app # Copy app
COPY . . COPY . .
@ -16,4 +29,4 @@ COPY . .
RUN mkdir out RUN mkdir out
# Start the bot # Start the bot
CMD python -u bot.py CMD python3 -u bot.py