From 429add9000d72911eecfd7af3541c7b4571ee558 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sun, 12 Sep 2021 21:17:56 +1000 Subject: [PATCH] Updates for docker workflows: - check_version_number script now handles stable and development codes --- .../{docker_build.yaml => docker_latest.yaml} | 3 ++ .github/workflows/docker_stable.yaml | 42 +++++++++++++++++++ .../{docker_publish.yaml => docker_tag.yaml} | 2 +- ci/check_version_number.py | 38 +++++++++++++++-- 4 files changed, 80 insertions(+), 5 deletions(-) rename .github/workflows/{docker_build.yaml => docker_latest.yaml} (90%) create mode 100644 .github/workflows/docker_stable.yaml rename .github/workflows/{docker_publish.yaml => docker_tag.yaml} (91%) diff --git a/.github/workflows/docker_build.yaml b/.github/workflows/docker_latest.yaml similarity index 90% rename from .github/workflows/docker_build.yaml rename to .github/workflows/docker_latest.yaml index ec8bdf7306..355afa5b87 100644 --- a/.github/workflows/docker_build.yaml +++ b/.github/workflows/docker_latest.yaml @@ -15,6 +15,9 @@ jobs: steps: - name: Checkout Code uses: actions/checkout@v2 + - name: Check version number + run: | + python3 ci/check_version_number.py --dev - name: Set up QEMU uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx diff --git a/.github/workflows/docker_stable.yaml b/.github/workflows/docker_stable.yaml new file mode 100644 index 0000000000..3d435e40da --- /dev/null +++ b/.github/workflows/docker_stable.yaml @@ -0,0 +1,42 @@ +# Build and push latest docker image on push to master branch + +name: Docker Build + +on: + push: + branches: + - 'stable' + +jobs: + + docker: + runs-on: ubuntu-latest + + steps: + - name: Checkout Code + uses: actions/checkout@v2 + - name: Check version number + run: | + python3 ci/check_version_number.py --release + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - name: Login to Dockerhub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + - name: Build and Push + uses: docker/build-push-action@v2 + with: + context: ./docker + platforms: linux/amd64,linux/arm64,linux/arm/v7 + push: true + target: production + build-args: + branch: stable + repository: inventree/inventree + tags: inventree/inventree:stable + - name: Image Digest + run: echo ${{ steps.docker_build.outputs.digest }} diff --git a/.github/workflows/docker_publish.yaml b/.github/workflows/docker_tag.yaml similarity index 91% rename from .github/workflows/docker_publish.yaml rename to .github/workflows/docker_tag.yaml index 1bb3f05f9c..b3b0c53d12 100644 --- a/.github/workflows/docker_publish.yaml +++ b/.github/workflows/docker_tag.yaml @@ -15,7 +15,7 @@ jobs: uses: actions/checkout@v2 - name: Check Release tag run: | - python3 ci/check_version_number.py ${{ github.event.release.tag_name }} + python3 ci/check_version_number.py --release --tag ${{ github.event.release.tag_name }} - name: Set up QEMU uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx diff --git a/ci/check_version_number.py b/ci/check_version_number.py index 55a42e2484..9b4d9f1a31 100644 --- a/ci/check_version_number.py +++ b/ci/check_version_number.py @@ -27,12 +27,42 @@ if __name__ == '__main__': version = results[0] parser = argparse.ArgumentParser() - parser.add_argument('tag', help='Version tag', action='store') + parser.add_argument('-t', '--tag', help='Compare against specified version tag', action='store') + parser.add_argument('-r', '--release', help='Check that this is a release version', action='store_true') + parser.add_argument('-d', '--dev', help='Check that this is a development version', action='store_true') args = parser.parse_args() - if not args.tag == version: - print(f"Release tag '{args.tag}' does not match INVENTREE_SW_VERSION '{version}'") - sys.exit(1) + if args.dev: + """ + Check that the current verrsion number matches the "development" format + e.g. "0.5 dev" + """ + + pattern = "^\d+(\.\d+)+ dev$" + + result = re.match(pattern, version) + + if result is None: + print(f"Version number '{version}' does not match required pattern for development branch") + sys.exit(1) + + elif args.release: + """ + Check that the current version number matches the "release" format + e.g. "0.5.1" + """ + + pattern = "^\d+(\.\d+)+$" + + result = re.match(pattern, version) + + if result is None: + print(f"Version number '{version}' does not match required pattern for stable branch") + + if args.tag: + if not args.tag == version: + print(f"Release tag '{args.tag}' does not match INVENTREE_SW_VERSION '{version}'") + sys.exit(1) sys.exit(0) \ No newline at end of file