diff --git a/.github/workflows/deploy-on-demand.yml b/.github/workflows/deploy-on-demand.yml new file mode 100644 index 0000000..52c23e2 --- /dev/null +++ b/.github/workflows/deploy-on-demand.yml @@ -0,0 +1,114 @@ +name: OTA Portal Deploy - On Demand + +on: + workflow_dispatch: + inputs: + environment: + description: "Environment" + required: true + type: choice + options: + - dev + - stage + - preprod + +env: + SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }} + SLACK_CHANNEL: "#cloud-builds" + SLACK_FOOTER: "" + SLACK_USERNAME: GitHub Actions + SLACK_ICON: "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png" + TAG: ${{ github.sha }} + PROJECT: ota-admin-portal + REGISTRY: fiskercloud.azurecr.io + +jobs: + build: + runs-on: ubuntu-latest + outputs: + build-env: ${{ steps.set-env.outputs.ENVIRONMENT }} + steps: + - name: Slack Notification + uses: rtCamp/action-slack-notify@v2 + + - name: Checkout + uses: actions/checkout@v3 + + - name: Azure Login + uses: azure/login@v1 + with: + creds: ${{ secrets.AZURE_CREDENTIALS }} + + - name: Login to ACR + uses: docker/login-action@v2 + with: + registry: ${{ env.REGISTRY }} + username: ${{ secrets.AZURE_CLIENT_ID }} + password: ${{ secrets.AZURE_CLIENT_SECRET }} + + - name: Set Env + env: + ENV: ${{ inputs.environment }} + id: set-env + run: | + case ${ENV} in + dev) + ENVIRONMENT=dev;; + stage) + ENVIRONMENT=stg;; + preprod) + ENVIRONMENT=prd;; + *) + ENVIRONMENT=dev;; + esac + echo "ENVIRONMENT=${ENVIRONMENT}" >> $GITHUB_ENV + echo "ENVIRONMENT=${ENVIRONMENT}" >> $GITHUB_OUTPUT + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Build and push + uses: docker/build-push-action@v3 + with: + context: . + build-args: ENVIRONMENT=${{ env.ENVIRONMENT }} + push: true + tags: ${{ env.REGISTRY }}/${{ env.PROJECT }}:${{ env.TAG }}-${{ env.ENVIRONMENT }} + cache-from: type=gha + cache-to: type=gha,mode=max + + deploy: + needs: build + runs-on: [self-hosted, azure] + env: + ENVIRONMENT: ${{ needs.build.outputs.build-env }} + steps: + - name: Checkout + uses: actions/checkout@v3 + + - uses: rtCamp/action-slack-notify@v2 + env: + MSG_MINIMAL: true + SLACK_MESSAGE: "Deploying ${{ env.PROJECT }} to ${{ inputs.environment }}... :partydeploy:" + + - name: Deploy + run: |- + helm upgrade \ + --kube-context $ENVIRONMENT \ + --set image.registry=$REGISTRY \ + --set image.name=$PROJECT \ + --set image.tag=$TAG-$ENVIRONMENT \ + --wait -i -f k8s/values-$ENVIRONMENT.yaml $PROJECT k8s/ + + - name: Notify deploy + uses: rtCamp/action-slack-notify@v2 + env: + MSG_MINIMAL: true + SLACK_MESSAGE: "Successfully deployed ${{ env.PROJECT }} to ${{ inputs.environment }}! :gopher_party:" + + - name: Notify if failure + if: ${{ failure() }} + uses: rtCamp/action-slack-notify@v2 + env: + SLACK_COLOR: ${{ job.status }} + SLACK_MESSAGE: "Failed to deploy ${{ env.PROJECT }} to ${{ inputs.environment }}! :this-is-fine:" diff --git a/src/components/CANSelfServe/SelfServe/__snapshots__/index.test.jsx.snap b/src/components/CANSelfServe/SelfServe/__snapshots__/index.test.jsx.snap index 7c0453b..907fc20 100644 --- a/src/components/CANSelfServe/SelfServe/__snapshots__/index.test.jsx.snap +++ b/src/components/CANSelfServe/SelfServe/__snapshots__/index.test.jsx.snap @@ -338,58 +338,12 @@ exports[`Render Render 1`] = `
-
- -
-
- - ​ - -
- - -
-
+
{ const classes = useStyles(); @@ -72,27 +73,19 @@ const MainForm = ({ id }) => { setSelectedEndDate(value); }; - const handleSelectedItemsChange = (event) => { - const { value } = event.target; - if (value.some(item => item === "Select All")) { - setSelectAllCanSignals(true); - if (selectedCanSignals.length === canSignals.length) { - setSelectedCanSignals([]); - } else { - setSelectedCanSignals(canSignals.map(signal => signal.signal_name)); - } - } else { - setSelectAllCanSignals(false); - setSelectedCanSignals(value); - } - }; - const displayTimeAsGMT = (date) => { return gmtTimezone - ? date.toLocaleString("en-US", {timeZone: "Etc/GMT"}) + ? date.toLocaleString("en-US", { timeZone: "Etc/GMT" }) : date; } + useEffect(() => { + if (canSignals.length === selectedCanSignals.length) { + setSelectAllCanSignals(true); + } else { + setSelectAllCanSignals(false); + } + }, [canSignals, selectedCanSignals, setSelectAllCanSignals]); return (
@@ -175,36 +168,12 @@ const MainForm = ({ id }) => { - - Select CAN signals - - + signal.signal_name))} + onChange={setSelectedCanSignals} + />