From 4f57f49ebe5395a4c3a8e20c84c5d881c9f98dfc Mon Sep 17 00:00:00 2001 From: Shyam Sunder Date: Wed, 15 Sep 2021 16:06:48 -0400 Subject: client+server: migrate to GitHub actions --- .github/workflows/build-containers.yml | 93 ++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 .github/workflows/build-containers.yml (limited to '.github/workflows/build-containers.yml') diff --git a/.github/workflows/build-containers.yml b/.github/workflows/build-containers.yml new file mode 100644 index 0000000..41baea7 --- /dev/null +++ b/.github/workflows/build-containers.yml @@ -0,0 +1,93 @@ +name: build-containers +on: [push] +jobs: + build-client: + runs-on: ubuntu-latest + steps: + - 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: Build container + run: > + docker build + --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 + + - name: Login to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + - name: Push containers + run: docker push -a szurubooru/client + + build-server: + runs-on: ubuntu-latest + steps: + - 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: Build container + run: > + docker build + --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 + + - name: Login to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + - name: Push containers + run: docker push -a szurubooru/server -- cgit v1.3 From c64983002ed727cb9692e5959ab3e9ed17564d68 Mon Sep 17 00:00:00 2001 From: Shyam Sunder Date: Thu, 16 Sep 2021 11:54:03 -0400 Subject: client+server/docker: build ARM images for Docker Hub --- .github/workflows/build-containers.yml | 44 +++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 17 deletions(-) (limited to '.github/workflows/build-containers.yml') diff --git a/.github/workflows/build-containers.yml b/.github/workflows/build-containers.yml index 41baea7..f808f65 100644 --- a/.github/workflows/build-containers.yml +++ b/.github/workflows/build-containers.yml @@ -4,6 +4,12 @@ jobs: build-client: 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: @@ -26,9 +32,17 @@ jobs: 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 build + docker buildx build --push + --platform linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6 --build-arg BUILD_INFO=${{ env.build_info }} --build-arg BUILD_DATE=${{ env.build_date }} --build-arg SOURCE_COMMIT=$GITHUB_SHA @@ -38,18 +52,15 @@ jobs: -t "szurubooru/client:${{ env.minor_tag }}" ./client + build-server: + 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: Push containers - run: docker push -a szurubooru/client - - build-server: - runs-on: ubuntu-latest - steps: - name: Checkout uses: actions/checkout@v2 with: @@ -72,9 +83,17 @@ jobs: 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 build + docker buildx build --push + --platform linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6 --build-arg BUILD_DATE=${{ env.build_date }} --build-arg SOURCE_COMMIT=$GITHUB_SHA --build-arg DOCKER_REPO=szurubooru/server @@ -82,12 +101,3 @@ jobs: -t "szurubooru/server:${{ env.major_tag }}" -t "szurubooru/server:${{ env.minor_tag }}" ./server - - - name: Login to Docker Hub - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - name: Push containers - run: docker push -a szurubooru/server -- cgit v1.3 From c3b81371d83c3daf31aeeb821d4865e232cd6b0d Mon Sep 17 00:00:00 2001 From: Shyam Sunder Date: Sun, 19 Sep 2021 12:03:32 -0400 Subject: client+server/docker: fix ARM build platform issue --- .github/workflows/build-containers.yml | 4 ++-- client/Dockerfile | 4 ++-- server/Dockerfile | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) (limited to '.github/workflows/build-containers.yml') diff --git a/.github/workflows/build-containers.yml b/.github/workflows/build-containers.yml index f808f65..518bf5b 100644 --- a/.github/workflows/build-containers.yml +++ b/.github/workflows/build-containers.yml @@ -42,7 +42,7 @@ jobs: - name: Build container run: > docker buildx build --push - --platform linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6 + --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 @@ -93,7 +93,7 @@ jobs: - name: Build container run: > docker buildx build --push - --platform linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6 + --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 diff --git a/client/Dockerfile b/client/Dockerfile index 2aeaf3b..3ab0016 100644 --- a/client/Dockerfile +++ b/client/Dockerfile @@ -1,4 +1,4 @@ -FROM node:lts as builder +FROM --platform=$BUILDPLATFORM node:lts as builder WORKDIR /opt/app COPY package.json package-lock.json ./ @@ -12,7 +12,7 @@ ARG CLIENT_BUILD_ARGS="" RUN BASE_URL="__BASEURL__" node build.js --gzip ${CLIENT_BUILD_ARGS} -FROM scratch as approot +FROM --platform=$BUILDPLATFORM scratch as approot COPY docker-start.sh / diff --git a/server/Dockerfile b/server/Dockerfile index 4beec1c..205c8e4 100644 --- a/server/Dockerfile +++ b/server/Dockerfile @@ -37,7 +37,7 @@ COPY ./ /opt/app/ RUN rm -rf /opt/app/szurubooru/tests -FROM prereqs as testing +FROM --platform=$BUILDPLATFORM prereqs as testing WORKDIR /opt/app RUN apk --no-cache add \ -- cgit v1.3 From d699979d359949789be27b7927b00cacefef1f21 Mon Sep 17 00:00:00 2001 From: Shyam Sunder Date: Thu, 23 Sep 2021 12:38:08 -0400 Subject: client+server: cleanup GitHub actions workflow names Also run unit test action on push --- .github/workflows/build-containers.yml | 4 +++- .github/workflows/run-unit-tests.yml | 24 ++++++++++++++++++------ .pre-commit-config.yaml | 11 ----------- 3 files changed, 21 insertions(+), 18 deletions(-) (limited to '.github/workflows/build-containers.yml') diff --git a/.github/workflows/build-containers.yml b/.github/workflows/build-containers.yml index 518bf5b..3dda368 100644 --- a/.github/workflows/build-containers.yml +++ b/.github/workflows/build-containers.yml @@ -1,7 +1,8 @@ -name: build-containers +name: Build Docker containers on: [push] jobs: build-client: + name: Build and push client/ Docker container runs-on: ubuntu-latest steps: - name: Login to Docker Hub @@ -53,6 +54,7 @@ jobs: ./client build-server: + name: Build and push server/ Docker container runs-on: ubuntu-latest steps: - name: Login to Docker Hub diff --git a/.github/workflows/run-unit-tests.yml b/.github/workflows/run-unit-tests.yml index 87ab4e8..9ea14ed 100644 --- a/.github/workflows/run-unit-tests.yml +++ b/.github/workflows/run-unit-tests.yml @@ -1,16 +1,28 @@ -name: run-unit-tests -on: [pull_request] +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: | - TAG=$(docker build --target testing -q ./server) - echo "image_tag=${TAG}" >> $GITHUB_ENV + run: > + docker buildx build --load + --platform linux/amd64 --target testing + -t test_container + ./server - name: Run unit tests - run: docker run --rm -t ${{ env.image_tag }} --color=no szurubooru/ + run: > + docker run --rm -t test_container + --color=no + --cov-report=term-missing:skip-covered + --cov=szurubooru + szurubooru/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 5053b6e..c793e75 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -83,17 +83,6 @@ repos: files: server/szurubooru/ exclude: server/szurubooru/migrations/ pass_filenames: false - stages: [push] - - - id: pytest-cov - name: pytest - entry: bash -c 'docker run --rm -t $(docker build --target testing -q server/) --cov-report=term-missing:skip-covered --cov=szurubooru szurubooru/' - language: system - types: [python] - files: server/szurubooru/ - exclude: server/szurubooru/migrations/ - pass_filenames: false - verbose: true stages: [manual] fail_fast: true -- cgit v1.3 From 1b9ce79f4e79745d7992eef14e3ab4104bd74fe4 Mon Sep 17 00:00:00 2001 From: Shyam Sunder Date: Thu, 31 Mar 2022 18:54:08 -0400 Subject: client+server: only trigger autobuild on master branch pushes --- .github/workflows/build-containers.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to '.github/workflows/build-containers.yml') diff --git a/.github/workflows/build-containers.yml b/.github/workflows/build-containers.yml index 3dda368..c688a5f 100644 --- a/.github/workflows/build-containers.yml +++ b/.github/workflows/build-containers.yml @@ -1,5 +1,8 @@ name: Build Docker containers -on: [push] +on: + push: + branches: + - master jobs: build-client: name: Build and push client/ Docker container -- cgit v1.3