|
|
|
@@ -21,6 +21,12 @@ inputs:
|
|
|
|
|
speckle_function_command:
|
|
|
|
|
description: 'The command to run to execute the function in a runtime environment.'
|
|
|
|
|
required: true
|
|
|
|
|
speckle_function_recommended_cpu_m:
|
|
|
|
|
description: 'The recommended maximum CPU in millicores for the function. 1000 millicores = 1 CPU core. Defaults to 1000 millicores (1 CPU core). If the Function exceeds this limit, it will be throttled to run within the limit.'
|
|
|
|
|
required: false
|
|
|
|
|
speckle_function_recommended_memory_mi:
|
|
|
|
|
description: 'The recommended maximum memory in mebibytes for the function. 1024 mebibytes = 1 gibibyte. Defaults to 100 mebibytes. If the Function exceeds this limit, it will be terminated.'
|
|
|
|
|
required: false
|
|
|
|
|
dockerfile_path:
|
|
|
|
|
description: 'Path to the Dockerfile to be used to build the Speckle Function.'
|
|
|
|
|
required: false
|
|
|
|
@@ -32,7 +38,30 @@ inputs:
|
|
|
|
|
runs:
|
|
|
|
|
using: "composite"
|
|
|
|
|
steps:
|
|
|
|
|
- uses: actions/checkout@v3.5.3 # checkout the repository in which this GitHub Action is being used.
|
|
|
|
|
- uses: actions/checkout@v4 # checkout the repository in which this GitHub Action is being used.
|
|
|
|
|
- name: Validate inputs
|
|
|
|
|
shell: bash
|
|
|
|
|
run: |
|
|
|
|
|
if [ -z "${{ inputs.speckle_token }}" ]; then
|
|
|
|
|
echo "ERROR: speckle_token secret is required"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
if [ -z "${{ inputs.speckle_automate_url }}" ]; then
|
|
|
|
|
echo "ERROR: speckle_automate_url input value is required"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
if [ -z "${{ inputs.speckle_function_id }}" ]; then
|
|
|
|
|
echo "ERROR: speckle_function_id input value is required"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
if [ -z "${{ inputs.speckle_function_input_schema_file_path }}" ]; then
|
|
|
|
|
echo "ERROR: speckle_function_input_schema_file_path input value is required"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
if [ -z "${{ inputs.speckle_function_command }}" ]; then
|
|
|
|
|
echo "ERROR: speckle_function_command input value is required"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
- name: Set Version tag
|
|
|
|
|
shell: bash
|
|
|
|
|
run: |
|
|
|
|
@@ -50,26 +79,44 @@ runs:
|
|
|
|
|
echo "Setting the function's releaseTag to: ${RELEASE_TAG}"
|
|
|
|
|
echo "releaseTag=${RELEASE_TAG}" >> "$GITHUB_ENV"
|
|
|
|
|
- name: Log in to Speckle Automate Docker registry
|
|
|
|
|
uses: docker/login-action@v2.2.0
|
|
|
|
|
uses: docker/login-action@v3.0.0
|
|
|
|
|
with:
|
|
|
|
|
registry: ${{ inputs.speckle_automate_url }}
|
|
|
|
|
username: ${{ inputs.speckle_token }}
|
|
|
|
|
password: ${{ inputs.speckle_token }}
|
|
|
|
|
- name: Parse automate host
|
|
|
|
|
shell: bash
|
|
|
|
|
run: |
|
|
|
|
|
AUTOMATE_HOST=$(python -c 'from urllib.parse import urlparse; print(urlparse("${{ inputs.speckle_automate_url }}").netloc)')
|
|
|
|
|
echo "Parsed automate host: ${AUTOMATE_HOST}"
|
|
|
|
|
echo "automateHost=${AUTOMATE_HOST}" >>"$GITHUB_ENV"
|
|
|
|
|
- name: Ensure image doesn't exist in registry
|
|
|
|
|
shell: bash
|
|
|
|
|
run: |
|
|
|
|
|
set +e
|
|
|
|
|
docker manifest inspect ${{ env.automateHost }}/${{ inputs.speckle_function_id }}:${{ env.releaseTag }}
|
|
|
|
|
if [[ $? == 0 ]]
|
|
|
|
|
then
|
|
|
|
|
echo "Cannot override the existing release tag ${{ env.releaseTag }}. Please publish a new release!"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
- name: Build and push Docker image
|
|
|
|
|
uses: docker/build-push-action@v4.1.1
|
|
|
|
|
uses: docker/build-push-action@v5.0.0
|
|
|
|
|
with:
|
|
|
|
|
context: ${{ inputs.docker_context }}
|
|
|
|
|
file: ${{ inputs.dockerfile_path }}
|
|
|
|
|
tags: ${{ steps.register_speckle_function_version.outputs.speckle_automate_host }}/${{ inputs.speckle_function_id }}:$releaseTag
|
|
|
|
|
tags: ${{ env.automateHost }}/${{ inputs.speckle_function_id }}:${{ env.releaseTag }}
|
|
|
|
|
target: ''
|
|
|
|
|
push: true
|
|
|
|
|
- name: Speckle Automate function version publisher
|
|
|
|
|
uses: specklesystems/speckle-automate-github-action@0.6.0
|
|
|
|
|
uses: specklesystems/speckle-automate-github-action@0.7.1
|
|
|
|
|
id: register_speckle_function_version
|
|
|
|
|
with:
|
|
|
|
|
speckle_automate_url: ${{ inputs.speckle_automate_url }}
|
|
|
|
|
speckle_token: ${{ inputs.speckle_token }}
|
|
|
|
|
speckle_function_id: ${{ inputs.speckle_function_id }}
|
|
|
|
|
speckle_function_input_schema_file_path: ${{ inputs.speckle_function_input_schema_file_path }}
|
|
|
|
|
speckle_function_release_tag: ${{ releaseTag }}
|
|
|
|
|
speckle_function_release_tag: ${{ env.releaseTag }}
|
|
|
|
|
speckle_function_command: ${{ inputs.speckle_function_command }}
|
|
|
|
|
speckle_function_recommended_cpu_m: ${{ inputs.speckle_function_recommended_cpu_m }}
|
|
|
|
|
speckle_function_recommended_memory_mi: ${{ inputs.speckle_function_recommended_memory_mi }}
|
|
|
|
|