92 lines
3.9 KiB
YAML
92 lines
3.9 KiB
YAML
name: SDK version upgrade
|
|
|
|
on:
|
|
schedule:
|
|
- cron: "0 */12 * * *"
|
|
|
|
jobs:
|
|
check:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout repo
|
|
run: |
|
|
git config --global url."https://${{ secrets.GH_TOKEN }}:@github.com/".insteadOf "https://github.com/"
|
|
git clone https://github.com/actions-hub/kubectl .
|
|
|
|
- name: Check if new version exist
|
|
id: check
|
|
run: |
|
|
SDK_VERSION=$(curl --silent "https://api.github.com/repos/kubernetes/kubernetes/releases" | jq '.[] | select(.prerelease==false) | .tag_name' | sort -V -r | head -n 1 | tr -d '"')
|
|
LATEST_VERSION=$(curl --silent "https://api.github.com/repos/actions-hub/kubectl/releases/latest" | tac | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
|
|
DOCKER_VERSION=$(cat $GITHUB_WORKSPACE/Dockerfile | grep "ARG KUBE_VERSION=" | sed -E 's/ARG KUBE_VERSION=//' | tr -d '"')
|
|
|
|
echo "Provider tag: ${SDK_VERSION}"
|
|
echo "Current tag: ${LATEST_VERSION}"
|
|
echo "Docker tag: ${DOCKER_VERSION}"
|
|
|
|
if [ "$SDK_VERSION" != "$LATEST_VERSION" ]; then
|
|
if [ "$LATEST_VERSION" = "`echo -e "$SDK_VERSION\n$LATEST_VERSION" | sort -V | head -n1`" ]; then
|
|
if [ "$DOCKER_VERSION" == "$LATEST_VERSION" ]; then
|
|
echo "New version detected: $SDK_VERSION. Latest in this repo: $LATEST_VERSION. Updating..."
|
|
echo ::set-output name=newest::"yes"
|
|
echo "SDK_VERSION=${SDK_VERSION}" >> $GITHUB_ENV
|
|
echo "LATEST_VERSION=${LATEST_VERSION}" >> $GITHUB_ENV
|
|
else
|
|
echo ::error::"Tag version in Dockerfile ($DOCKER_VERSION) is not the same as the latest release ($LATEST_VERSION)."
|
|
exit 1
|
|
fi
|
|
else
|
|
echo ::set-output name=newest::"no"
|
|
fi
|
|
else
|
|
echo ::set-output name=newest::"no"
|
|
fi
|
|
|
|
- name: Check if version tag is semver and if docker hub has it
|
|
id: test
|
|
if: steps.check.outputs.newest == 'yes'
|
|
run: |
|
|
if [[ $SDK_VERSION =~ ^v[0-9]+(\.[0-9]+){2,3}$ ]]; then
|
|
echo "$SDK_VERSION it's semver"
|
|
else
|
|
echo ::error::"$SDK_VERSION it's not semver!"
|
|
exit 1
|
|
fi
|
|
echo "Checking if release with $SDK_VERSION tag is available"
|
|
status_code=$(curl --silent -I https://storage.googleapis.com/kubernetes-release/release/v1.24.0/bin/linux/amd64/kubectl | grep -E "^HTTP" | awk -F " " '{print $2}')
|
|
echo "Docker hub respond with $status_code"
|
|
if [ "$status_code" == "200" ] ; then
|
|
echo ::set-output name=exist::"yes"
|
|
echo "Newest version available"
|
|
else
|
|
echo ::set-output name=exist::"no"
|
|
echo "Docker hub returns $status_code"
|
|
fi
|
|
|
|
- name: Modify Dockerfile
|
|
id: modify
|
|
if: success() && steps.check.outputs.newest == 'yes' && steps.test.outputs.exist == 'yes'
|
|
run: |
|
|
git config --global url."https://${{ secrets.GH_TOKEN }}:@github.com/".insteadOf "https://github.com/"
|
|
git config --global user.name "Serhiy Mytrovtsiy"
|
|
git config --global user.email "mitrovtsiy@ukr.net"
|
|
git checkout master
|
|
FROM_LINE="ARG KUBE_VERSION=\"$LATEST_VERSION\""
|
|
TO_LINE="ARG KUBE_VERSION=\"$SDK_VERSION\""
|
|
sed -i "s/${FROM_LINE}/${TO_LINE}/" $GITHUB_WORKSPACE/Dockerfile
|
|
git add $GITHUB_WORKSPACE/Dockerfile
|
|
git commit -m "updated kubectl to $SDK_VERSION"
|
|
git push
|
|
echo ::set-output name=tag::$SDK_VERSION
|
|
|
|
- name: Create new release
|
|
if: success() && steps.modify.outputs.tag != '0'
|
|
uses: actions/create-release@v1
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
|
|
with:
|
|
tag_name: ${{ steps.modify.outputs.tag }}
|
|
release_name: ${{ steps.modify.outputs.tag }}
|
|
draft: false
|
|
prerelease: false
|