name: candide on: push: branches: - master env: PROJECT_ID: ${{ secrets.GKE_PROJECT }} GKE_CLUSTER: pragma GKE_ZONE: us-central1-c DEPLOYMENT_NAME: candide NAMESPACE: candide REPOSITORY: pbot IMAGE: pbot jobs: build: name: Build & Deploy runs-on: ubuntu-latest permissions: contents: 'read' id-token: 'write' steps: - name: Checkout uses: actions/checkout@v4 with: submodules: recursive - name: 'Authenticate to Google Cloud' id: 'auth' uses: 'google-github-actions/auth@v1' with: credentials_json: '${{ secrets.GCP_CREDENTIALS }}' - name: Set up GKE credentials uses: google-github-actions/get-gke-credentials@v2 with: cluster_name: ${{ env.GKE_CLUSTER }} location: ${{ env.GKE_ZONE }} - name: Testing run: | kubectl get pods - name: Authenticate Docker run: | gcloud auth configure-docker - name: Build image run: |- docker build --tag "gcr.io/$PROJECT_ID/$REPOSITORY/$IMAGE:$GITHUB_SHA" . - name: Push image run: |- docker push "gcr.io/$PROJECT_ID/$REPOSITORY/$IMAGE:$GITHUB_SHA" - name: Get all changed non-plugin files id: changed-non-plugin-files uses: tj-actions/changed-files@v42 with: files_ignore: | lib/PBot/Plugin/**.pm - name: Get all changed plugin files id: changed-plugin-files uses: tj-actions/changed-files@v42 with: files: | lib/PBot/Plugin/**.pm - name: Hot-reload plugin files if: steps.changed-plugin-files.outputs.any_changed == 'true' && steps.changed-non-plugin-files.outputs.any_changed == 'false' env: ALL_CHANGED_FILES: ${{ steps.changed-plugin-files.outputs.all_changed_files }} run: | for file in ${ALL_CHANGED_FILES}; do echo "$file was changed" done - name: Deploy with restart if: steps.changed-non-plugin-files.outputs.any_changed == 'true' run: |- sed -i -e "s/PROJECT_ID/$PROJECT_ID/g" -e "s/REPOSITORY/$REPOSITORY/g" -e "s/IMAGE/$IMAGE/g" -e "s/GITHUB_SHA/$GITHUB_SHA/g" k8s/deployment.yaml kubectl apply -f k8s/deployment.yaml