Compare commits
22 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2d8896e903 | |||
| 263c01beed | |||
| ef858630b7 | |||
| 496e37fe2e | |||
| 78dc2c527b | |||
| 1e5c0c6cf0 | |||
| 2b331cc43b | |||
| c39aec0850 | |||
| 2eacc79a5b | |||
| d9b35b8221 | |||
| 16a7c69d01 | |||
| efd9578585 | |||
| ccf80151b1 | |||
| 87109a5b60 | |||
| 11d6caebcb | |||
| 4d68562f25 | |||
| 88894c4098 | |||
| e598aac514 | |||
| 94ef717fde | |||
| d75eed9a05 | |||
| 7339de2094 | |||
| a444b30ba0 |
@@ -9,6 +9,6 @@ jobs:
|
||||
pre-commit:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-python@v4
|
||||
- uses: pre-commit/action@v3.0.0
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5
|
||||
- uses: pre-commit/action@v3.0.1
|
||||
|
||||
@@ -32,13 +32,7 @@ Please note that this is not a Speckle Account token, but a **Speckle Automate A
|
||||
|
||||
Your Speckle Token must have write permissions for the Speckle Function with this ID, otherwise the publish will fail.
|
||||
|
||||
#### `speckle_function_path`
|
||||
|
||||
The path to the Speckle Automate Function to publish. This path is relative to the root of the repository. If you provide a path to a directory, your Speckle Automate Function must be in a file named `specklefunction.yaml` within that directory.
|
||||
|
||||
Defaults to the root of the repository.
|
||||
|
||||
#### `speckle_function_input_schema`
|
||||
#### `speckle_function_input_schema_file_path`
|
||||
|
||||
The path to a file containing a JSON Schema. This JSON Schema defines the parameters required by the Function. The JSON Schema will be used to automatically create the User Interface displayed to users of your Function in Speckle Automate. Users will be able to provide their data to customise the Function.
|
||||
|
||||
@@ -50,6 +44,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.
|
||||
|
||||
+57
-6
@@ -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: |
|
||||
@@ -49,27 +78,49 @@ runs:
|
||||
|
||||
echo "Setting the function's releaseTag to: ${RELEASE_TAG}"
|
||||
echo "releaseTag=${RELEASE_TAG}" >> "$GITHUB_ENV"
|
||||
- name: Set up Docker Buildx # required to enable caching of docker build
|
||||
uses: docker/setup-buildx-action@v3
|
||||
- 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.1.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
|
||||
cache-from: type=registry,ref=${{ env.automateHost }}/${{ inputs.speckle_function_id }}:buildcache
|
||||
cache-to: type=registry,ref=${{ env.automateHost }}/${{ inputs.speckle_function_id }}:buildcache,mode=max
|
||||
- name: Speckle Automate function version publisher
|
||||
uses: specklesystems/speckle-automate-github-action@0.6.0
|
||||
uses: specklesystems/speckle-automate-github-action@0.9.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 }}
|
||||
|
||||
Reference in New Issue
Block a user