# Continuous Integration Workflow # This workflow builds and pushes Docker images to your private registry # Trigger: Manual dispatch only name: CI - Build and Push # Trigger configuration - manual dispatch only on: 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: Set up Docker Buildx (for advanced Docker builds) - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 # Step 3: Make CI script executable - name: Make CI script executable run: chmod +x script/ci.sh # Step 4: Build Docker image - name: Build Docker image run: ./script/ci.sh build # Step 5: Push Docker image to registry - name: Push Docker image run: ./script/ci.sh push # Step 6: 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