# Continuous Integration Workflow # This workflow builds and pushes Docker images to your private registry # Trigger: Push to dev branch or manual dispatch name: CI - Build and Push # Trigger configuration - automatic on dev push, manual dispatch available on: push: branches: - dev workflow_dispatch: inputs: image_tag: description: 'Docker image tag (e.g., latest, v1.0.0)' required: false default: 'latest' type: string # Environment variables available to all jobs env: CONTAINER_REGISTRY_URL: ${{ secrets.CONTAINER_REGISTRY_URL }} CONTAINER_REGISTRY_USERNAME: ${{ secrets.CONTAINER_REGISTRY_USERNAME }} CONTAINER_REGISTRY_NAMESPACE: ${{ secrets.CONTAINER_REGISTRY_NAMESPACE }} CONTAINER_REGISTRY_PASSWORD: ${{ secrets.CONTAINER_REGISTRY_PASSWORD }} CONTAINER_IMAGE_NAME: ${{ secrets.CONTAINER_IMAGE_NAME }} CONTAINER_IMAGE_TAG: ${{ inputs.image_tag || 'latest' }} jobs: build-and-push: name: Build and Push Docker Image runs-on: ubuntu-latest steps: # Step 1: Checkout code from repository - name: Checkout code uses: actions/checkout@v4 # Step 2: Make CI script executable - name: Make CI script executable run: chmod +x script/ci.sh # Step 3: Build Docker image - name: Build Docker image run: ./script/ci.sh build # Step 4: Push Docker image to registry - name: Push Docker image run: ./script/ci.sh push # Step 5: Output summary - name: Summary run: | echo "### :rocket: Build Complete!" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "**Image:** \`${CONTAINER_REGISTRY_URL}/${CONTAINER_REGISTRY_NAMESPACE}/${CONTAINER_IMAGE_NAME}:${CONTAINER_IMAGE_TAG}\`" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "**Registry:** ${CONTAINER_REGISTRY_URL}" >> $GITHUB_STEP_SUMMARY echo "**Tag:** ${CONTAINER_IMAGE_TAG}" >> $GITHUB_STEP_SUMMARY