Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 11 additions & 15 deletions .github/workflows/docker-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ on:
ts_version:
description: 'TS version to be used'
required: false
default: main
default: ""
env:
ORG: ${{inputs.ORG}}
TS_VERSION: ${{inputs.ts_version}}
BETA: 1 # prevents the latest tag from being pushed.
PRE_RELEASE: "true" # prevents the latest tag from being pushed.
jobs:

# Build multi-arch TimescaleDB images for both TSL and OSS code.
Expand Down Expand Up @@ -56,14 +56,12 @@ jobs:

- name: Build and push multi-platform Docker image for postgres
run: |
if [${{inputs.tag_latest}} == 'true']; then
export BETA=''
if [ "${{inputs.tag_latest}}" == "true" ]; then
export PRE_RELEASE=''
fi
make multi${{ matrix.oss }} ORG=$ORG PG_VER=pg${{ matrix.pg }} \
TS_VERSION=$TS_VERSION TAG_VERSION="$TAG_VERSION" PREV_EXTRA="${{ matrix.oss }}" BETA=$BETA
env:
TAG_VERSION: "${{inputs.ORG}}/postgres:${{inputs.version}}-pg${{ matrix.pg }}"
# Build bitnami images of TimscaleDB.
make multi${{ matrix.oss }} ORG="$ORG" PG_VER="pg${{ matrix.pg }}" \
${TS_VERSION:+TS_VERSION="$TS_VERSION"} PREV_EXTRA="${{ matrix.oss }}" PRE_RELEASE="$PRE_RELEASE"
# Build bitnami images of TimscaleDB.
# The images are built only for amd64, since it is the only supported architecture in the base image bitname/postgresql.
# The images are only built for TSL code.
timescaledb-bitnami:
Expand All @@ -85,10 +83,8 @@ jobs:

- name: Build and push amd64 Docker image for TimescaleDB bitnami
run: |
if [${{inputs.tag_latest}} == 'true']; then
export BETA=''
if [ "${{inputs.tag_latest}}" == "true" ]; then
export PRE_RELEASE=''
fi
make push ORG=$ORG PG_VER=pg${{ matrix.pg }} TS_VERSION=$TS_VERSION BETA=$BETA TAG_VERSION="$TAG_VERSION"
working-directory: bitnami
env:
TAG_VERSION: "${{inputs.ORG}}/timescaledb:${{inputs.version}}-pg${{ matrix.pg }}-bitnami"
make push ORG="$ORG" PG_VER="pg${{ matrix.pg }}" ${TS_VERSION:+TS_VERSION="$TS_VERSION"} PRE_RELEASE="$PRE_RELEASE"
working-directory: bitnami
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). For additional details, refer to our [versioning policy](./docs/version-policy.md).


## [Unreleased]
### Added
### Changed
### Deprecated
### Removed
### Fixed
### Security

