Skip to content

HPCC-XXXX Add workflow test to check if default helm output changes #3

HPCC-XXXX Add workflow test to check if default helm output changes

HPCC-XXXX Add workflow test to check if default helm output changes #3

name: Docker smoketest build
on:
pull_request:
branches:
- "master"
- "candidate-*.x"
- "!candidate-8.2.*"
- "!candidate-8.0.*"
- "!candidate-7.12.*"
- "!candidate-7.10.*"
- "!candidate-7.8.*"
- "!candidate-7.6.*"
- "!candidate-7.4.*"
- "!candidate-7.2.*"
- "!candidate-7.0.*"
- "!candidate-6.*"
jobs:
check-skip:
# continue-on-error: true # Uncomment once integration is finished
runs-on: ubuntu-20.04
# Map a step output to a job output
outputs:
changed: ${{ steps.skip_check.outputs.dockerfiles || steps.skip_check.outputs.platform }}
steps:
- id: skip_check
uses: hpcc-systems/github-actions/changed-modules@main
with:
github_token: ${{ github.token }}
build-images:
needs: check-skip
if: ${{ needs.check-skip.outputs.changed }}
runs-on: ubuntu-20.04
steps:
- name: vars
id: vars
run: |
# echo ::set-output name=container_registry::ghcr.io
# echo ::set-output name=cr_user::${{ github.repository_owner }}
echo ::set-output name=container_registry::docker.io
echo ::set-output name=cr_user::hpccbuilds
echo ::set-output name=build_prbase_sha::${{ github.event.pull_request.base.sha }}
echo ::set-output name=build_prbase_label::${{ github.base_ref }}
echo ::set-output name=build_user::${{ github.actor }}
echo ::set-output name=build_type::RelWithDebInfo
echo ::set-output name=use_cppunit::1
echo ::set-output name=platform_build::smoketest-platform-build-vcpkg
- name: tracing
run: |
echo "Base ref = ${{ github.ref }}"
echo "Action = ${{ github.action }}"
echo "Event = ${{ github.event_name }}"
echo "Actor = ${{ github.actor }}"
echo "Ref = ${{ github.ref }}"
echo "base sha = ${{ github.event.pull_request.base.sha }}"
echo "Sha = ${{ github.sha }}"
echo "github.repository = ${{ github.repository }}"
echo "repository_owner = ${{ github.repository_owner }}"
echo "github.workspace = ${{ github.workspace }}"
echo "runner.workspace = ${{ runner.workspace }}"
echo "github.event.pull_request.head.repo.owner.login = ${{ github.event.pull_request.head.repo.owner.login }}"
echo "build_prbase_label = ${{ steps.vars.outputs.build_prbase_label }}"
echo "platform_build = ${{ steps.vars.outputs.platform_build }}"
- name: Checkout PR
uses: actions/checkout@v3
- name: Calculate vcpkg vars
id: vcpkg_vars
run: |
echo "base_ver=$(git submodule status vcpkg | cut -c2-9)" >> $GITHUB_OUTPUT
- name: tracing (vcpkg_vars)
run: |
echo "vcpkg_vars.base_ver = ${{ steps.vcpkg_vars.outputs.base_ver }}"
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v1
with:
driver: docker
- name: Check if PR-Base prebuilt
id: check-images
run: |
prbase_missing=$(docker manifest inspect ${{ steps.vars.outputs.container_registry }}/${{ steps.vars.outputs.cr_user }}/${{ steps.vars.outputs.platform_build }}:${{ steps.vars.outputs.build_prbase_label }}-${{ github.event.pull_request.base.sha }} > /dev/null ; echo $?)
echo prbase_missing=${prbase_missing}
if [[ "${prbase_missing}" -eq 1 ]]
then
echo "Current PR target branch image cannot be found, using latest"
prbase_missing=$(docker manifest inspect ${{ steps.vars.outputs.container_registry }}/${{ steps.vars.outputs.cr_user }}/${{ steps.vars.outputs.platform_build }}:${{ steps.vars.outputs.build_prbase_label }}-latest > /dev/null ; echo $?)
if [[ "${prbase_missing}" -eq 1 ]]
then
echo "Cannot find the 'latest' target branch image"
echo ::set-output name=prbase_missing::${prbase_missing}
fi
echo ::set-output name=platform_prbase_ver::${{ steps.vars.outputs.build_prbase_label }}-latest
else
echo ::set-output name=platform_prbase_ver::${{ steps.vars.outputs.build_prbase_label }}-${{ github.event.pull_request.base.sha }}
fi
# Normal expectation is that the following step would normally be skipped
# NB: This is only for the case where the target branch image doesn't already exist.
# The build-containers-target-branch.yml action would normally have built/published this image,
# or they'll be a "latest" which will have been picked up by the check-images step.
- name: branch image
if: ${{ steps.check-images.outputs.prbase_missing == '1' }}
uses: docker/build-push-action@v2
with:
context: .
file: ./dockerfiles/platform-build/Dockerfile
builder: ${{ steps.buildx.outputs.name }}
tags: |
${{ steps.vars.outputs.container_registry }}/${{ steps.vars.outputs.cr_user }}/${{ steps.vars.outputs.platform_build }}:${{ steps.vars.outputs.build_prbase_label }}-${{ steps.vars.outputs.build_prbase_sha }}
${{ steps.vars.outputs.container_registry }}/${{ steps.vars.outputs.cr_user }}/${{ steps.vars.outputs.platform_build }}:${{ steps.vars.outputs.build_prbase_label }}-latest
build-args: |
CR_REPO=${{ steps.vars.outputs.container_registry }}
BASE_VER=${{ steps.vcpkg_vars.outputs.base_ver }}
BUILD_USER=${{ github.repository_owner }}
GITHUB_ACTOR=${{ github.actor }}
BUILD_TAG=${{ steps.vars.outputs.build_prbase_sha }}
BUILD_TYPE=${{ steps.vars.outputs.build_type }}
GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }}
USE_CPPUNIT=${{ steps.vars.outputs.use_cppunit }}
BUILD_THREADS=${{ steps.vars.outputs.build_threads }}
- name: PR image
uses: docker/build-push-action@v2
with:
context: .
file: ./dockerfiles/platform-build-incremental-container/Dockerfile
builder: ${{ steps.buildx.outputs.name }}
build-args: |
CR_USER=${{ steps.vars.outputs.cr_user }}
CR_REPO=${{ steps.vars.outputs.container_registry }}
PLATFORM_PRBASE_VER=${{ steps.check-images.outputs.platform_prbase_ver }}
GITHUB_REPO=${{ github.repository }}
GITHUB_PRREF=${{ github.ref }}
BUILD_THREADS=${{ steps.vars.outputs.build_threads }}