diff --git a/.github/workflows/aws.yml b/.github/workflows/aws.yml new file mode 100644 index 0000000000..a9511a4a57 --- /dev/null +++ b/.github/workflows/aws.yml @@ -0,0 +1,85 @@ +name: Demo - Application deploymennt2 + +on: + workflow_dispatch: + inputs: + name: + description: 'lalala' + default: 'fii' + required: true + +env: + MY_PROD_SECRET: ${{ secrets.LE_SECRET }} # set this to your preferred AWS region, e.g. us-west-1 + + +permissions: + contents: read + +jobs: + build-api: + name: Build Backend app + runs-on: ubuntu-latest + + steps: + - name: build pims-api + run: echo "Builing app" + - name: store image + run: echo "storing app image" + + build-frontend: + name: Build Frontend + runs-on: ubuntu-latest + + steps: + - name: Build Frontend app + run: echo "bBuilding frontendapp" + - name: TEST Secrety + run: echo "storing frontend image" + + deploy-dev: + name: Deploy to Dev + runs-on: ubuntu-latest + needs: [build-api, build-frontend] + environment: dev + + steps: + - name: Deploying frontend to dev + run: echo "deploying to dev" + - name: Deploting backend to dev + run: echo "Deploying bakend to dev" + + deploy-test: + name: Deploy to Test + runs-on: ubuntu-latest + needs: [deploy-dev] + environment: test + + steps: + - name: Deploying frontend to test + run: echo "deploying to test" + - name: Deploting backend to test + run: echo "Deploying bakend to test" + + deploy-uat: + name: Deploy to UAT + runs-on: ubuntu-latest + needs: [deploy-test] + environment: uat + + steps: + - name: Deploying frontend to UAT + run: echo "deploying to uat" + - name: Deploting backend to uat + run: echo "Deploying bakend to uat" + + deploy-prod: + name: Deploy to Production + runs-on: ubuntu-latest + needs: [deploy-uat] + environment: production + + steps: + - name: Deploying frontend to Production + run: echo "deploying to prod" + - name: Deploting backend to prod + run: echo "Deploying bakend to prod" diff --git a/.github/workflows/demo-db-deploy.yml b/.github/workflows/demo-db-deploy.yml new file mode 100644 index 0000000000..b88e4a2da4 --- /dev/null +++ b/.github/workflows/demo-db-deploy.yml @@ -0,0 +1,48 @@ + +name: Deploy Database + +on: + workflow_call: + inputs: + domain: + description: 'Domain to deploy the database' + required: true + type: string + + +permissions: + contents: read + +jobs: + deploy-frontend: + name: Frontend + runs-on: ubuntu-latest + environment: ${{inputs.domain}} + + steps: + - name: Copy frontend + run: echo "coping frontend to ${{inputs.domain}}" + - name: Deploy frontend + run: echo "deploying frontend to ${{inputs.domain}}" + + deploy-backend: + name: Backend + runs-on: ubuntu-latest + environment: ${{inputs.domain}} + + steps: + - name: Copy backend + run: echo "coping backend to ${{inputs.domain}}" + - name: Deploy backend + run: echo "deploying backend to ${{inputs.domain}}" + + deploy-database: + name: Database + runs-on: ubuntu-latest + environment: ${{inputs.domain}} + + steps: + - name: Copy database + run: echo "coping database to ${{inputs.domain}}" + - name: Deploy database + run: echo "deploying database to ${{inputs.domain}}" diff --git a/.github/workflows/demo-deployment.yml b/.github/workflows/demo-deployment.yml new file mode 100644 index 0000000000..960e39d51b --- /dev/null +++ b/.github/workflows/demo-deployment.yml @@ -0,0 +1,102 @@ + +name: Demo - Application deployment + +on: + workflow_dispatch: + inputs: + name: + description: 'lalala' + default: 'fii' + required: true + +env: + MY_PROD_SECRET: ${{ secrets.LE_SECRET }} # set this to your preferred AWS region, e.g. us-west-1 + + +permissions: + contents: read + +jobs: + build-api: + name: Build Backend app + runs-on: ubuntu-latest + + steps: + - name: build pims-api + run: echo "Building app" + - name: store image + run: echo "storing app image" + + build-frontend: + name: Build Frontend + runs-on: ubuntu-latest + + steps: + - name: Build Frontend app + run: echo "bBuilding frontendapp" + - name: TEST Secrety + run: echo "storing frontend image" + + deploy-dev-gate: + name: Dev approval + runs-on: ubuntu-latest + environment: dev + steps: + - name: store image + run: echo "Approval for deployment to DEV" + needs: [build-api, build-frontend] + + deploy-dev: + name: Dev deploy + uses: ./.github/workflows/demo-db-deploy.yml + with: + domain: dev + needs: [deploy-dev-gate] + + deploy-test-gate: + name: Test approval + runs-on: ubuntu-latest + environment: test + steps: + - name: approval + run: echo "Approval for deployment to TEST" + needs: [deploy-dev] + + deploy-test: + name: Test deploy + uses: ./.github/workflows/demo-db-deploy.yml + with: + domain: test + needs: [deploy-test-gate] + + deploy-uat-gate: + name: UAT approval + runs-on: ubuntu-latest + environment: uat + steps: + - name: approval + run: echo "Approval for deployment to UAT" + needs: [deploy-test] + + deploy-uat: + name: UAT deploy + uses: ./.github/workflows/demo-db-deploy.yml + with: + domain: uat + needs: [deploy-uat-gate] + + deploy-prod-gate: + name: Production approval + runs-on: ubuntu-latest + environment: prod + steps: + - name: approval + run: echo "Approval for deployment to PRODUCTION" + needs: [deploy-uat] + + deploy-prod: + name: Production deploy + uses: ./.github/workflows/demo-db-deploy.yml + with: + domain: prod + needs: [deploy-prod-gate] diff --git a/.github/workflows/openshift.yml b/.github/workflows/openshift.yml new file mode 100644 index 0000000000..bbf0579770 --- /dev/null +++ b/.github/workflows/openshift.yml @@ -0,0 +1,202 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +# 💁 The OpenShift Starter workflow will: +# - Checkout your repository +# - Perform a container image build +# - Push the built image to the GitHub Container Registry (GHCR) +# - Log in to your OpenShift cluster +# - Create an OpenShift app from the image and expose it to the internet + +# â„šī¸ Configure your repository and the workflow with the following steps: +# 1. Have access to an OpenShift cluster. Refer to https://www.openshift.com/try +# 2. Create the OPENSHIFT_SERVER and OPENSHIFT_TOKEN repository secrets. Refer to: +# - https://github.com/redhat-actions/oc-login#readme +# - https://docs.github.com/en/actions/reference/encrypted-secrets +# - https://cli.github.com/manual/gh_secret_set +# 3. (Optional) Edit the top-level 'env' section as marked with 'đŸ–Šī¸' if the defaults are not suitable for your project. +# 4. (Optional) Edit the build-image step to build your project. +# The default build type is by using a Dockerfile at the root of the repository, +# but can be replaced with a different file, a source-to-image build, or a step-by-step buildah build. +# 5. Commit and push the workflow file to your default branch to trigger a workflow run. + +# 👋 Visit our GitHub organization at https://github.com/redhat-actions/ to see our actions and provide feedback. + +name: OpenShift + +env: + # đŸ–Šī¸ EDIT your repository secrets to log into your OpenShift cluster and set up the context. + # See https://github.com/redhat-actions/oc-login#readme for how to retrieve these values. + # To get a permanent token, refer to https://github.com/redhat-actions/oc-login/wiki/Using-a-Service-Account-for-GitHub-Actions + OPENSHIFT_SERVER: ${{ secrets.OPENSHIFT_SERVER }} + OPENSHIFT_TOKEN: ${{ secrets.OPENSHIFT_TOKEN }} + # đŸ–Šī¸ EDIT to set the kube context's namespace after login. Leave blank to use your user's default namespace. + OPENSHIFT_NAMESPACE: "" + + # đŸ–Šī¸ EDIT to set a name for your OpenShift app, or a default one will be generated below. + APP_NAME: "" + + # đŸ–Šī¸ EDIT with the port your application should be accessible on. + # If the container image exposes *exactly one* port, this can be left blank. + # Refer to the 'port' input of https://github.com/redhat-actions/oc-new-app + APP_PORT: "" + + # đŸ–Šī¸ EDIT to change the image registry settings. + # Registries such as GHCR, Quay.io, and Docker Hub are supported. + IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }} + IMAGE_REGISTRY_USER: ${{ github.actor }} + IMAGE_REGISTRY_PASSWORD: ${{ github.token }} + + # đŸ–Šī¸ EDIT to specify custom tags for the container image, or default tags will be generated below. + IMAGE_TAGS: "" + +on: + # https://docs.github.com/en/actions/reference/events-that-trigger-workflows + workflow_dispatch: + push: + # Edit to the branch(es) you want to build and deploy on each push. + branches: [ "dev" ] + +jobs: + # đŸ–Šī¸ EDIT if you want to run vulnerability check on your project before deploying + # the application. Please uncomment the below CRDA scan job and configure to run it in + # your workflow. For details about CRDA action visit https://github.com/redhat-actions/crda/blob/main/README.md + # + # TODO: Make sure to add 'CRDA Scan' starter workflow from the 'Actions' tab. + # For guide on adding new starter workflow visit https://docs.github.com/en/github-ae@latest/actions/using-workflows/using-starter-workflows + + #crda-scan: + # uses: ./.github/workflows/crda.yml + # secrets: + # CRDA_KEY: ${{ secrets.CRDA_KEY }} + # # SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} # Either use SNYK_TOKEN or CRDA_KEY + + openshift-ci-cd: + # đŸ–Šī¸ Uncomment this if you are using CRDA scan step above + # needs: crda-scan + name: Build and deploy to OpenShift + runs-on: ubuntu-20.04 + environment: production + + outputs: + ROUTE: ${{ steps.deploy-and-expose.outputs.route }} + SELECTOR: ${{ steps.deploy-and-expose.outputs.selector }} + + steps: + - name: Check for required secrets + uses: actions/github-script@v6 + with: + script: | + const secrets = { + OPENSHIFT_SERVER: `${{ secrets.OPENSHIFT_SERVER }}`, + OPENSHIFT_TOKEN: `${{ secrets.OPENSHIFT_TOKEN }}`, + }; + + const GHCR = "ghcr.io"; + if (`${{ env.IMAGE_REGISTRY }}`.startsWith(GHCR)) { + core.info(`Image registry is ${GHCR} - no registry password required`); + } + else { + core.info("A registry password is required"); + secrets["IMAGE_REGISTRY_PASSWORD"] = `${{ secrets.IMAGE_REGISTRY_PASSWORD }}`; + } + + const missingSecrets = Object.entries(secrets).filter(([ name, value ]) => { + if (value.length === 0) { + core.error(`Secret "${name}" is not set`); + return true; + } + core.info(`âœ”ī¸ Secret "${name}" is set`); + return false; + }); + + if (missingSecrets.length > 0) { + core.setFailed(`❌ At least one required secret is not set in the repository. \n` + + "You can add it using:\n" + + "GitHub UI: https://docs.github.com/en/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository \n" + + "GitHub CLI: https://cli.github.com/manual/gh_secret_set \n" + + "Also, refer to https://github.com/redhat-actions/oc-login#getting-started-with-the-action-or-see-example"); + } + else { + core.info(`✅ All the required secrets are set`); + } + + - name: Check out repository + uses: actions/checkout@v4 + + - name: Determine app name + if: env.APP_NAME == '' + run: | + echo "APP_NAME=$(basename $PWD)" | tee -a $GITHUB_ENV + + - name: Determine image tags + if: env.IMAGE_TAGS == '' + run: | + echo "IMAGE_TAGS=latest ${GITHUB_SHA::12}" | tee -a $GITHUB_ENV + + # https://github.com/redhat-actions/buildah-build#readme + - name: Build from Dockerfile + id: build-image + uses: redhat-actions/buildah-build@v2 + with: + image: ${{ env.APP_NAME }} + tags: ${{ env.IMAGE_TAGS }} + + # If you don't have a Dockerfile/Containerfile, refer to https://github.com/redhat-actions/buildah-build#scratch-build-inputs + # Or, perform a source-to-image build using https://github.com/redhat-actions/s2i-build + # Otherwise, point this to your Dockerfile/Containerfile relative to the repository root. + dockerfiles: | + ./Dockerfile + + # https://github.com/redhat-actions/push-to-registry#readme + - name: Push to registry + id: push-image + uses: redhat-actions/push-to-registry@v2 + with: + image: ${{ steps.build-image.outputs.image }} + tags: ${{ steps.build-image.outputs.tags }} + registry: ${{ env.IMAGE_REGISTRY }} + username: ${{ env.IMAGE_REGISTRY_USER }} + password: ${{ env.IMAGE_REGISTRY_PASSWORD }} + + # The path the image was pushed to is now stored in ${{ steps.push-image.outputs.registry-path }} + + - name: Install oc + uses: redhat-actions/openshift-tools-installer@v1 + with: + oc: 4 + + # https://github.com/redhat-actions/oc-login#readme + - name: Log in to OpenShift + uses: redhat-actions/oc-login@v1 + with: + openshift_server_url: ${{ env.OPENSHIFT_SERVER }} + openshift_token: ${{ env.OPENSHIFT_TOKEN }} + insecure_skip_tls_verify: true + namespace: ${{ env.OPENSHIFT_NAMESPACE }} + + # This step should create a deployment, service, and route to run your app and expose it to the internet. + # https://github.com/redhat-actions/oc-new-app#readme + - name: Create and expose app + id: deploy-and-expose + uses: redhat-actions/oc-new-app@v1 + with: + app_name: ${{ env.APP_NAME }} + image: ${{ steps.push-image.outputs.registry-path }} + namespace: ${{ env.OPENSHIFT_NAMESPACE }} + port: ${{ env.APP_PORT }} + + - name: Print application URL + env: + ROUTE: ${{ steps.deploy-and-expose.outputs.route }} + SELECTOR: ${{ steps.deploy-and-expose.outputs.selector }} + run: | + [[ -n ${{ env.ROUTE }} ]] || (echo "Determining application route failed in previous step"; exit 1) + echo + echo "======================== Your application is available at: ========================" + echo ${{ env.ROUTE }} + echo "===================================================================================" + echo + echo "Your app can be taken down with: \"oc delete all --selector='${{ env.SELECTOR }}'\"" diff --git a/source/backend/api/Pims.Api.csproj b/source/backend/api/Pims.Api.csproj index b310dc713b..40bfe92211 100644 --- a/source/backend/api/Pims.Api.csproj +++ b/source/backend/api/Pims.Api.csproj @@ -2,8 +2,8 @@ 0ef6255f-9ea0-49ec-8c65-c172304b4926 - 5.5.0-87.19 - 5.5.0-87.19 + 5.5.0-87.20 + 5.5.0-87.20 5.5.0.87 true 16BC0468-78F6-4C91-87DA-7403C919E646 diff --git a/source/frontend/package.json b/source/frontend/package.json index 84672578c4..11ba32b421 100644 --- a/source/frontend/package.json +++ b/source/frontend/package.json @@ -1,6 +1,6 @@ { "name": "frontend", - "version": "5.5.0-87.19", + "version": "5.5.0-87.20", "private": true, "dependencies": { "@bcgov/bc-sans": "1.0.1",