## [Version] - YYYY-MM-DD
76 changes: 40 additions & 36 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,81 +4,85 @@ NAME=postgres
ORG=samagragovernance
PG_VER=pg15
PG_VER_NUMBER=$(shell echo $(PG_VER) | cut -c3-)
TS_VERSION=main
TS_VERSION=2.13.0
PG_CRON_VERSION=v1.6.0
PREV_TS_VERSION=$(shell wget --quiet -O - https://raw.githubusercontent.com/timescale/timescaledb/${TS_VERSION}/version.config | grep update_from_version | sed -e 's!update_from_version = !!')
PREV_TS_IMAGE="timescale/timescaledb:$(PREV_TS_VERSION)-pg$(PG_VER_NUMBER)$(PREV_EXTRA)"
PREV_IMAGE=$(shell if docker pull $(PREV_TS_IMAGE) >/dev/null; then echo "$(PREV_TS_IMAGE)"; else echo "postgres:$(PG_VER_NUMBER)-alpine"; fi )
# Beta releases should not be tagged as latest, so BETA is used to track.
BETA=$(findstring rc,$(TS_VERSION))
PLATFORM=linux/amd64,linux/arm64
# Retrieve the latest Git tag for the current commit
RELEASE_TAG = $(shell git describe --tags --abbrev=0 --exact-match HEAD 2>/dev/null)

WARPSQL_VERSION := $(if $(RELEASE_TAG),$(RELEASE_TAG),dev-$(shell git rev-parse HEAD))

# Pre releases should not be tagged as latest, so PRE_RELEASE is used to track.
PRE_RELEASE=$(shell echo "$(WARPSQL_VERSION)" | grep -Eo "alpha|beta|rc")

# PUSH_MULTI can be set to nothing for dry-run without pushing during multi-arch build
PUSH_MULTI=--push
TAG_VERSION=$(ORG)/$(NAME):$(TS_VERSION)-$(PG_VER)
TAG_LATEST=$(ORG)/$(NAME):latest-$(PG_VER)
TAG=-t $(TAG_VERSION) $(if $(BETA),,-t $(TAG_LATEST))
TAG_OSS=-t $(TAG_VERSION)-oss $(if $(BETA),,-t $(TAG_LATEST)-oss)
TAG_VERSION=$(ORG)/$(NAME):$(WARPSQL_VERSION)-pg$(PG_VER_NUMBER)
TAG_LATEST=$(ORG)/$(NAME):latest-pg$(PG_VER_NUMBER)
TAG=-t $(TAG_VERSION) $(if $(PRE_RELEASE),,-t $(TAG_LATEST))
TAG_OSS=-t $(TAG_VERSION)-oss $(if $(PRE_RELEASE),,-t $(TAG_LATEST)-oss)

DOCKER_BUILD_ARGS = --build-arg TS_VERSION=$(TS_VERSION) \
--build-arg PG_VERSION=$(PG_VER_NUMBER) \
--build-arg PREV_IMAGE=$(PREV_IMAGE) \
--build-arg PG_CRON_VERSION=$(PG_CRON_VERSION)


default: image

.multi_$(TS_VERSION)_$(PG_VER)_oss: Dockerfile
test -n "$(TS_VERSION)" # TS_VERSION
test -n "$(PREV_TS_VERSION)" # PREV_TS_VERSION
.multi_$(WARPSQL_VERSION)_$(PG_VER)_oss: Dockerfile
docker buildx create --platform $(PLATFORM) --name multibuild --use
docker buildx inspect multibuild --bootstrap
docker buildx build --platform $(PLATFORM) \
--build-arg TS_VERSION=$(TS_VERSION) \
--build-arg PG_CRON_VERSION=$(PG_CRON_VERSION) \
--build-arg PG_VERSION=$(PG_VER_NUMBER) \
--build-arg PREV_IMAGE=$(PREV_IMAGE) \
--build-arg OSS_ONLY=" -DAPACHE_ONLY=1" \
$(DOCKER_BUILD_ARGS) \
$(TAG_OSS) $(PUSH_MULTI) .
touch .multi_$(TS_VERSION)_$(PG_VER)_oss
touch .multi_$(WARPSQL_VERSION)_$(PG_VER)_oss
docker buildx rm multibuild

.multi_$(TS_VERSION)_$(PG_VER): Dockerfile
test -n "$(TS_VERSION)" # TS_VERSION
test -n "$(PREV_TS_VERSION)" # PREV_TS_VERSION
test -n "$(PREV_IMAGE)" # PREV_IMAGE
.multi_$(WARPSQL_VERSION)_$(PG_VER): Dockerfile
docker buildx create --platform $(PLATFORM) --name multibuild --use
docker buildx inspect multibuild --bootstrap
docker buildx build --platform $(PLATFORM) \
--build-arg TS_VERSION=$(TS_VERSION) \
--build-arg PG_CRON_VERSION=$(PG_CRON_VERSION) \
--build-arg PREV_IMAGE=$(PREV_IMAGE) \
--build-arg PG_VERSION=$(PG_VER_NUMBER) \
$(DOCKER_BUILD_ARGS) \
$(TAG) $(PUSH_MULTI) .
touch .multi_$(TS_VERSION)_$(PG_VER)
touch .multi_$(WARPSQL_VERSION)_$(PG_VER)
docker buildx rm multibuild

.build_$(TS_VERSION)_$(PG_VER)_oss: Dockerfile
docker build --build-arg OSS_ONLY=" -DAPACHE_ONLY=1" --build-arg PG_VERSION=$(PG_VER_NUMBER) --build-arg PG_CRON_VERSION=$(PG_CRON_VERSION) $(TAG_OSS) .
touch .build_$(TS_VERSION)_$(PG_VER)_oss
.build_$(WARPSQL_VERSION)_$(PG_VER)_oss: Dockerfile
docker build --build-arg OSS_ONLY=" -DAPACHE_ONLY=1" \
$(DOCKER_BUILD_ARGS) \
$(TAG_OSS) .
touch .build_$(WARPSQL_VERSION)_$(PG_VER)_oss

.build_$(TS_VERSION)_$(PG_VER): Dockerfile
docker build --build-arg PG_VERSION=$(PG_VER_NUMBER) --build-arg TS_VERSION=$(TS_VERSION) --build-arg PG_CRON_VERSION=$(PG_CRON_VERSION) --build-arg PREV_IMAGE=$(PREV_IMAGE) $(TAG) .
touch .build_$(TS_VERSION)_$(PG_VER)
.build_$(WARPSQL_VERSION)_$(PG_VER): Dockerfile
docker build \
$(DOCKER_BUILD_ARGS) \
$(TAG) .
touch .build_$(WARPSQL_VERSION)_$(PG_VER)

image: .build_$(TS_VERSION)_$(PG_VER)
image: .build_$(WARPSQL_VERSION)_$(PG_VER)

oss: .build_$(TS_VERSION)_$(PG_VER)_oss
oss: .build_$(WARPSQL_VERSION)_$(PG_VER)_oss

push: image
docker push $(TAG_VERSION)
if [ -z "$(BETA)" ]; then \
if [ -z "$(PRE_RELEASE)" ]; then \
docker push $(TAG_LATEST); \
fi

push-oss: oss
docker push $(TAG_VERSION)-oss
if [ -z "$(BETA)" ]; then \
if [ -z "$(PRE_RELEASE)" ]; then \
docker push $(TAG_LATEST)-oss; \
fi

multi: .multi_$(TS_VERSION)_$(PG_VER)
multi: .multi_$(WARPSQL_VERSION)_$(PG_VER)

multi-oss: .multi_$(TS_VERSION)_$(PG_VER)_oss
multi-oss: .multi_$(WARPSQL_VERSION)_$(PG_VER)_oss

all: multi multi-oss

Expand Down
35 changes: 23 additions & 12 deletions bitnami/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,30 +5,41 @@ ORG=timescaledev
PG_VER=pg15
PG_VER_NUMBER=$(shell echo $(PG_VER) | cut -c3-)
PG_CRON_VERSION=v1.6.0
TS_VERSION=main
TS_VERSION=2.13.0
PREV_TS_VERSION=$(shell wget --quiet -O - https://raw.githubusercontent.com/timescale/timescaledb/${TS_VERSION}/version.config | grep update_from_version | sed -e 's!update_from_version = !!')
PREV_TS_IMAGE="timescale/timescaledb:$(PREV_TS_VERSION)-pg$(PG_VER_NUMBER)-bitnami"
PREV_IMAGE=$(shell if docker pull $(PREV_TS_IMAGE) >/dev/null; then echo "$(PREV_TS_IMAGE)"; else echo "bitnami/postgresql:$(PG_VER_NUMBER)"; fi )

# Beta releases should not be tagged as latest, so BETA is used to track.
BETA=$(findstring rc,$(TS_VERSION))
TAG_VERSION=$(ORG)/$(NAME):$(TS_VERSION)-$(PG_VER)-bitnami
# Retrieve the latest Git tag for the current commit
RELEASE_TAG = $(shell git describe --tags --abbrev=0 --exact-match HEAD 2>/dev/null)

WARPSQL_VERSION := $(if $(RELEASE_TAG),$(RELEASE_TAG),dev-$(shell git rev-parse HEAD))

# Pre releases should not be tagged as latest, so PRE_RELEASE is used to track.
PRE_RELEASE=$(shell echo "$(WARPSQL_VERSION)" | grep -Eo "alpha|beta|rc")

TAG_VERSION=$(ORG)/$(NAME):$(WARPSQL_VERSION)-$(PG_VER)-bitnami
TAG_LATEST=$(ORG)/$(NAME):latest-$(PG_VER)-bitnami
TAG=-t $(TAG_VERSION) $(if $(BETA),,-t $(TAG_LATEST))
TAG=-t $(TAG_VERSION) $(if $(PRE_RELEASE),,-t $(TAG_LATEST))

DOCKER_BUILD_ARGS = --build-arg PG_VERSION=$(PG_VER_NUMBER) \
--build-arg TS_VERSION=$(TS_VERSION) \
--build-arg PREV_IMAGE=$(PREV_IMAGE) \
--build-arg PG_CRON_VERSION=$(PG_CRON_VERSION)

default: image

.build_$(TS_VERSION)_$(PG_VER): Dockerfile
test -n "$(TS_VERSION)" # TS_VERSION
test -n "$(PREV_TS_VERSION)" # PREV_TS_VERSION
docker build -f ./Dockerfile --build-arg PG_VERSION=$(PG_VER_NUMBER) --build-arg TS_VERSION=$(TS_VERSION) --build-arg PG_CRON_VERSION=$(PG_CRON_VERSION) --build-arg PREV_IMAGE=$(PREV_IMAGE) $(TAG) ..
touch .build_$(TS_VERSION)_$(PG_VER)-bitnami
.build_$(WARPSQL_VERSION)_$(PG_VER): Dockerfile
docker build -f ./Dockerfile \
$(DOCKER_BUILD_ARGS) \
$(TAG) ..
touch .build_$(WARPSQL_VERSION)_$(PG_VER)-bitnami

image: .build_$(TS_VERSION)_$(PG_VER)
image: .build_$(WARPSQL_VERSION)_$(PG_VER)

push: image
docker push $(TAG_VERSION)
if [ -z "$(BETA)" ]; then \
if [ -z "$(PRE_RELEASE)" ]; then \
docker push $(TAG_LATEST); \
fi

Expand Down
1 change: 1 addition & 0 deletions docs/version-policy.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Version Policy

WarpSQL adopts [Semantic Versioning(SemVer)](https://semver.org/) using the `MAJOR.MINOR.PATCH` format.
For a summary of changes in the WarpSQL refer to the [CHANGELOG](../CHANGELOG.md).

## WarpSQL versions

Expand Down