15 Commits

Author SHA1 Message Date
Iain Sproat ccf80151b1 chore(README): Update README to include compute resources (#14) 2023-11-07 17:42:24 +00:00
Iain Sproat 87109a5b60 chore(deps): bump speckle-automate-github-action from 0.6.1 to 0.7.0 (#13)
* chore(deps): bump speckle-automate-github-action from 0.6.1 to 0.7.0

* Define the inputs
2023-11-06 18:12:00 +01:00
Iain Sproat 11d6caebcb Validate inputs are set (#12) 2023-10-16 11:08:42 +01:00
Gergő Jedlicska 4d68562f25 fix checking logic 2023-09-22 13:44:34 +02:00
Gergő Jedlicska 88894c4098 check if image already exists 2023-09-22 13:43:07 +02:00
Gergő Jedlicska e598aac514 fix string quote 2023-09-22 12:31:32 +02:00
Gergő Jedlicska 94ef717fde parsing automate host 2023-09-22 12:27:31 +02:00
Gergő Jedlicska d75eed9a05 fix release tag variable using env 2023-09-22 11:59:53 +02:00
Gergő Jedlicska 7339de2094 fix release tag variable again 2023-09-22 11:53:46 +02:00
Gergő Jedlicska a444b30ba0 fix release tag variable 2023-09-22 11:51:32 +02:00
Gergő Jedlicska 1d7dfb167a rearrange steps to stop publishing broken releases 2023-09-22 11:38:07 +02:00
Gergő Jedlicska 008772a47e Update to new speckle automate action
Signed-off-by: Gergő Jedlicska <57442769+gjedlicska@users.noreply.github.com>
2023-09-18 17:51:09 +02:00
Gergő Jedlicska 5d41ad720f Update action.yml
Signed-off-by: Gergő Jedlicska <57442769+gjedlicska@users.noreply.github.com>
2023-08-11 16:22:50 +02:00
Gergő Jedlicska a7568a91bd fix missing action id definition
Signed-off-by: Gergő Jedlicska <57442769+gjedlicska@users.noreply.github.com>
2023-08-11 16:19:11 +02:00
Gergő Jedlicska ef6a3b899f Update action.yml
Signed-off-by: Gergő Jedlicska <57442769+gjedlicska@users.noreply.github.com>
2023-08-11 16:06:43 +02:00
2 changed files with 82 additions and 9 deletions
+8
View File
@@ -50,6 +50,14 @@ Defaults to `./input-schema.json`
For example, if you are using Python, you might use `python3 main.py`. If you are using Node.js, you might use `node main.js`. If using bash shell, `bash main.sh` etc. etc.. Even if the command is defined within your Dockerfile (for examples, using the `CMD` or `ENTRYPOINT` statements), you must provide the command here in order for Speckle Automate to run the function.
#### `speckle_function_recommended_cpu_m`
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.
#### `speckle_function_recommended_memory_mi`
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.
#### `dockerfile_path`
Path to the Dockerfile to be used to build the Speckle Function.
+74 -9
View File
@@ -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
@@ -33,25 +39,84 @@ runs:
using: "composite"
steps:
- uses: actions/checkout@v3.5.3 # checkout the repository in which this GitHub Action is being used.
- name: Speckle Automate function version publisher
uses: specklesystems/speckle-automate-github-action@0.3.0
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_command: ${{ inputs.speckle_function_command }}
- 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: |
echo "Determining Release tag value"
if [[ ${GITHUB_REF_TYPE} == "tag" ]]
then
echo "Workflow triggered by a git tag"
RELEASE_TAG=${GITHUB_REF_NAME}
else
echo "Workflow triggered on a git branch"
RELEASE_TAG=$(git rev-parse --short ${GITHUB_SHA})
fi
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
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
with:
context: ${{ inputs.docker_context }}
file: ${{ inputs.dockerfile_path }}
tags: ${{ steps.register-speckle-function-version.outputs.speckle_automate_host }}/${{ inputs.speckle_function_id }}:${{ steps.register-speckle-function-version.outputs.version_id }}
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.7.0
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: ${{ 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 }}