summaryrefslogtreecommitdiffstats
path: root/jjb/scripts/terraform_s3_docs_ship.sh
diff options
context:
space:
mode:
authorpmikus <pmikus@cisco.com>2021-09-16 11:07:49 +0000
committerPeter Mikus <pmikus@cisco.com>2021-09-23 11:09:38 +0000
commitdd2f87642dc2d94f56e9f7cbac6259899055468c (patch)
tree81800ac66f75e7bff732cf2c244221c84294dd9c /jjb/scripts/terraform_s3_docs_ship.sh
parent03dc9f4a3fdbca12ac1f0893081ffea39a7e0792 (diff)
Docs deploy via Terraform
+ This fixes also problem with content-type detection. Signed-off-by: pmikus <pmikus@cisco.com> Change-Id: I5fb89668a1792c4497fce1367279657c415d8a32
Diffstat (limited to 'jjb/scripts/terraform_s3_docs_ship.sh')
-rw-r--r--jjb/scripts/terraform_s3_docs_ship.sh91
1 files changed, 91 insertions, 0 deletions
diff --git a/jjb/scripts/terraform_s3_docs_ship.sh b/jjb/scripts/terraform_s3_docs_ship.sh
new file mode 100644
index 000000000..5989e3e9a
--- /dev/null
+++ b/jjb/scripts/terraform_s3_docs_ship.sh
@@ -0,0 +1,91 @@
+#!/bin/bash
+
+# Copyright (c) 2021 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+echo "---> terraform_s3_docs_ship.sh"
+
+set -exuo pipefail
+
+cat >"/w/workspace/main.tf" <<'END_OF_TERRAFORM_SCRIPT'
+provider "aws" {
+ region = "us-east-1"
+ profile = "default"
+ s3_force_path_style = false
+ skip_credentials_validation = true
+ skip_metadata_api_check = true
+ skip_requesting_account_id = true
+}
+
+locals {
+ mime_types = {
+ xml = "application/xml",
+ html = "text/html",
+ txt = "text/plain",
+ log = "text/plain",
+ css = "text/css",
+ md = "text/markdown",
+ rst = "text/x-rst",
+ csv = "text/csv",
+ svg = "image/svg+xml",
+ jpg = "image/jpeg",
+ png = "image/png",
+ gif = "image/gif",
+ js = "application/javascript",
+ pdf = "application/pdf"
+ json = "application/json",
+ otf = "font/otf",
+ ttf = "font/ttf",
+ woff = "font/woff",
+ woff2 = "font/woff2"
+ }
+}
+
+variable "workspace_dir" {
+ description = "Workspace base directory"
+ type = string
+}
+
+variable "file_match_pattern" {
+ description = "File matching pattern"
+ type = string
+ default = "**/*"
+}
+
+variable "bucket" {
+ description = "S3 bucket name"
+ type = string
+ default = "fdio-docs-s3-cloudfront-index"
+}
+
+variable "bucket_path" {
+ description = "S3 bucket path to key"
+ type = string
+}
+
+resource "aws_s3_bucket_object" "object" {
+ for_each = fileset(var.workspace_dir, var.file_match_pattern)
+
+ bucket = var.bucket
+ key = "${var.bucket_path}${each.value}"
+ source = "${var.workspace_dir}/${each.value}"
+
+ cache_control = "no-store,max-age=0,s-maxage=0"
+ etag = filemd5("${var.workspace_dir}/${each.value}")
+ content_type = lookup(
+ local.mime_types,
+ regex("\\.(?P<extension>[A-Za-z0-9]+)$", each.value).extension,
+ "application/octet-stream"
+ )
+}
+END_OF_TERRAFORM_SCRIPT