Release full Memgraph Platform #40
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release full Memgraph Platform | |
on: | |
workflow_dispatch: | |
inputs: | |
memgraph_platform_version: | |
description: "Memgraph Platform version." | |
required: true | |
memgraph_version: | |
description: "Memgraph version that will be integrated into platform." | |
required: true | |
force_release: | |
description: > | |
"Force the release despite the version already exists on DockerHub." | |
type: boolean | |
required: false | |
default: false | |
docker_repository_name: | |
description: "Dockerhub repository to upload to. (Mainly for testing)" | |
required: false | |
default: memgraph-platform | |
env: | |
DOCKER_ORGANIZATION_NAME: memgraph | |
DOCKER_REPOSITORY_NAME: ${{ github.event.inputs.docker_repository_name }} | |
# Reason for separating ARM and AMD is speed, buildx is extremely slow when | |
# building for ARM on AMD, and it is better to use native ARM machine to build | |
# that image | |
jobs: | |
release-memgraph-platform-amd: | |
runs-on: [self-hosted, Linux, X64, Diff] | |
steps: | |
- name: Checkout repository and submodules | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
submodules: recursive | |
token: ${{ secrets.PAT }} | |
- name: Get Memgraph Lab release version | |
run: | | |
cd lab | |
git fetch --all --tags | |
MEMGRAPH_LAB_VERSION=$(git rev-parse --verify HEAD | git tag --contains) | |
echo $MEMGRAPH_LAB_VERSION | |
echo "LAB_VERSION=${MEMGRAPH_LAB_VERSION:1}" >> $GITHUB_ENV | |
- name: Get Memgraph Mage release version | |
run: | | |
cd mage | |
git fetch --all --tags | |
MEMGRAPH_MAGE_VERSION=$(git rev-parse --verify HEAD | git tag --contains) | |
echo $MEMGRAPH_MAGE_VERSION | |
MEMGRAPH_MAGE_VERSION=${MEMGRAPH_MAGE_VERSION#v} | |
echo "MAGE_VERSION=${MEMGRAPH_MAGE_VERSION%%-*}" >> $GITHUB_ENV | |
- name: Set Memgraph Platform version | |
run: | | |
echo "PLATFORM_VERSION=${{ github.event.inputs.memgraph_platform_version }}-memgraph${{ github.event.inputs.memgraph_version }}-lab${{ env.LAB_VERSION }}-mage${{ env.MAGE_VERSION }}" >> $GITHUB_ENV | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v2 | |
- name: Set up Docker Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Available platforms | |
run: echo ${{ steps.buildx.outputs.platforms }} | |
- name: Log in to Docker Hub | |
uses: docker/login-action@v2 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Download memgraph binaries | |
run: | | |
curl -L https://download.memgraph.com/memgraph/v${{ github.event.inputs.memgraph_version }}/debian-11/memgraph_${{ github.event.inputs.memgraph_version }}-1_amd64.deb > memgraph-amd64.deb | |
- name: Check if specified version is already pushed | |
run: | | |
EXISTS=$(docker manifest inspect $DOCKER_ORGANIZATION_NAME/$DOCKER_REPOSITORY_NAME:${{ env.PLATFORM_VERSION }} > /dev/null; echo $?) | |
echo $EXISTS | |
if [[ ${EXISTS} -eq 0 ]]; then | |
echo The specified version has been already released to DockerHub! | |
if [[ ${{ github.event.inputs.force_release }} = true ]]; then | |
echo Forcing the release | |
else | |
echo Stopping the release | |
exit 1 | |
fi | |
else | |
echo All good the specified version has not been release to DockerHub | |
fi | |
- name: Build & push docker images | |
run: | | |
docker buildx build \ | |
--build-arg BINARY_NAME="memgraph-" \ | |
--build-arg NPM_PACKAGE_TOKEN="${{ secrets.PAT }}" \ | |
--platform linux/amd64 \ | |
--tag $DOCKER_ORGANIZATION_NAME/$DOCKER_REPOSITORY_NAME:${{ env.PLATFORM_VERSION }}-amd \ | |
--push . | |
release-memgraph-platform-arm: | |
runs-on: [self-hosted, ARM64] | |
steps: | |
- name: Checkout repository and submodules | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
submodules: recursive | |
token: ${{ secrets.PAT }} | |
- name: Get Memgraph Lab release version | |
run: | | |
cd lab | |
git fetch --all --tags | |
MEMGRAPH_LAB_VERSION=$(git rev-parse --verify HEAD | git tag --contains) | |
echo $MEMGRAPH_LAB_VERSION | |
echo "LAB_VERSION=${MEMGRAPH_LAB_VERSION:1}" >> $GITHUB_ENV | |
- name: Get Memgraph Mage release version | |
run: | | |
cd mage | |
git fetch --all --tags | |
MEMGRAPH_MAGE_VERSION=$(git rev-parse --verify HEAD | git tag --contains) | |
echo $MEMGRAPH_MAGE_VERSION | |
MEMGRAPH_MAGE_VERSION=${MEMGRAPH_MAGE_VERSION#v} | |
echo "MAGE_VERSION=${MEMGRAPH_MAGE_VERSION%%-*}" >> $GITHUB_ENV | |
- name: Set Memgraph Platform version | |
run: | | |
echo "PLATFORM_VERSION=${{ github.event.inputs.memgraph_platform_version }}-memgraph${{ github.event.inputs.memgraph_version }}-lab${{ env.LAB_VERSION }}-mage${{ env.MAGE_VERSION }}" >> $GITHUB_ENV | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v2 | |
- name: Set up Docker Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Available platforms | |
run: echo ${{ steps.buildx.outputs.platforms }} | |
- name: Log in to Docker Hub | |
run: | | |
security unlock-keychain -p ${{ secrets.HOST_PASSWORD }} | |
docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Download memgraph binaries | |
run: | | |
curl -L https://download.memgraph.com/memgraph/v${{ github.event.inputs.memgraph_version }}/debian-11-aarch64/memgraph_${{ github.event.inputs.memgraph_version }}-1_arm64.deb > memgraph-arm64.deb | |
- name: Check if specified version is already pushed | |
run: | | |
EXISTS=$(docker manifest inspect $DOCKER_ORGANIZATION_NAME/$DOCKER_REPOSITORY_NAME:${{ env.PLATFORM_VERSION }} > /dev/null; echo $?) | |
echo $EXISTS | |
if [[ ${EXISTS} -eq 0 ]]; then | |
echo The specified version has been already released to DockerHub! | |
if [[ ${{ github.event.inputs.force_release }} = true ]]; then | |
echo Forcing the release | |
else | |
echo Stopping the release | |
exit 1 | |
fi | |
else | |
echo All good the specified version has not been release to DockerHub | |
fi | |
- name: Build & push docker images | |
run: | | |
docker buildx build \ | |
--build-arg BINARY_NAME="memgraph-" \ | |
--build-arg NPM_PACKAGE_TOKEN="${{ secrets.PAT }}" \ | |
--platform linux/arm64 \ | |
--tag $DOCKER_ORGANIZATION_NAME/$DOCKER_REPOSITORY_NAME:${{ env.PLATFORM_VERSION }}-arm \ | |
--push . | |
merge-images: | |
runs-on: ubuntu-latest | |
needs: [release-memgraph-platform-arm, release-memgraph-platform-amd] | |
steps: | |
- name: Checkout repository and submodules | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
submodules: recursive | |
token: ${{ secrets.PAT }} | |
- name: Log in to Docker Hub | |
uses: docker/login-action@v2 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Get Memgraph Lab release version | |
run: | | |
cd lab | |
git fetch --all --tags | |
MEMGRAPH_LAB_VERSION=$(git rev-parse --verify HEAD | git tag --contains) | |
echo $MEMGRAPH_LAB_VERSION | |
echo "LAB_VERSION=${MEMGRAPH_LAB_VERSION:1}" >> $GITHUB_ENV | |
- name: Get Memgraph Mage release version | |
run: | | |
cd mage | |
git fetch --all --tags | |
MEMGRAPH_MAGE_VERSION=$(git rev-parse --verify HEAD | git tag --contains) | |
echo $MEMGRAPH_MAGE_VERSION | |
MEMGRAPH_MAGE_VERSION=${MEMGRAPH_MAGE_VERSION#v} | |
echo "MAGE_VERSION=${MEMGRAPH_MAGE_VERSION%%-*}" >> $GITHUB_ENV | |
- name: Set Memgraph Platform version | |
run: | | |
echo "PLATFORM_VERSION=${{ github.event.inputs.memgraph_platform_version }}-memgraph${{ github.event.inputs.memgraph_version }}-lab${{ env.LAB_VERSION }}-mage${{ env.MAGE_VERSION }}" >> $GITHUB_ENV | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v2 | |
- name: Set up Docker Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Build single image | |
run: | | |
docker buildx imagetools create \ | |
--tag $DOCKER_ORGANIZATION_NAME/$DOCKER_REPOSITORY_NAME:${{ env.PLATFORM_VERSION }} \ | |
--tag $DOCKER_ORGANIZATION_NAME/$DOCKER_REPOSITORY_NAME:latest \ | |
$DOCKER_ORGANIZATION_NAME/$DOCKER_REPOSITORY_NAME:${{ env.PLATFORM_VERSION }}-arm \ | |
$DOCKER_ORGANIZATION_NAME/$DOCKER_REPOSITORY_NAME:${{ env.PLATFORM_VERSION }}-amd | |
- name: Remove redundant ARM | |
run: | | |
./tools/remove_docker_tag.sh ${{ secrets.DOCKERHUB_USERNAME }} \ | |
${{ secrets.DOCKERHUB_TOKEN }} \ | |
$DOCKER_ORGANIZATION_NAME \ | |
$DOCKER_REPOSITORY_NAME \ | |
${{ env.PLATFORM_VERSION }}-arm | |
- name: Remove redundant AMD | |
run: | | |
./tools/remove_docker_tag.sh ${{ secrets.DOCKERHUB_USERNAME }} \ | |
${{ secrets.DOCKERHUB_TOKEN }} \ | |
$DOCKER_ORGANIZATION_NAME \ | |
$DOCKER_REPOSITORY_NAME \ | |
${{ env.PLATFORM_VERSION }}-amd |