18 Commits

Author SHA1 Message Date
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
Gergő Jedlicska 3ea9375091 Update action.yml
Signed-off-by: Gergő Jedlicska <57442769+gjedlicska@users.noreply.github.com>
2023-08-10 17:23:02 +02:00
Gergő Jedlicska 9992edd0e7 propagate function input path value
Signed-off-by: Gergő Jedlicska <57442769+gjedlicska@users.noreply.github.com>
2023-08-10 17:13:24 +02:00
Gergő Jedlicska 8f046e505b update schema handling to a file path based aproach
Signed-off-by: Gergő Jedlicska <57442769+gjedlicska@users.noreply.github.com>
2023-08-10 17:10:22 +02:00
Gergő Jedlicska 02a2e9a0fa update to new functions action
Signed-off-by: Gergő Jedlicska <57442769+gjedlicska@users.noreply.github.com>
2023-08-10 16:29:47 +02:00
Gergő Jedlicska e18f046ce0 update functions github action version
Signed-off-by: Gergő Jedlicska <57442769+gjedlicska@users.noreply.github.com>
2023-08-10 16:09:54 +02:00
+68 -12
View File
@@ -15,10 +15,9 @@ inputs:
speckle_function_id:
description: 'The unique identifier of the function. Go to Speckle Automate to register your Function and get its Identifier.'
required: true
speckle_function_input_schema:
description: 'JSON Schema defining the parameters required by the Function. These will be used to 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.'
speckle_function_input_schema_file_path:
description: 'File path containing JSON Schema of the parameters object required by the function. These will be used to 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.'
required: false
default: './input-schema.json'
speckle_function_command:
description: 'The command to run to execute the function in a runtime environment.'
required: true
@@ -34,25 +33,82 @@ 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.2.1
with:
speckle_automate_url: ${{ inputs.speckle_automate_url }}
speckle_token: ${{ inputs.speckle_token }}
speckle_function_id: ${{ inputs.speckle_function_id }}
speckle_function_input_schema: ${{ inputs.speckle_function_input_schema }}
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.6.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: ${{ env.releaseTag }}
speckle_function_command: ${{ inputs.speckle_function_command }}