summaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/build-containers.yml108
-rw-r--r--.github/workflows/run-unit-tests.yml28
2 files changed, 136 insertions, 0 deletions
diff --git a/.github/workflows/build-containers.yml b/.github/workflows/build-containers.yml
new file mode 100644
index 0000000..c688a5f
--- /dev/null
+++ b/.github/workflows/build-containers.yml
@@ -0,0 +1,108 @@
+name: Build Docker containers
+on:
+ push:
+ branches:
+ - master
+jobs:
+ build-client:
+ name: Build and push client/ Docker container
+ runs-on: ubuntu-latest
+ steps:
+ - name: Login to Docker Hub
+ uses: docker/login-action@v1
+ with:
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
+ password: ${{ secrets.DOCKERHUB_PASSWORD }}
+
+ - name: Checkout
+ uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+
+ - name: Determine metadata
+ run: |
+ CLOSEST_VER="$(git describe --tags --abbrev=0 $GITHUB_SHA)"
+ CLOSEST_MAJOR_VER="$(echo ${CLOSEST_VER} | cut -d'.' -f1)"
+ CLOSEST_MINOR_VER="$(echo ${CLOSEST_VER} | cut -d'.' -f2)"
+ SHORT_COMMIT=$(echo $GITHUB_SHA | cut -c1-8)
+ BUILD_INFO="v${CLOSEST_VER}-${SHORT_COMMIT}"
+ BUILD_DATE="$(date -u +'%Y-%m-%dT%H:%M:%SZ')"
+
+ echo "major_tag=${CLOSEST_MAJOR_VER}" >> $GITHUB_ENV
+ echo "minor_tag=${CLOSEST_MAJOR_VER}.${CLOSEST_MINOR_VER}" >> $GITHUB_ENV
+ echo "build_info=${BUILD_INFO}" >> $GITHUB_ENV
+ echo "build_date=${BUILD_DATE}" >> $GITHUB_ENV
+
+ echo "Build Info: ${BUILD_INFO}"
+ echo "Build Date: ${BUILD_DATE}"
+
+ - name: Set up QEMU
+ uses: docker/setup-qemu-action@v1
+
+ - name: Set up Docker Buildx
+ id: buildx
+ uses: docker/setup-buildx-action@v1
+
+ - name: Build container
+ run: >
+ docker buildx build --push
+ --platform linux/amd64,linux/arm/v7,linux/arm64/v8
+ --build-arg BUILD_INFO=${{ env.build_info }}
+ --build-arg BUILD_DATE=${{ env.build_date }}
+ --build-arg SOURCE_COMMIT=$GITHUB_SHA
+ --build-arg DOCKER_REPO=szurubooru/client
+ -t "szurubooru/client:latest"
+ -t "szurubooru/client:${{ env.major_tag }}"
+ -t "szurubooru/client:${{ env.minor_tag }}"
+ ./client
+
+ build-server:
+ name: Build and push server/ Docker container
+ runs-on: ubuntu-latest
+ steps:
+ - name: Login to Docker Hub
+ uses: docker/login-action@v1
+ with:
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
+ password: ${{ secrets.DOCKERHUB_PASSWORD }}
+
+ - name: Checkout
+ uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+
+ - name: Determine metadata
+ run: |
+ CLOSEST_VER="$(git describe --tags --abbrev=0 $GITHUB_SHA)"
+ CLOSEST_MAJOR_VER="$(echo ${CLOSEST_VER} | cut -d'.' -f1)"
+ CLOSEST_MINOR_VER="$(echo ${CLOSEST_VER} | cut -d'.' -f2)"
+ SHORT_COMMIT=$(echo $GITHUB_SHA | cut -c1-8)
+ BUILD_INFO="v${CLOSEST_VER}-${SHORT_COMMIT}"
+ BUILD_DATE="$(date -u +'%Y-%m-%dT%H:%M:%SZ')"
+
+ echo "major_tag=${CLOSEST_MAJOR_VER}" >> $GITHUB_ENV
+ echo "minor_tag=${CLOSEST_MAJOR_VER}.${CLOSEST_MINOR_VER}" >> $GITHUB_ENV
+ echo "build_info=${BUILD_INFO}" >> $GITHUB_ENV
+ echo "build_date=${BUILD_DATE}" >> $GITHUB_ENV
+
+ echo "Build Info: ${BUILD_INFO}"
+ echo "Build Date: ${BUILD_DATE}"
+
+ - name: Set up QEMU
+ uses: docker/setup-qemu-action@v1
+
+ - name: Set up Docker Buildx
+ id: buildx
+ uses: docker/setup-buildx-action@v1
+
+ - name: Build container
+ run: >
+ docker buildx build --push
+ --platform linux/amd64,linux/arm/v7,linux/arm64/v8
+ --build-arg BUILD_DATE=${{ env.build_date }}
+ --build-arg SOURCE_COMMIT=$GITHUB_SHA
+ --build-arg DOCKER_REPO=szurubooru/server
+ -t "szurubooru/server:latest"
+ -t "szurubooru/server:${{ env.major_tag }}"
+ -t "szurubooru/server:${{ env.minor_tag }}"
+ ./server
diff --git a/.github/workflows/run-unit-tests.yml b/.github/workflows/run-unit-tests.yml
new file mode 100644
index 0000000..9ea14ed
--- /dev/null
+++ b/.github/workflows/run-unit-tests.yml
@@ -0,0 +1,28 @@
+name: Run unit tests
+on: [push, pull_request]
+jobs:
+ test-server:
+ name: Run pytest for server/
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - name: Set up Docker Buildx
+ id: buildx
+ uses: docker/setup-buildx-action@v1
+
+ - name: Build test container
+ run: >
+ docker buildx build --load
+ --platform linux/amd64 --target testing
+ -t test_container
+ ./server
+
+ - name: Run unit tests
+ run: >
+ docker run --rm -t test_container
+ --color=no
+ --cov-report=term-missing:skip-covered
+ --cov=szurubooru
+ szurubooru/