name: Build and Deploy Teams Planner Bot on: push: branches: - develop jobs: build-and-run: runs-on: ubuntu-latest steps: - name: Check out repository code uses: actions/checkout@v3 - name: Extract project name shell: bash run: echo "PROJECT_NAME=$(echo '${{ github.repository }}' | awk -F '/' '{print $2}')" >> $GITHUB_ENV - name: Create environment file run: | echo "MICROSOFT_APP_ID=${{ secrets.MICROSOFT_APP_ID }}" > .env echo "MICROSOFT_APP_PASSWORD=${{ secrets.MICROSOFT_APP_PASSWORD }}" >> .env echo "MICROSOFT_APP_TYPE=SingleTenant" >> .env echo "MICROSOFT_APP_TENANT_ID=${{ secrets.MICROSOFT_APP_TENANT_ID }}" >> .env echo "PORT=3978" >> .env echo "OAUTH_CONNECTION_NAME=GraphConnection" >> .env echo "GRAPH_TENANT_ID=${{ secrets.MICROSOFT_APP_TENANT_ID }}" >> .env echo "GRAPH_CLIENT_ID=${{ secrets.MICROSOFT_APP_ID }}" >> .env echo "GRAPH_CLIENT_SECRET=${{ secrets.MICROSOFT_APP_PASSWORD }}" >> .env echo "LLM_PROVIDER=gemini" >> .env echo "GEMINI_API_KEY=${{ secrets.GEMINI_API_KEY }}" >> .env echo "GEMINI_MODEL=gemini-3.1-flash-lite" >> .env - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Build Docker image run: docker build -t ${{ env.PROJECT_NAME }}:latest . - name: Stop and remove existing container run: | docker stop ${{ env.PROJECT_NAME }} || true docker rm ${{ env.PROJECT_NAME }} || true - name: Run Docker container run: | docker run -d -p 3978:3978 \ --env-file .env \ --name ${{ env.PROJECT_NAME }} \ --network npm_default \ --restart unless-stopped \ ${{ env.PROJECT_NAME }}:latest - name: Clean up environment file run: rm -f .env