We’ll be back soon
++ Sorry for the inconvenience but we’re performing some maintenance at the moment. We’ll be back + online shortly. +
+diff --git a/.github/workflows/publish-image-maintenance.yml b/.github/workflows/publish-image-maintenance.yml new file mode 100644 index 00000000..e9a5a442 --- /dev/null +++ b/.github/workflows/publish-image-maintenance.yml @@ -0,0 +1,55 @@ +name: Create and publish Keycloak maintenance page + +on: workflow_dispatch + +env: + GITHUB_REGISTRY: ghcr.io + IMAGE_NAME: bcgov/sso-maintenance + +jobs: + build-and-push-image: + runs-on: ubuntu-20.04 + permissions: + contents: read + packages: write + + steps: + - uses: actions/checkout@v3 + + - name: Log in to the GitHub Container registry + uses: docker/login-action@v2 + with: + registry: ${{ env.GITHUB_REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v4 + with: + images: ${{ env.GITHUB_REGISTRY }}/${{ env.IMAGE_NAME }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Cache Docker layers + uses: actions/cache@v2 + with: + path: /tmp/.buildx-mt-cache + key: ${{ runner.os }}-buildx-mt-${{ github.sha }} + restore-keys: ${{ runner.os }}-buildx-mt- + + - name: Build and push Docker image + uses: docker/build-push-action@v3 + with: + context: docker/maintenance-page + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=local,src=/tmp/.buildx-mt-cache + cache-to: type=local,dest=/tmp/.buildx-mt-cache-new + + - name: Move cache + run: | + rm -rf /tmp/.buildx-mt-cache + mv /tmp/.buildx-mt-cache-new /tmp/.buildx-mt-cache diff --git a/docker/maintenance-page/Dockerfile b/docker/maintenance-page/Dockerfile new file mode 100644 index 00000000..6db6e8df --- /dev/null +++ b/docker/maintenance-page/Dockerfile @@ -0,0 +1,6 @@ +FROM nginx:alpine + +COPY static /usr/share/nginx/html +COPY nginx.conf /etc/nginx/conf.d/default.conf + +EXPOSE 8080 diff --git a/docker/maintenance-page/README.md b/docker/maintenance-page/README.md new file mode 100644 index 00000000..fb7d2493 --- /dev/null +++ b/docker/maintenance-page/README.md @@ -0,0 +1,2 @@ +## Keycloak Maintenance Page App +Maintenance Page app to display when Keycloak service is offline. diff --git a/docker/maintenance-page/nginx.conf b/docker/maintenance-page/nginx.conf new file mode 100755 index 00000000..12c597a2 --- /dev/null +++ b/docker/maintenance-page/nginx.conf @@ -0,0 +1,25 @@ +server { + listen 8080; + server_name localhost; + + add_header cross-origin-embedder-policy "require-corp"; + add_header cross-origin-opener-policy "same-origin"; + add_header cross-origin-resource-policy "same-origin"; + add_header x-dns-prefetch-control "off"; + add_header expect-ct "max-age=0"; + add_header x-frame-options "SAMEORIGIN"; + add_header strict-transport-security "max-age=15552000; includeSubDomains"; + add_header x-download-options "noopen"; + add_header x-content-type-options "nosniff"; + add_header origin-agent-cluster "?1"; + add_header x-permitted-cross-domain-policies "none"; + add_header referrer-policy "strict-origin"; + add_header x-xss-protection "0"; + add_header permissions-policy "midi=(),sync-xhr=(),microphone=(),camera=(),magnetometer=(),gyroscope=(),fullscreen=(self),payment=()"; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + try_files $uri $uri.html $uri/index.html /index.html; + } +} diff --git a/docker/maintenance-page/static/img/logo-banner.svg b/docker/maintenance-page/static/img/logo-banner.svg new file mode 100644 index 00000000..c2e08ad7 --- /dev/null +++ b/docker/maintenance-page/static/img/logo-banner.svg @@ -0,0 +1,85 @@ + + + diff --git a/docker/maintenance-page/static/index.html b/docker/maintenance-page/static/index.html new file mode 100644 index 00000000..528a5b35 --- /dev/null +++ b/docker/maintenance-page/static/index.html @@ -0,0 +1,32 @@ + + +
+ + + ++ Sorry for the inconvenience but we’re performing some maintenance at the moment. We’ll be back + online shortly. +
+