diff --git a/action.yaml b/action.yaml index 8ac1994..b74c218 100644 --- a/action.yaml +++ b/action.yaml @@ -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'