Actualiser action.yaml

This commit is contained in:
2025-04-14 15:09:53 +02:00
parent 0f31b77cb0
commit 0bff3ef90b

View File

@@ -3,18 +3,46 @@ description: 'Description de l action'
author: 'Eric Coissac'
inputs:
image_name:
description: 'name of the image'
required: true
image_tags:
description: 'tags added to the image'
required: true
add_version_tag:
description: 'should I add a tag corresponding to the version of the packaged software'
required: false
default: true
build_command:
description: 'Command used to build the image (docker|podman)'
required: false
default: docker
tag_command:
description: 'Command used to tag the image (docker|podman)'
required: false
default: podman
registry_server:
description: 'Address of the image registry server'
required: false
default: "niepce.petite-maison-orange.fr"
registry_user:
description: 'User used for the connection to the image registry'
required: false
default: ${{ secrets.PMO_REGISTRY_USER }}
registry_password:
description: 'Password used for the connection to the image registry'
required: false
default: ${{ secrets.PMO_REGISTRY_PASSWORD }}
version_file:
description: 'Name of the file containing the version number'
required: false
default: 'software_version.txt'
check_server:
description: 'Address of the Healthchecks server'
required: true
required: false
default: 'https://haoma.petite-maison-orange.fr'
check_uuid:
description: 'Deuxième paramètre'
required: true
check_command:
description: 'Command to sen to the server can be nothing, start, log or fail'
required: false
default: 'stop'
check_message:
description: 'Message to log with the ping'
required: false
default: ''
debug:
@@ -29,64 +57,136 @@ runs:
steps:
- name: Load bash library
uses: https://gargoton.petite-maison-orange.fr/pmo-actions/bash-library@main
- name: Set debug mode
if: ${{ inputs.debug == 'true' }}
if: inputs.debug == 'true'
shell: bash
run: |
source "${{ github.action_path }}/../bashlib.sh"
export DEBUG="ON"
echo "DEBUG=ON" >> $GITEA_ENV
debug Debug switch on
- name: Ping the server
- name: Start the job
if: inputs.check_server != '' && inputs.check_uuid != ''
uses: https://gargoton.petite-maison-orange.fr/pmo-actions/healthchecks-ping@main
with:
check_server: ${{ inputs.check_server }}
check_uuid: ${{ inputs.check_uuid }}
check_command: start
check_message: 'Starting job for image ${{ inputs.image_name }}'
debug: ${{ inputs.debug }}
- name: Checkout and get version
id: get_version
uses: https://gargoton.petite-maison-orange.fr/pmo-actions/software-version@main
with:
git_checkout: true
version_file: ${{ inputs.version_file }}
debug: ${{ inputs.debug }}
- name: install podman
if: inputs.build_command == 'podman' || inputs.tag_command == 'podman'
shell: bash
run: |
source "${{ github.action_path }}/../bashlib.sh"
step "Install software" "podman"
check_command curl
SERVER="${{ inputs.check_server }}"
HEALTHPOINT="${{ inputs.check_server }}/ping/${{ inputs.check_uuid }}"
OPTIONS="-fsS -m 10 --retry 5"
MESSAGE="${{ inputs.check_message }}"
COMMAND="${{ inputs.check_command }}"
CURL_DATA=()
if [[ -n "$MESSAGE" ]]; then
CURL_DATA+=(--data-raw "$MESSAGE")
fi
case "$COMMAND" in
start|log|fail)
URL="${HEALTHPOINT}/$COMMAND"
;;
stop)
URL="${HEALTHPOINT}"
;;
*)
error Error "Invalid command: $COMMAND (must be start|log|fail|stop)"
;;
esac
curl_cmd=(
curl
$OPTIONS
"${CURL_DATA[@]}"
"$URL"
)
debug "Run command" "${curl_cmd[*]}"
result=$("${curl_cmd[@]}") \
&& success "Success" "$COMMAND ping sent to ${SERVER}" \
|| error "Error" "$COMMAND ping to ${SERVER} failed ${result}"
if [[ "$COMMAND" == "fail" ]] ; then
exit 1
if apt-get update && apt-get install -y podman ; then
success "Success" "Podman installation"
else
error "Podman installation" "Failed"
fi
exit 0
- name: Build image starting
if: inputs.check_server != '' && inputs.check_uuid != ''
uses: https://gargoton.petite-maison-orange.fr/pmo-actions/healthchecks-ping@main
with:
check_server: ${{ inputs.check_server }}
check_uuid: ${{ inputs.check_uuid }}
check_command: log
check_message: 'Buildind docker image for ${{ steps.get_version.outputs.version }}'
debug: ${{ inputs.debug }}
- name: Store tag version
shell: bash
run: |
echo "IMAGE_TAGS=${{ inputs.image_tags }}" >> $GITHUB_ENV
- name: Add PMO version tag
if: inputs.add_version_tag == 'true'
run: |
echo "IMAGE_TAGS=${{ env.IMAGE_TAGS }} pmo-${{ steps.get_version.outputs.version }}" >> $GITHUB_ENV
- name: Build and tag image
uses: https://gargoton.petite-maison-orange.fr/pmo-actions/build-image@main
with:
image_name: '${{ inputs.image_name }}'
image_tags: '${{ env.IMAGE_TAGS }}'
registry_server: '${{ inputs.registry_server }}'
build_command: '${{ inputs.build_command }}'
tag_command: '${{ inputs.tag_command }}'
debug: ${{ inputs.debug }}
- name: Canceled building
if: cancelled() && inputs.check_server != '' && inputs.check_uuid != ''
uses: https://gargoton.petite-maison-orange.fr/pmo-actions/healthchecks-ping@main
with:
check_server: ${{ inputs.check_server }}
check_uuid: ${{ inputs.check_uuid }}
check_command: fail
check_message: 'Building image cancelled for ${{ inputs.image_name }}'
debug: ${{ inputs.debug }}
- name: Build image failed
if: failure() && inputs.check_server != '' && inputs.check_uuid != ''
uses: https://gargoton.petite-maison-orange.fr/pmo-actions/healthchecks-ping@main
with:
check_server: ${{ inputs.check_server }}
check_uuid: ${{ inputs.check_uuid }}
check_command: fail
check_message: 'Failed to build docker image for ${{ inputs.image_name }}'
debug: ${{ inputs.debug }}
- name: Image built and tagged
if: inputs.check_server != '' && inputs.check_uuid != ''
uses: https://gargoton.petite-maison-orange.fr/pmo-actions/healthchecks-ping@main
with:
check_server: ${{ inputs.check_server }}
check_uuid: ${{ inputs.check_uuid }}
check_command: log
check_message: 'Docker image for ${{ inputs.image_name }} built and tagged'
debug: ${{ inputs.debug }}
- name: Push image to registry
uses: https://gargoton.petite-maison-orange.fr/pmo-actions/push-image@main
with:
registry_login: true
image_name: '${{ inputs.image_name }}'
image_tags: '${{ env.IMAGE_TAGS }}'
registry_server: '${{ inputs.registry_server }}'
registry_user: '${{ inputs.registry_user }}'
registry_password: '${{ inputs.registry_password }}'
push_command: '${{ inputs.tag_command }}'
debug: ${{ inputs.debug }}
- name: Push image failed
if: failure() && inputs.check_server != '' && inputs.check_uuid != ''
uses: https://gargoton.petite-maison-orange.fr/pmo-actions/healthchecks-ping@main
with:
check_server: ${{ inputs.check_server }}
check_uuid: ${{ inputs.check_uuid }}
check_command: fail
check_message: 'Failed to push docker image for ${{ inputs.image_name }}'
debug: ${{ inputs.debug }}
- name: End of the image building
if: inputs.check_server != '' && inputs.check_uuid != ''
uses: https://gargoton.petite-maison-orange.fr/pmo-actions/healthchecks-ping@main
with:
check_server: ${{ inputs.check_server }}
check_uuid: ${{ inputs.check_uuid }}
check_command: stop
check_message: 'Docker image for ${{ inputs.image_name }}: task done'