diff --git a/.github/workflows/scheduled_weekly_build.yml b/.github/workflows/scheduled_weekly_build.yml new file mode 100644 index 0000000000000..09a7c44ab0688 --- /dev/null +++ b/.github/workflows/scheduled_weekly_build.yml @@ -0,0 +1,30 @@ +on: + + schedule: + - cron: '0 0 * * 2' # Midnight on every Tuesday + +name: Scheduled weekly build + +jobs: + build: + name: Create Release + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Get current date + run: echo "::set-output name=todays_date::$(date +'%Y-%m-%d')" + - name: Get latest tag + run: | + latest_tag_version_value=$(./scripts/find_latest_tag_version.sh) + echo "::set-output name=latest_tag_version::${latest_tag_version_value}" + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: superset-${{outputs.latest_tag_version.value}}-weekly-build-${{ outputs.todays_date.value }} + release_name: superset-${{outputs.latest_tag_version.value}}-weekly-build-${{ outputs.todays_date.value }} + draft: false + prerelease: false diff --git a/scripts/find_latest_tag_version.sh b/scripts/find_latest_tag_version.sh new file mode 100755 index 0000000000000..1115e72cd4a05 --- /dev/null +++ b/scripts/find_latest_tag_version.sh @@ -0,0 +1,49 @@ +#! /bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + + +get_latest_tag_list() { + echo git show-ref latest && git show --pretty=tformat:%d -s latest | grep tag: || echo 'not found' +} + +# look up the 'latest' tag on git +LATEST_TAG_LIST=$(get_latest_tag_list) + +## get all tags that use the same sha as the latest tag. split at comma. +IFS=$',' +LATEST_TAGS=($LATEST_TAG_LIST) + +## loop over those tags and only take action on the one that isn't tagged 'latest' +## that one will have the version number tag +for (( i=0; i<${#LATEST_TAGS[@]}; i++ )) +do + if [[ ${LATEST_TAGS[$i]} != *"latest"* ]] + then + ## extract just the version from this tag + LATEST_RELEASE_TAG=$(echo "${LATEST_TAGS[$i]}" | sed -E -e 's/tag:|\(|\)|[[:space:]]*//g') + + # check that this only contains a proper semantic version + if ! [[ ${LATEST_RELEASE_TAG} =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] + then + continue + fi + break + fi +done + +echo ${LATEST_RELEASE_TAG}