name: Deploy on: push: tags: ["v*"] workflow_dispatch: inputs: version: description: "Version to deploy (e.g., v1.2.3)" required: true type: string jobs: deploy-production: name: Deploy to Production runs-on: ubuntu-latest environment: name: production url: https://tercul.example.com steps: - name: Check out code uses: actions/checkout@v6 - name: Extract version id: version run: | if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then echo "VERSION=${{ inputs.version }}" >> $GITHUB_OUTPUT else echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT fi - name: Deploy to Docker Swarm env: SWARM_HOST: ${{ secrets.SWARM_HOST }} SWARM_SSH_KEY: ${{ secrets.SWARM_SSH_KEY }} IMAGE_TAG: ${{ steps.version.outputs.VERSION }} run: | # Uncomment and configure for actual Docker Swarm deployment # echo "$SWARM_SSH_KEY" > swarm_key # chmod 600 swarm_key # ssh -i swarm_key -o StrictHostKeyChecking=no \ # deploy@$SWARM_HOST \ # "docker service update \ # --image ghcr.io/${{ github.repository }}-frontend:${IMAGE_TAG} \ # tercul-frontend" # rm swarm_key echo "Deploying frontend version ${{ steps.version.outputs.VERSION }} to production" echo "Image: ghcr.io/${{ github.repository }}-frontend:${IMAGE_TAG}" - name: Deployment summary run: | echo "### Frontend Deployment Complete :rocket:" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "- **Version**: ${{ steps.version.outputs.VERSION }}" >> $GITHUB_STEP_SUMMARY echo "- **Image**: ghcr.io/${{ github.repository }}-frontend:${{ steps.version.outputs.VERSION }}" >> $GITHUB_STEP_SUMMARY echo "- **Environment**: Production" >> $GITHUB_STEP_SUMMARY echo "- **Deployed at**: $(date -u +'%Y-%m-%d %H:%M:%S UTC')" >> $GITHUB_STEP_SUMMARY