Skip to content

OrangeHRM DEV Image Build Workflow #14

OrangeHRM DEV Image Build Workflow

OrangeHRM DEV Image Build Workflow #14

name: OrangeHRM DEV Image Build Workflow
on:
push:
branches: [ php-8.3-ubuntu-24.04 ]
schedule:
- cron: '30 0 * * MON' # 0030 in UTC, 0600 in IST
workflow_dispatch:
env:
REGISTRY: hub.docker.com
DOCKER_HUB_REPO: "orangehrm/dev-environment"
LATEST_TAG_NAME: "ubuntu24.04-php8.3-latest"
UPSTREAM_REPO: "orangehrm/orangehrm-dev-environment"
UPSTREAM_BRANCH: "refs/heads/php-8.3-ubuntu-24.04"
OS_VERSION: "ubuntu24.04"
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Verify prerequisites
run: |
docker --version
docker compose version
composer --version
- name: Install test suite dependencies
run: composer install
- name: Build docker image
run: docker build -t ${{ env.DOCKER_HUB_REPO }}:${{ env.LATEST_TAG_NAME }} docker-image
- name: Spin up the container
run: |
docker compose up -d
docker ps -a
- name: Run unit test suite
run: |
sleep 10s
php vendor/bin/codecept run unit
- name: Get installed php version
run: echo "PHP_VERSION=${{ env.OS_VERSION }}-php$(docker exec $(docker ps --format '{{.Names}}' | head -n 1) php -r 'echo PHP_VERSION;')" >> $GITHUB_ENV
- name: Set TAG_NAME with date
run: |
CURRENT_DATE=$(date +'%d%m%y')
echo VERSION_TAG_NAME="${{ env.PHP_VERSION }}-${CURRENT_DATE}" >> $GITHUB_ENV
- name: Copy the report file
run: |
docker cp $(docker ps --format '{{.Names}}' | head -n 1):/var/log/installed_packages_detailed_report.txt installed_packages_detailed_report.txt
- name: New image with a version tag & latest tag
run: |
docker tag ${{ env.DOCKER_HUB_REPO }}:${{ env.LATEST_TAG_NAME }} ${{ env.DOCKER_HUB_REPO }}:${{ env.VERSION_TAG_NAME }}
- name: Docker hub login
if: ${{ github.repository == env.UPSTREAM_REPO && github.ref == env.UPSTREAM_BRANCH }}
run: docker login -u=${{ secrets.DOCKER_HUB_USERNAME }} -p=${{ secrets.DOCKER_HUB_PASSWORD }}
- name: Deploy changes to the docker hub with version tag
if: ${{ github.repository == env.UPSTREAM_REPO && github.ref == env.UPSTREAM_BRANCH }}
run: |
docker push ${{ env.DOCKER_HUB_REPO }}:${{ env.VERSION_TAG_NAME }}
echo 'SUCCESS - IMAGE WAS PUBLISHED ${{ env.DOCKER_HUB_REPO }}:${{ env.VERSION_TAG_NAME }}'
- name: Deploy changes to the docker hub with latest tag
if: ${{ github.repository == env.UPSTREAM_REPO && github.ref == env.UPSTREAM_BRANCH }}
run: |
docker push ${{ env.DOCKER_HUB_REPO }}:${{ env.LATEST_TAG_NAME }}
echo 'SUCCESS - IMAGE WAS PUBLISHED ${{ env.DOCKER_HUB_REPO }}:${{ env.LATEST_TAG_NAME }}'
- name: Docker hub logout
if: ${{ github.repository == env.UPSTREAM_REPO && github.ref == env.UPSTREAM_BRANCH }}
run: docker logout
- name: Send the email notification
if: always()
uses: dawidd6/action-send-mail@v2
with:
# mail server settings
server_address: smtp.gmail.com
server_port: 465
# user credentials
username: ${{ secrets.EMAIL_USERNAME }}
password: ${{ secrets.EMAIL_PASSWORD }}
# email subject
subject: GitHub Workflow of ${{ github.repository }}/php-8.3-ubuntu-24.04 - ${{ job.status }}
# email body as text
body: ${{ github.workflow }} status - ${{ job.status }}
# comma-separated string, send email to
to: ${{ vars.EMAIL_RECIPIENTS }}
# from email name
from: DockHRM Automator
attachments : installed_packages_detailed_report.txt