diff --git a/.env.staging b/.env.staging index bce7ad63..bdf6ddc6 100644 --- a/.env.staging +++ b/.env.staging @@ -4,17 +4,14 @@ APP_VERSION=v2.2-staging APP_KEY=base64:O1XZDqK4H6+3GdrODgCaLr2l+OoWvgVhYr0GJ1KizW8= APP_DEBUG=true APP_URL=https://staging.erahn.com.my +API_URL=https://api-staging.erahn.com.my HTTP_PORT=8091 MYSQL_PUBLISH_PORT=3309 -API_URL=https://api-staging.erahn.com.my -API_URL_KOOP=https://api-staging.erahn.com.my -API_URL_PKB=https://api-staging.erahn.com.my -API_ARRAHNBID=http://lelong.test/api/ - LOG_CHANNEL=stack LOG_LEVEL=debug +LOGVIEWER_PASSWORD=test123 DB_CONNECTION=mysql DB_HOST=mysql diff --git a/.envy b/.envy deleted file mode 100644 index 5c53f303..00000000 --- a/.envy +++ /dev/null @@ -1,50 +0,0 @@ -APP_NAME=Laravel -APP_ENV=local -APP_KEY=base64:WRTHcFTq5YARKVdA8YDUzsh9Ue8vD63ivgZgXNNBiGo= -APP_DEBUG=true -APP_URL=http://ujrahkopkb.erahn.com.my -API_URL=http://apiujrah-kopkb.erahn.com.my -#API_ARRAHNBID=http://lelong.test/api/ - -LOG_CHANNEL=stack - -DB_CONNECTION=mysql -DB_HOST=127.0.0.1 -DB_PORT=3306 -DB_DATABASE=kaunter_erahn -DB_USERNAME=spider -DB_PASSWORD=G0dz!ll4 - -BROADCAST_DRIVER=pusher -CACHE_DRIVER=file -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -PUSHER_APP_ID=1132718 -PUSHER_APP_KEY=26b0ec2f297f94b7aa9b -PUSHER_APP_SECRET=421b61fb5a8ecce477a6 - -MAIL_MAILER=smtp -MAIL_HOST=smtp.mailtrap.io -MAIL_PORT=2525 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -MAIL_FROM_NAME="${APP_NAME}" - -AWS_ACCESS_KEY_ID= -AWS_SECRET_ACCESS_KEY= -AWS_DEFAULT_REGION=us-east-1 -AWS_BUCKET= - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" - -MYKAD_READER_PORT=8085 -MYKAD_READER_ENABLED_CAWANGAN='' # IF NO CAWANGAN STATED, ALL CAWANGAN IS ENABLED diff --git a/.gitea/workflows/deploy-staging.yml b/.gitea/workflows/deploy-staging.yml index ab79a87f..e20d6412 100644 --- a/.gitea/workflows/deploy-staging.yml +++ b/.gitea/workflows/deploy-staging.yml @@ -1,6 +1,9 @@ name: Deploy to Staging on: + push: + tags: + - "v*" workflow_dispatch: inputs: image_tag: @@ -18,10 +21,22 @@ jobs: runs-on: host steps: + - name: Resolve image tag + id: resolve + run: | + set -e + if [ "${{ gitea.event_name }}" = "workflow_dispatch" ]; then + IMAGE_TAG="${{ inputs.image_tag }}" + else + IMAGE_TAG="${{ gitea.ref_name }}" + fi + echo "IMAGE_TAG=${IMAGE_TAG}" >> "$GITHUB_OUTPUT" + echo "Deploying image tag: ${IMAGE_TAG}" + - name: Checkout repository uses: actions/checkout@v4 with: - ref: ${{ inputs.image_tag }} + ref: ${{ steps.resolve.outputs.IMAGE_TAG }} - name: Login to Docker registry run: | @@ -33,28 +48,35 @@ jobs: - name: Verify image exists in registry run: | set -e - IMAGE_TAG="${{ inputs.image_tag }}" + IMAGE_TAG="${{ steps.resolve.outputs.IMAGE_TAG }}" IMAGE="${APP_IMAGE}:${IMAGE_TAG}" echo "Checking if image exists: ${IMAGE}" - if ! docker manifest inspect "${IMAGE}" > /dev/null 2>&1; then - echo "ERROR: Image ${IMAGE} does not exist in registry!" - echo "Run the Build Docker Image workflow first." - exit 1 - fi - echo "✓ ${IMAGE} found" + # Tag pushes build in parallel — wait for the image to appear + for i in $(seq 1 30); do + if docker manifest inspect "${IMAGE}" > /dev/null 2>&1; then + echo "✓ ${IMAGE} found" + exit 0 + fi + echo "Image not ready yet (attempt ${i}/30), waiting 20s..." + sleep 20 + done + + echo "ERROR: Image ${IMAGE} does not exist in registry after waiting!" + echo "Run the Build Docker Image workflow first." + exit 1 - name: Pull Docker image run: | set -e - IMAGE_TAG="${{ inputs.image_tag }}" + IMAGE_TAG="${{ steps.resolve.outputs.IMAGE_TAG }}" docker pull "${APP_IMAGE}:${IMAGE_TAG}" echo "✓ Image pulled successfully" - name: Sync compose file and deploy run: | set -e - IMAGE_TAG="${{ inputs.image_tag }}" + IMAGE_TAG="${{ steps.resolve.outputs.IMAGE_TAG }}" mkdir -p "${DEPLOY_DIR}/docker/nginx" "${DEPLOY_DIR}/public" cp docker-compose.staging.yml "${DEPLOY_DIR}/docker-compose.yml" @@ -62,15 +84,12 @@ jobs: find "${DEPLOY_DIR}/public" -mindepth 1 -delete cp -R public/. "${DEPLOY_DIR}/public/" - if [ ! -f "${DEPLOY_DIR}/.env.staging" ]; then - if [ -f .env.staging ]; then - cp .env.staging "${DEPLOY_DIR}/.env.staging" - echo "Copied .env.staging from repo (first deploy). Edit ${DEPLOY_DIR}/.env.staging on the server if needed." - else - echo "ERROR: ${DEPLOY_DIR}/.env.staging is missing on the server" - exit 1 - fi + if [ ! -f .env.staging ]; then + echo "ERROR: .env.staging is missing in the repository" + exit 1 fi + cp .env.staging "${DEPLOY_DIR}/.env.staging" + echo "✓ Synced .env.staging from repo" cd "${DEPLOY_DIR}" diff --git a/env.docker.example/base.env b/env.docker.example/base.env deleted file mode 100644 index 6cb310f7..00000000 --- a/env.docker.example/base.env +++ /dev/null @@ -1,50 +0,0 @@ -APP_NAME=Laravel -APP_ENV=local -APP_KEY=base64:FFRogE6mJj8FaDSSHl/KpXpzqi2M+P4plxVSRgVM8JI= -APP_DEBUG=true -APP_URL=http://kaunterv2.localhost -API_URL=http://apiv2.localhost -API_ARRAHNBID=http://lelong.localhost/api/ - -LOG_CHANNEL=stack - -DB_CONNECTION=mysql -DB_HOST=database_zone2 -DB_PORT=3306 -DB_DATABASE=kaunterpkb -DB_USERNAME=root -DB_PASSWORD=secret - -BROADCAST_DRIVER=pusher -CACHE_DRIVER=file -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -PUSHER_APP_ID=1132718 -PUSHER_APP_KEY=26b0ec2f297f94b7aa9b -PUSHER_APP_SECRET=421b61fb5a8ecce477a6 - -MAIL_MAILER=smtp -MAIL_HOST=smtp.mailtrap.io -MAIL_PORT=2525 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -MAIL_FROM_NAME="${APP_NAME}" - -AWS_ACCESS_KEY_ID= -AWS_SECRET_ACCESS_KEY= -AWS_DEFAULT_REGION=us-east-1 -AWS_BUCKET= - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" - -MYKAD_READER_PORT=8085 -MYKAD_READER_ENABLED_CAWANGAN='' # IF NO CAWANGAN STATED, ALL CAWANGAN IS ENABLED diff --git a/env.docker.example/kgmk.env b/env.docker.example/kgmk.env deleted file mode 100644 index e56a06cc..00000000 --- a/env.docker.example/kgmk.env +++ /dev/null @@ -1,50 +0,0 @@ -APP_NAME=Laravel -APP_ENV=local -APP_KEY=base64:FFRogE6mJj8FaDSSHl/KpXpzqi2M+P4plxVSRgVM8JI= -APP_DEBUG=true -APP_URL=http://kaunterv2.localhost -API_URL=http://apiv2.kgmk.localhost -API_ARRAHNBID=http://lelong.localhost/api/ - -LOG_CHANNEL=stack - -DB_CONNECTION=mysql -DB_HOST=database_zone_franchise -DB_PORT=3306 -DB_DATABASE=kaunter_koopguru -DB_USERNAME=root -DB_PASSWORD=secret - -BROADCAST_DRIVER=pusher -CACHE_DRIVER=file -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -PUSHER_APP_ID=1132718 -PUSHER_APP_KEY=26b0ec2f297f94b7aa9b -PUSHER_APP_SECRET=421b61fb5a8ecce477a6 - -MAIL_MAILER=smtp -MAIL_HOST=smtp.mailtrap.io -MAIL_PORT=2525 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -MAIL_FROM_NAME="${APP_NAME}" - -AWS_ACCESS_KEY_ID= -AWS_SECRET_ACCESS_KEY= -AWS_DEFAULT_REGION=us-east-1 -AWS_BUCKET= - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" - -MYKAD_READER_PORT=8085 -MYKAD_READER_ENABLED_CAWANGAN='' # IF NO CAWANGAN STATED, ALL CAWANGAN IS ENABLED diff --git a/env.docker.example/krk.env b/env.docker.example/krk.env deleted file mode 100644 index c56d8d65..00000000 --- a/env.docker.example/krk.env +++ /dev/null @@ -1,50 +0,0 @@ -APP_NAME=Laravel -APP_ENV=local -APP_KEY=base64:FFRogE6mJj8FaDSSHl/KpXpzqi2M+P4plxVSRgVM8JI= -APP_DEBUG=true -APP_URL=http://kaunterv2.localhost -API_URL=http://apiv2.krk.localhost -API_ARRAHNBID=http://lelong.localhost/api/ - -LOG_CHANNEL=stack - -DB_CONNECTION=mysql -DB_HOST=database_zone_franchise -DB_PORT=3306 -DB_DATABASE=kaunter_krk -DB_USERNAME=root -DB_PASSWORD=secret - -BROADCAST_DRIVER=pusher -CACHE_DRIVER=file -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -PUSHER_APP_ID=1132718 -PUSHER_APP_KEY=26b0ec2f297f94b7aa9b -PUSHER_APP_SECRET=421b61fb5a8ecce477a6 - -MAIL_MAILER=smtp -MAIL_HOST=smtp.mailtrap.io -MAIL_PORT=2525 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -MAIL_FROM_NAME="${APP_NAME}" - -AWS_ACCESS_KEY_ID= -AWS_SECRET_ACCESS_KEY= -AWS_DEFAULT_REGION=us-east-1 -AWS_BUCKET= - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" - -MYKAD_READER_PORT=8085 -MYKAD_READER_ENABLED_CAWANGAN='' # IF NO CAWANGAN STATED, ALL CAWANGAN IS ENABLED