From b574c62aae2423ba78eb135fc024cc99fd9b6c6b Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sun, 30 Aug 2020 17:54:35 +0300 Subject: [PATCH 01/32] feat: use helm to install cockroachdb, ingress-nginx & metallb into k8s cluster --- .../cockroachdb-pv-0.yaml | 2 +- .../cockroachdb-pv-1.yaml | 2 +- .../cockroachdb-pv-2.yaml | 2 +- deploy/manifests/cockroachdb/values.yaml | 22 +++ .../collect-static-job.yaml | 0 .../default_admin_cluster_role_binding.yaml | 0 .../gitrello/environment-secret-example.yaml | 21 +++ .../gitrello-deployment.yaml | 0 .../gitrello-ingress.yaml | 0 .../gitrello-service.yaml | 0 .../migrate-database-job.yaml | 0 .../{jobs => gitrello}/run-tests-job.yaml | 0 deploy/manifests/ingress-nginx/values.yaml | 4 + .../metallb/metallb-config-example.yaml | 11 ++ .../policies/cockroachdb-budget.yaml | 11 -- .../cockroachdb-cluster-role-binding.yaml | 14 -- .../roles/cockroachdb-cluster-role.yaml | 15 -- .../roles/cockroachdb-role-binding.yaml | 14 -- deploy/manifests/roles/cockroachdb-role.yaml | 14 -- .../cockroachdb-service-account.yaml | 6 - .../services/cockroachdb-public-service.yaml | 24 ---- .../services/cockroachdb-service.yaml | 35 ----- .../services/nginx-ingress-service.yaml | 24 ---- .../statefulsets/cockroachdb-statefulset.yaml | 128 ------------------ deploy/run_kubernetes_job.py | 2 +- 25 files changed, 62 insertions(+), 289 deletions(-) rename deploy/manifests/{persistent_volumes => cockroachdb}/cockroachdb-pv-0.yaml (87%) rename deploy/manifests/{persistent_volumes => cockroachdb}/cockroachdb-pv-1.yaml (87%) rename deploy/manifests/{persistent_volumes => cockroachdb}/cockroachdb-pv-2.yaml (87%) create mode 100644 deploy/manifests/cockroachdb/values.yaml rename deploy/manifests/{jobs => gitrello}/collect-static-job.yaml (100%) rename deploy/manifests/{roles => gitrello}/default_admin_cluster_role_binding.yaml (100%) create mode 100644 deploy/manifests/gitrello/environment-secret-example.yaml rename deploy/manifests/{deployments => gitrello}/gitrello-deployment.yaml (100%) rename deploy/manifests/{ingresses => gitrello}/gitrello-ingress.yaml (100%) rename deploy/manifests/{services => gitrello}/gitrello-service.yaml (100%) rename deploy/manifests/{jobs => gitrello}/migrate-database-job.yaml (100%) rename deploy/manifests/{jobs => gitrello}/run-tests-job.yaml (100%) create mode 100644 deploy/manifests/ingress-nginx/values.yaml create mode 100644 deploy/manifests/metallb/metallb-config-example.yaml delete mode 100644 deploy/manifests/policies/cockroachdb-budget.yaml delete mode 100644 deploy/manifests/roles/cockroachdb-cluster-role-binding.yaml delete mode 100644 deploy/manifests/roles/cockroachdb-cluster-role.yaml delete mode 100644 deploy/manifests/roles/cockroachdb-role-binding.yaml delete mode 100644 deploy/manifests/roles/cockroachdb-role.yaml delete mode 100644 deploy/manifests/service_accounts/cockroachdb-service-account.yaml delete mode 100644 deploy/manifests/services/cockroachdb-public-service.yaml delete mode 100644 deploy/manifests/services/cockroachdb-service.yaml delete mode 100644 deploy/manifests/services/nginx-ingress-service.yaml delete mode 100644 deploy/manifests/statefulsets/cockroachdb-statefulset.yaml diff --git a/deploy/manifests/persistent_volumes/cockroachdb-pv-0.yaml b/deploy/manifests/cockroachdb/cockroachdb-pv-0.yaml similarity index 87% rename from deploy/manifests/persistent_volumes/cockroachdb-pv-0.yaml rename to deploy/manifests/cockroachdb/cockroachdb-pv-0.yaml index 9531245..5be587b 100644 --- a/deploy/manifests/persistent_volumes/cockroachdb-pv-0.yaml +++ b/deploy/manifests/cockroachdb/cockroachdb-pv-0.yaml @@ -5,7 +5,7 @@ metadata: labels: app: cockroachdb spec: - storageClassName: manual + storageClassName: cockroachdb capacity: storage: 2Gi accessModes: diff --git a/deploy/manifests/persistent_volumes/cockroachdb-pv-1.yaml b/deploy/manifests/cockroachdb/cockroachdb-pv-1.yaml similarity index 87% rename from deploy/manifests/persistent_volumes/cockroachdb-pv-1.yaml rename to deploy/manifests/cockroachdb/cockroachdb-pv-1.yaml index d8f04d1..c87c8b8 100644 --- a/deploy/manifests/persistent_volumes/cockroachdb-pv-1.yaml +++ b/deploy/manifests/cockroachdb/cockroachdb-pv-1.yaml @@ -5,7 +5,7 @@ metadata: labels: app: cockroachdb spec: - storageClassName: manual + storageClassName: cockroachdb capacity: storage: 2Gi accessModes: diff --git a/deploy/manifests/persistent_volumes/cockroachdb-pv-2.yaml b/deploy/manifests/cockroachdb/cockroachdb-pv-2.yaml similarity index 87% rename from deploy/manifests/persistent_volumes/cockroachdb-pv-2.yaml rename to deploy/manifests/cockroachdb/cockroachdb-pv-2.yaml index 4f2ef15..4aa5405 100644 --- a/deploy/manifests/persistent_volumes/cockroachdb-pv-2.yaml +++ b/deploy/manifests/cockroachdb/cockroachdb-pv-2.yaml @@ -5,7 +5,7 @@ metadata: labels: app: cockroachdb spec: - storageClassName: manual + storageClassName: cockroachdb capacity: storage: 2Gi accessModes: diff --git a/deploy/manifests/cockroachdb/values.yaml b/deploy/manifests/cockroachdb/values.yaml new file mode 100644 index 0000000..a438770 --- /dev/null +++ b/deploy/manifests/cockroachdb/values.yaml @@ -0,0 +1,22 @@ +statefulset: + resources: + limits: + cpu: "0.4" + memory: "0.8Gi" + requests: + cpu: "0.4" + memory: "0.8Gi" +storage: + persistentVolume: + storageClass: "cockroachdb" + size: 2Gi +service: + public: + type: LoadBalancer + annotations: + metallb.universe.tf/allow-shared-ip: gitrello +conf: + cache: "0.2Gi" + max-sql-memory: "0.2Gi" +tls: + enabled: true diff --git a/deploy/manifests/jobs/collect-static-job.yaml b/deploy/manifests/gitrello/collect-static-job.yaml similarity index 100% rename from deploy/manifests/jobs/collect-static-job.yaml rename to deploy/manifests/gitrello/collect-static-job.yaml diff --git a/deploy/manifests/roles/default_admin_cluster_role_binding.yaml b/deploy/manifests/gitrello/default_admin_cluster_role_binding.yaml similarity index 100% rename from deploy/manifests/roles/default_admin_cluster_role_binding.yaml rename to deploy/manifests/gitrello/default_admin_cluster_role_binding.yaml diff --git a/deploy/manifests/gitrello/environment-secret-example.yaml b/deploy/manifests/gitrello/environment-secret-example.yaml new file mode 100644 index 0000000..71a091a --- /dev/null +++ b/deploy/manifests/gitrello/environment-secret-example.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +kind: Secret +metadata: + name: environment +type: Opaque +stringData: + django_secret_key: "example" + django_db_name: "example" + django_db_user: "example" + django_db_password: "example" + django_db_host: "cockroachdb-public" + django_db_port: "26257" + email_host_user: "example@gmail.com" + email_host_password: "example" + gs_bucket_name: "example" + gs_project_id: "1111111" + gs_credentials: "credentials_json" + url: "https://example.com" + github_integration_service_url: "github-integration-service" + github_client_id: "example" + github_client_secret: "example" diff --git a/deploy/manifests/deployments/gitrello-deployment.yaml b/deploy/manifests/gitrello/gitrello-deployment.yaml similarity index 100% rename from deploy/manifests/deployments/gitrello-deployment.yaml rename to deploy/manifests/gitrello/gitrello-deployment.yaml diff --git a/deploy/manifests/ingresses/gitrello-ingress.yaml b/deploy/manifests/gitrello/gitrello-ingress.yaml similarity index 100% rename from deploy/manifests/ingresses/gitrello-ingress.yaml rename to deploy/manifests/gitrello/gitrello-ingress.yaml diff --git a/deploy/manifests/services/gitrello-service.yaml b/deploy/manifests/gitrello/gitrello-service.yaml similarity index 100% rename from deploy/manifests/services/gitrello-service.yaml rename to deploy/manifests/gitrello/gitrello-service.yaml diff --git a/deploy/manifests/jobs/migrate-database-job.yaml b/deploy/manifests/gitrello/migrate-database-job.yaml similarity index 100% rename from deploy/manifests/jobs/migrate-database-job.yaml rename to deploy/manifests/gitrello/migrate-database-job.yaml diff --git a/deploy/manifests/jobs/run-tests-job.yaml b/deploy/manifests/gitrello/run-tests-job.yaml similarity index 100% rename from deploy/manifests/jobs/run-tests-job.yaml rename to deploy/manifests/gitrello/run-tests-job.yaml diff --git a/deploy/manifests/ingress-nginx/values.yaml b/deploy/manifests/ingress-nginx/values.yaml new file mode 100644 index 0000000..f1cbe53 --- /dev/null +++ b/deploy/manifests/ingress-nginx/values.yaml @@ -0,0 +1,4 @@ +controller: + service: + annotations: + metallb.universe.tf/allow-shared-ip: gitrello diff --git a/deploy/manifests/metallb/metallb-config-example.yaml b/deploy/manifests/metallb/metallb-config-example.yaml new file mode 100644 index 0000000..a03268e --- /dev/null +++ b/deploy/manifests/metallb/metallb-config-example.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: metallb +data: + config: | + address-pools: + - name: default + protocol: layer2 + addresses: + - 0.0.0.0/32 diff --git a/deploy/manifests/policies/cockroachdb-budget.yaml b/deploy/manifests/policies/cockroachdb-budget.yaml deleted file mode 100644 index 4b67c34..0000000 --- a/deploy/manifests/policies/cockroachdb-budget.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: policy/v1beta1 -kind: PodDisruptionBudget -metadata: - name: cockroachdb-budget - labels: - app: cockroachdb -spec: - selector: - matchLabels: - app: cockroachdb - maxUnavailable: 1 diff --git a/deploy/manifests/roles/cockroachdb-cluster-role-binding.yaml b/deploy/manifests/roles/cockroachdb-cluster-role-binding.yaml deleted file mode 100644 index b88a2e1..0000000 --- a/deploy/manifests/roles/cockroachdb-cluster-role-binding.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRoleBinding -metadata: - name: cockroachdb - labels: - app: cockroachdb -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cockroachdb -subjects: -- kind: ServiceAccount - name: cockroachdb - namespace: default diff --git a/deploy/manifests/roles/cockroachdb-cluster-role.yaml b/deploy/manifests/roles/cockroachdb-cluster-role.yaml deleted file mode 100644 index d5ae2fa..0000000 --- a/deploy/manifests/roles/cockroachdb-cluster-role.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRole -metadata: - name: cockroachdb - labels: - app: cockroachdb -rules: -- apiGroups: - - certificates.k8s.io - resources: - - certificatesigningrequests - verbs: - - create - - get - - watch diff --git a/deploy/manifests/roles/cockroachdb-role-binding.yaml b/deploy/manifests/roles/cockroachdb-role-binding.yaml deleted file mode 100644 index 885b447..0000000 --- a/deploy/manifests/roles/cockroachdb-role-binding.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: RoleBinding -metadata: - name: cockroachdb - labels: - app: cockroachdb -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: cockroachdb -subjects: -- kind: ServiceAccount - name: cockroachdb - namespace: default diff --git a/deploy/manifests/roles/cockroachdb-role.yaml b/deploy/manifests/roles/cockroachdb-role.yaml deleted file mode 100644 index f1437f3..0000000 --- a/deploy/manifests/roles/cockroachdb-role.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: Role -metadata: - name: cockroachdb - labels: - app: cockroachdb -rules: -- apiGroups: - - "" - resources: - - secrets - verbs: - - create - - get diff --git a/deploy/manifests/service_accounts/cockroachdb-service-account.yaml b/deploy/manifests/service_accounts/cockroachdb-service-account.yaml deleted file mode 100644 index 7c6a9a0..0000000 --- a/deploy/manifests/service_accounts/cockroachdb-service-account.yaml +++ /dev/null @@ -1,6 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: cockroachdb - labels: - app: cockroachdb diff --git a/deploy/manifests/services/cockroachdb-public-service.yaml b/deploy/manifests/services/cockroachdb-public-service.yaml deleted file mode 100644 index ee6373e..0000000 --- a/deploy/manifests/services/cockroachdb-public-service.yaml +++ /dev/null @@ -1,24 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - # This service is meant to be used by clients of the database. It exposes a ClusterIP that will - # automatically load balance connections to the different database pods. - name: cockroachdb-public - labels: - app: cockroachdb - annotations: - metallb.universe.tf/allow-shared-ip: gitrello -spec: - ports: - # The main port, served by gRPC, serves Postgres-flavor SQL, internode - # traffic and the cli. - - port: 26257 - targetPort: 26257 - name: grpc - # The secondary port serves the UI as well as health and debug endpoints. - - port: 8080 - targetPort: 8080 - name: http - selector: - app: cockroachdb - type: LoadBalancer diff --git a/deploy/manifests/services/cockroachdb-service.yaml b/deploy/manifests/services/cockroachdb-service.yaml deleted file mode 100644 index cd87baa..0000000 --- a/deploy/manifests/services/cockroachdb-service.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - # This service only exists to create DNS entries for each pod in the stateful - # set such that they can resolve each other's IP addresses. It does not - # create a load-balanced ClusterIP and should not be used directly by clients - # in most circumstances. - name: cockroachdb - labels: - app: cockroachdb - annotations: - # Use this annotation in addition to the actual publishNotReadyAddresses - # field below because the annotation will stop being respected soon but the - # field is broken in some versions of Kubernetes: - # https://github.com/kubernetes/kubernetes/issues/58662 - service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" - # Enable automatic monitoring of all instances when Prometheus is running in the cluster. - prometheus.io/scrape: "true" - prometheus.io/path: "_status/vars" - prometheus.io/port: "8080" -spec: - ports: - - port: 26257 - targetPort: 26257 - name: grpc - - port: 8080 - targetPort: 8080 - name: http - # We want all pods in the StatefulSet to have their addresses published for - # the sake of the other CockroachDB pods even before they're ready, since they - # have to be able to talk to each other in order to become ready. - publishNotReadyAddresses: true - clusterIP: None - selector: - app: cockroachdb diff --git a/deploy/manifests/services/nginx-ingress-service.yaml b/deploy/manifests/services/nginx-ingress-service.yaml deleted file mode 100644 index da96360..0000000 --- a/deploy/manifests/services/nginx-ingress-service.yaml +++ /dev/null @@ -1,24 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: ingress-nginx - namespace: ingress-nginx - labels: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx - annotations: - metallb.universe.tf/allow-shared-ip: gitrello -spec: - type: LoadBalancer - ports: - - name: http - port: 80 - targetPort: 80 - protocol: TCP - - name: https - port: 443 - targetPort: 443 - protocol: TCP - selector: - app.kubernetes.io/name: ingress-nginx - app.kubernetes.io/part-of: ingress-nginx diff --git a/deploy/manifests/statefulsets/cockroachdb-statefulset.yaml b/deploy/manifests/statefulsets/cockroachdb-statefulset.yaml deleted file mode 100644 index fdd1777..0000000 --- a/deploy/manifests/statefulsets/cockroachdb-statefulset.yaml +++ /dev/null @@ -1,128 +0,0 @@ -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: cockroachdb -spec: - serviceName: "cockroachdb" - replicas: 3 - selector: - matchLabels: - app: cockroachdb - template: - metadata: - labels: - app: cockroachdb - spec: - serviceAccountName: cockroachdb - # Init containers are run only once in the lifetime of a pod, before - # it's started up for the first time. It has to exit successfully - # before the pod's main containers are allowed to start. - initContainers: - # The init-certs container sends a certificate signing request to the - # kubernetes cluster. - # You can see pending requests using: kubectl get csr - # CSRs can be approved using: kubectl certificate approve - # - # All addresses used to contact a node must be specified in the --addresses arg. - # - # In addition to the node certificate and key, the init-certs entrypoint will symlink - # the cluster CA to the certs directory. - - name: init-certs - image: cockroachdb/cockroach-k8s-request-cert:0.4 - imagePullPolicy: IfNotPresent - command: - - "/bin/ash" - - "-ecx" - - "/request-cert -namespace=${POD_NAMESPACE} -certs-dir=/cockroach-certs -type=node -addresses=0.0.0.0,localhost,127.0.0.1,$(hostname -f),$(hostname -f|cut -f 1-2 -d '.'),cockroachdb-public,cockroachdb-public.$(hostname -f|cut -f 3- -d '.') -symlink-ca-from=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - volumeMounts: - - name: certs - mountPath: /cockroach-certs - affinity: - podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - weight: 100 - podAffinityTerm: - labelSelector: - matchExpressions: - - key: app - operator: In - values: - - cockroachdb - topologyKey: kubernetes.io/hostname - containers: - - name: cockroachdb - image: cockroachdb/cockroach:v20.1.2 - imagePullPolicy: IfNotPresent - resources: - requests: - cpu: "0.4" - memory: "0.8Gi" - limits: - # NOTE: Unless you have enabled the non-default Static CPU Management Policy - # and are using an integer number of CPUs, we don't recommend setting a CPU limit. - # See: - # https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-policies/#static-policy - # https://github.com/kubernetes/kubernetes/issues/51135 - cpu: "0.4" - memory: "0.8Gi" - ports: - - containerPort: 26257 - name: grpc - - containerPort: 8080 - name: http - livenessProbe: - httpGet: - path: "/health" - port: http - scheme: HTTPS - initialDelaySeconds: 30 - periodSeconds: 5 - readinessProbe: - httpGet: - path: "/health?ready=1" - port: http - scheme: HTTPS - initialDelaySeconds: 10 - periodSeconds: 5 - failureThreshold: 2 - volumeMounts: - - name: datadir - mountPath: /cockroach/cockroach-data - - name: certs - mountPath: /cockroach/cockroach-certs - env: - - name: COCKROACH_CHANNEL - value: kubernetes-secure - command: - - "/bin/bash" - - "-ecx" - # The use of qualified `hostname -f` is crucial: - # Other nodes aren't able to look up the unqualified hostname. - - "exec /cockroach/cockroach start --logtostderr --certs-dir /cockroach/cockroach-certs --advertise-host $(hostname -f) --http-addr 0.0.0.0 --join cockroachdb-0.cockroachdb,cockroachdb-1.cockroachdb,cockroachdb-2.cockroachdb --cache 0.2Gi --max-sql-memory 0.2Gi" - # No pre-stop hook is required, a SIGTERM plus some time is all that's - # needed for graceful shutdown of a node. - terminationGracePeriodSeconds: 60 - volumes: - - name: datadir - persistentVolumeClaim: - claimName: datadir - - name: certs - emptyDir: {} - podManagementPolicy: Parallel - updateStrategy: - type: RollingUpdate - volumeClaimTemplates: - - metadata: - name: datadir - spec: - accessModes: - - "ReadWriteOnce" - storageClassName: "manual" - resources: - requests: - storage: "2Gi" diff --git a/deploy/run_kubernetes_job.py b/deploy/run_kubernetes_job.py index 639f2dd..5be7625 100644 --- a/deploy/run_kubernetes_job.py +++ b/deploy/run_kubernetes_job.py @@ -19,7 +19,7 @@ class KubernetesJob: FAILED = 'failed' def __init__(self, name, file_name, k8s_url, k8s_token): - path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'manifests', 'jobs', file_name)) + path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'manifests', 'gitrello', file_name)) with open(path, 'r') as file: self.manifest = file.read() From 4983183a44b16f5ebf43df18c8ace079e3efd66f Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sun, 30 Aug 2020 21:50:06 +0300 Subject: [PATCH 02/32] feat: add templates for jenkins --- .../manifests/gitrello/gitrello-ingress.yaml | 18 ++++++++++----- deploy/manifests/jenkins/jenkins-pv.yaml | 12 ++++++++++ deploy/manifests/jenkins/values.yaml | 23 +++++++++++++++++++ 3 files changed, 47 insertions(+), 6 deletions(-) create mode 100644 deploy/manifests/jenkins/jenkins-pv.yaml create mode 100644 deploy/manifests/jenkins/values.yaml diff --git a/deploy/manifests/gitrello/gitrello-ingress.yaml b/deploy/manifests/gitrello/gitrello-ingress.yaml index c354f48..390736d 100644 --- a/deploy/manifests/gitrello/gitrello-ingress.yaml +++ b/deploy/manifests/gitrello/gitrello-ingress.yaml @@ -1,7 +1,7 @@ -apiVersion: networking.k8s.io/v1beta1 +apiVersion: networking.k8s.io/v1 kind: Ingress metadata: - name: gitrello-service-ingress + name: gitrello-ingress annotations: kubernetes.io/ingress.class: "nginx" spec: @@ -15,13 +15,19 @@ spec: http: paths: - path: / + pathType: Prefix backend: - serviceName: gitrello - servicePort: 80 + service: + name: gitrello + port: + number: 80 - host: www.gitrello.me http: paths: - path: / + pathType: Prefix backend: - serviceName: gitrello - servicePort: 80 + service: + name: gitrello + port: + number: 80 diff --git a/deploy/manifests/jenkins/jenkins-pv.yaml b/deploy/manifests/jenkins/jenkins-pv.yaml new file mode 100644 index 0000000..32a5880 --- /dev/null +++ b/deploy/manifests/jenkins/jenkins-pv.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: jenkins-pv +spec: + storageClassName: jenkins + capacity: + storage: 4Gi + accessModes: + - ReadWriteOnce + hostPath: + path: "/jenkins/data" diff --git a/deploy/manifests/jenkins/values.yaml b/deploy/manifests/jenkins/values.yaml new file mode 100644 index 0000000..f635b25 --- /dev/null +++ b/deploy/manifests/jenkins/values.yaml @@ -0,0 +1,23 @@ +master: + serviceType: LoadBalancer + servicePort: 8081 + serviceAnnotations: + metallb.universe.tf/allow-shared-ip: gitrello + installPlugins: + - kubernetes:1.27.0 + - workflow-aggregator:2.6 + - workflow-job:2.39 + - git:4.4.1 + # https://github.com/helm/charts/issues/15453 + customInitContainers: + - name: "volume-mount-permission" + image: "busybox" + command: ["/bin/chown", "-R", "1000", "/var/jenkins_home"] + volumeMounts: + - name: "jenkins-home" + mountPath: "/var/jenkins_home" + securityContext: + runAsUser: 0 +persistence: + storageClass: jenkins + size: "4Gi" From 16e44ea85c44cc3388ff5cec6f72699076e0025e Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Mon, 31 Aug 2020 09:51:13 +0300 Subject: [PATCH 03/32] feat: add jenkins-ingress --- deploy/manifests/jenkins/jenkins-ingress.yaml | 33 +++++++++++++++++++ deploy/manifests/jenkins/values.yaml | 5 ++- 2 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 deploy/manifests/jenkins/jenkins-ingress.yaml diff --git a/deploy/manifests/jenkins/jenkins-ingress.yaml b/deploy/manifests/jenkins/jenkins-ingress.yaml new file mode 100644 index 0000000..fb4ab30 --- /dev/null +++ b/deploy/manifests/jenkins/jenkins-ingress.yaml @@ -0,0 +1,33 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: jenkins-ingress + annotations: + kubernetes.io/ingress.class: "nginx" +spec: + tls: + - hosts: + - gitrello.me + - www.gitrello.me + secretName: tls + rules: + - host: gitrello.me + http: + paths: + - path: /jenkins + pathType: Prefix + backend: + service: + name: jenkins + port: + number: 8081 + - host: www.gitrello.me + http: + paths: + - path: /jenkins + pathType: Prefix + backend: + service: + name: jenkins + port: + number: 8081 diff --git a/deploy/manifests/jenkins/values.yaml b/deploy/manifests/jenkins/values.yaml index f635b25..df8b69a 100644 --- a/deploy/manifests/jenkins/values.yaml +++ b/deploy/manifests/jenkins/values.yaml @@ -1,8 +1,6 @@ master: - serviceType: LoadBalancer + serviceType: ClusterIP servicePort: 8081 - serviceAnnotations: - metallb.universe.tf/allow-shared-ip: gitrello installPlugins: - kubernetes:1.27.0 - workflow-aggregator:2.6 @@ -18,6 +16,7 @@ master: mountPath: "/var/jenkins_home" securityContext: runAsUser: 0 + jenkinsUriPrefix: "/jenkins" persistence: storageClass: jenkins size: "4Gi" From fa83dfe772885c76cbda269b1c10e791042d28aa Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Wed, 2 Sep 2020 23:00:36 +0300 Subject: [PATCH 04/32] feat: update manifests --- deploy/manifests/cockroachdb/values.yaml | 8 ++++---- deploy/manifests/jenkins/values.yaml | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/deploy/manifests/cockroachdb/values.yaml b/deploy/manifests/cockroachdb/values.yaml index a438770..99e18f0 100644 --- a/deploy/manifests/cockroachdb/values.yaml +++ b/deploy/manifests/cockroachdb/values.yaml @@ -2,10 +2,10 @@ statefulset: resources: limits: cpu: "0.4" - memory: "0.8Gi" + memory: "800Mi" requests: cpu: "0.4" - memory: "0.8Gi" + memory: "800Mi" storage: persistentVolume: storageClass: "cockroachdb" @@ -16,7 +16,7 @@ service: annotations: metallb.universe.tf/allow-shared-ip: gitrello conf: - cache: "0.2Gi" - max-sql-memory: "0.2Gi" + cache: "200Mi" + max-sql-memory: "200Mi" tls: enabled: true diff --git a/deploy/manifests/jenkins/values.yaml b/deploy/manifests/jenkins/values.yaml index df8b69a..b98f5bf 100644 --- a/deploy/manifests/jenkins/values.yaml +++ b/deploy/manifests/jenkins/values.yaml @@ -6,6 +6,7 @@ master: - workflow-aggregator:2.6 - workflow-job:2.39 - git:4.4.1 + - configuration-as-code:1.41 # https://github.com/helm/charts/issues/15453 customInitContainers: - name: "volume-mount-permission" From 75ae04ecdcf614e8bb52469962fb5fa8b5b45a9d Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sat, 5 Sep 2020 13:27:50 +0300 Subject: [PATCH 05/32] feat: update values for jenkins chart --- deploy/manifests/jenkins/values.yaml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/deploy/manifests/jenkins/values.yaml b/deploy/manifests/jenkins/values.yaml index b98f5bf..caa066b 100644 --- a/deploy/manifests/jenkins/values.yaml +++ b/deploy/manifests/jenkins/values.yaml @@ -2,11 +2,20 @@ master: serviceType: ClusterIP servicePort: 8081 installPlugins: - - kubernetes:1.27.0 + - kubernetes:1.27.1 - workflow-aggregator:2.6 - - workflow-job:2.39 + - workflow-job:2.40 - git:4.4.1 + - github:1.31.0 - configuration-as-code:1.41 + - matrix-auth:2.6.2 + - embeddable-build-status:2.0.3 + jenkinsUrl: https://gitrello.me/jenkins + jenkinsAdminEmail: fnsdevelopment@gmail.com + JCasC: + securityRealm: |- + local: + allowsSignup: false # https://github.com/helm/charts/issues/15453 customInitContainers: - name: "volume-mount-permission" From 4cf0d7bbc4f0aadc7efec6ed7241ff081835a830 Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sat, 5 Sep 2020 17:23:16 +0300 Subject: [PATCH 06/32] feat: add helm chart for GITrello --- .github/workflows/deploy_on_push_tag.yaml | 74 -------- .../run_tests_on_push_to_develop.yaml | 38 ----- .gitignore | 1 + deploy/deploy.py | 46 ----- deploy/manifests/cockroachdb/values.yaml | 2 +- deploy/manifests/gitrello/.helmignore | 23 +++ deploy/manifests/gitrello/Chart.yaml | 8 + deploy/manifests/gitrello/charts/.gitkeep | 0 deploy/manifests/gitrello/templates/NOTES.txt | 2 + .../manifests/gitrello/templates/_helpers.tpl | 62 +++++++ .../gitrello/templates/deployment.yaml | 135 +++++++++++++++ .../manifests/gitrello/templates/ingress.yaml | 37 ++++ .../manifests/gitrello/templates/secret.yaml | 21 +++ .../manifests/gitrello/templates/service.yaml | 19 +++ .../gitrello/templates/serviceaccount.yaml | 12 ++ .../templates/tests/test-connection.yaml | 15 ++ deploy/manifests/gitrello/values.yaml | 95 +++++++++++ deploy/manifests/ingress-nginx/values.yaml | 2 +- deploy/manifests/jenkins/jenkins-ingress.yaml | 8 +- deploy/manifests/jenkins/values.yaml | 2 +- .../{gitrello => tmp}/collect-static-job.yaml | 6 +- .../default_admin_cluster_role_binding.yaml | 0 .../environment-secret-example.yaml | 0 .../gitrello-deployment.yaml | 14 +- .../{gitrello => tmp}/gitrello-ingress.yaml | 14 +- .../{gitrello => tmp}/gitrello-service.yaml | 6 +- .../migrate-database-job.yaml | 6 +- .../{gitrello => tmp}/run-tests-job.yaml | 14 +- deploy/run_kubernetes_job.py | 160 ------------------ 29 files changed, 467 insertions(+), 355 deletions(-) delete mode 100644 .github/workflows/deploy_on_push_tag.yaml delete mode 100644 .github/workflows/run_tests_on_push_to_develop.yaml delete mode 100644 deploy/deploy.py create mode 100644 deploy/manifests/gitrello/.helmignore create mode 100644 deploy/manifests/gitrello/Chart.yaml create mode 100644 deploy/manifests/gitrello/charts/.gitkeep create mode 100644 deploy/manifests/gitrello/templates/NOTES.txt create mode 100644 deploy/manifests/gitrello/templates/_helpers.tpl create mode 100644 deploy/manifests/gitrello/templates/deployment.yaml create mode 100644 deploy/manifests/gitrello/templates/ingress.yaml create mode 100644 deploy/manifests/gitrello/templates/secret.yaml create mode 100644 deploy/manifests/gitrello/templates/service.yaml create mode 100644 deploy/manifests/gitrello/templates/serviceaccount.yaml create mode 100644 deploy/manifests/gitrello/templates/tests/test-connection.yaml create mode 100644 deploy/manifests/gitrello/values.yaml rename deploy/manifests/{gitrello => tmp}/collect-static-job.yaml (94%) rename deploy/manifests/{gitrello => tmp}/default_admin_cluster_role_binding.yaml (100%) rename deploy/manifests/{gitrello => tmp}/environment-secret-example.yaml (100%) rename deploy/manifests/{gitrello => tmp}/gitrello-deployment.yaml (93%) rename deploy/manifests/{gitrello => tmp}/gitrello-ingress.yaml (72%) rename deploy/manifests/{gitrello => tmp}/gitrello-service.yaml (75%) rename deploy/manifests/{gitrello => tmp}/migrate-database-job.yaml (94%) rename deploy/manifests/{gitrello => tmp}/run-tests-job.yaml (75%) delete mode 100644 deploy/run_kubernetes_job.py diff --git a/.github/workflows/deploy_on_push_tag.yaml b/.github/workflows/deploy_on_push_tag.yaml deleted file mode 100644 index c7f1a3c..0000000 --- a/.github/workflows/deploy_on_push_tag.yaml +++ /dev/null @@ -1,74 +0,0 @@ -name: deploy -on: - push: - tags: - - '*.*' -jobs: - build_and_publish: - runs-on: [ubuntu-latest] - env: - DOCKER_LOGIN: ${{ secrets.DOCKER_LOGIN }} - DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - steps: - - name: login_to_docker - run: echo ${DOCKER_PASSWORD} | docker login -u ${DOCKER_LOGIN} --password-stdin - - name: checkout - uses: actions/checkout@v2 - - name: set_release_version - run: echo ::set-env name=RELEASE_VERSION::${GITHUB_REF:10} - - name: build_image - run: docker build -t $DOCKER_LOGIN/gitrello:current -t $DOCKER_LOGIN/gitrello:$RELEASE_VERSION -f deploy/Dockerfile . - - name: push_current_image_to_docker_io - run: docker push $DOCKER_LOGIN/gitrello:current - - name: push_versioned_image_to_docker_io - run: docker push $DOCKER_LOGIN/gitrello:$RELEASE_VERSION - collect_static: - needs: [build_and_publish] - runs-on: [ubuntu-latest] - env: - K8S_URL: ${{ secrets.K8S_URL }} - K8S_TOKEN: ${{ secrets.K8S_TOKEN }} - steps: - - uses: actions/checkout@master - - uses: actions/setup-python@v1 - with: - python-version: '3.8.5' - architecture: 'x64' - - name: install_requirements - run: pip install requests - - name: collect_static - run: python deploy/run_kubernetes_job.py -n collect-static -f collect-static-job.yaml -l 180 -s 10 - migrate_database: - needs: [build_and_publish] - runs-on: [ubuntu-latest] - env: - K8S_URL: ${{ secrets.K8S_URL }} - K8S_TOKEN: ${{ secrets.K8S_TOKEN }} - steps: - - uses: actions/checkout@master - - uses: actions/setup-python@v1 - with: - python-version: '3.8.5' - architecture: 'x64' - - name: install_requirements - run: pip install requests - - name: migrate_database - run: python deploy/run_kubernetes_job.py -n migrate-database -f migrate-database-job.yaml -l 180 -s 10 - deploy: - needs: [collect_static, migrate_database] - runs-on: [ubuntu-latest] - env: - K8S_URL: ${{ secrets.K8S_URL }} - K8S_TOKEN: ${{ secrets.K8S_TOKEN }} - steps: - - uses: actions/checkout@master - - uses: actions/setup-python@v1 - with: - python-version: '3.8.5' - architecture: 'x64' - - name: set_release_version - run: echo ::set-env name=RELEASE_VERSION::${GITHUB_REF:10} - - name: install_requirements - run: pip install requests - - name: deploy - run: python deploy/deploy.py diff --git a/.github/workflows/run_tests_on_push_to_develop.yaml b/.github/workflows/run_tests_on_push_to_develop.yaml deleted file mode 100644 index bde05dd..0000000 --- a/.github/workflows/run_tests_on_push_to_develop.yaml +++ /dev/null @@ -1,38 +0,0 @@ -name: run_tests -on: - push: - tags: - - '!refs/tags/*' - branches: - - 'develop' -jobs: - build_and_publish: - runs-on: [ubuntu-latest] - env: - DOCKER_LOGIN: ${{ secrets.DOCKER_LOGIN }} - DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - steps: - - name: login_to_docker - run: echo ${DOCKER_PASSWORD} | docker login -u ${DOCKER_LOGIN} --password-stdin - - name: checkout - uses: actions/checkout@v2 - - name: build_image - run: docker build -t $DOCKER_LOGIN/gitrello:test -f deploy/Dockerfile --target=test . - - name: push_image_to_docker.io - run: docker push $DOCKER_LOGIN/gitrello:test - run_tests: - needs: [build_and_publish] - runs-on: [ubuntu-latest] - env: - K8S_URL: ${{ secrets.K8S_URL }} - K8S_TOKEN: ${{ secrets.K8S_TOKEN }} - steps: - - uses: actions/checkout@master - - uses: actions/setup-python@v1 - with: - python-version: '3.8.5' - architecture: 'x64' - - name: install_requirements - run: pip install requests - - name: run_tests - run: python deploy/run_kubernetes_job.py -n run-tests -f run-tests-job.yaml -l 180 -s 10 diff --git a/.gitignore b/.gitignore index 6e24ff6..186315c 100644 --- a/.gitignore +++ b/.gitignore @@ -95,3 +95,4 @@ GitHub.sublime-settings # Credentials gcs_creds.json +overrides.yaml diff --git a/deploy/deploy.py b/deploy/deploy.py deleted file mode 100644 index 9444d1f..0000000 --- a/deploy/deploy.py +++ /dev/null @@ -1,46 +0,0 @@ -import os -import sys - -import requests - - -def main(): - k8s_url = os.getenv('K8S_URL') - k8s_token = os.getenv('K8S_TOKEN') - data = { - 'spec': { - 'template': { - 'spec': { - 'containers': [ - { - 'name': 'gitrello', - 'image': f'fnsdev/gitrello:{os.getenv("RELEASE_VERSION")}' - } - ] - } - } - } - } - headers = { - 'Content-Type': 'application/strategic-merge-patch+json', - 'Authorization': f'Bearer {k8s_token}', - } - - print('Patch deployment') - response = requests.patch( - f'{k8s_url}/apis/apps/v1/namespaces/default/deployments/gitrello', - headers=headers, - json=data, - ) - - if response.status_code not in (200, 201): - print(response.text) - print('Patching deployment failed') - sys.exit(-1) - - # TODO check deployment status - print('Patch deployment succeeded') - - -if __name__ == '__main__': - main() diff --git a/deploy/manifests/cockroachdb/values.yaml b/deploy/manifests/cockroachdb/values.yaml index 99e18f0..609360f 100644 --- a/deploy/manifests/cockroachdb/values.yaml +++ b/deploy/manifests/cockroachdb/values.yaml @@ -14,7 +14,7 @@ service: public: type: LoadBalancer annotations: - metallb.universe.tf/allow-shared-ip: gitrello + metallb.universe.tf/allow-shared-ip: tmp conf: cache: "200Mi" max-sql-memory: "200Mi" diff --git a/deploy/manifests/gitrello/.helmignore b/deploy/manifests/gitrello/.helmignore new file mode 100644 index 0000000..0e8a0eb --- /dev/null +++ b/deploy/manifests/gitrello/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/deploy/manifests/gitrello/Chart.yaml b/deploy/manifests/gitrello/Chart.yaml new file mode 100644 index 0000000..064a061 --- /dev/null +++ b/deploy/manifests/gitrello/Chart.yaml @@ -0,0 +1,8 @@ +apiVersion: v2 +name: gitrello +description: Trello clone with GitHub integration + +type: application + +version: 0.1.0 +appVersion: 0.16dev diff --git a/deploy/manifests/gitrello/charts/.gitkeep b/deploy/manifests/gitrello/charts/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/deploy/manifests/gitrello/templates/NOTES.txt b/deploy/manifests/gitrello/templates/NOTES.txt new file mode 100644 index 0000000..1025a85 --- /dev/null +++ b/deploy/manifests/gitrello/templates/NOTES.txt @@ -0,0 +1,2 @@ +1. Thank you for using GITrello +2. # TODO diff --git a/deploy/manifests/gitrello/templates/_helpers.tpl b/deploy/manifests/gitrello/templates/_helpers.tpl new file mode 100644 index 0000000..e0707ef --- /dev/null +++ b/deploy/manifests/gitrello/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "gitrello.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "gitrello.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "gitrello.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "gitrello.labels" -}} +helm.sh/chart: {{ include "test.chart" . }} +{{ include "gitrello.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "gitrello.selectorLabels" -}} +app.kubernetes.io/name: {{ include "gitrello.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "gitrello.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "gitrello.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/deploy/manifests/gitrello/templates/deployment.yaml b/deploy/manifests/gitrello/templates/deployment.yaml new file mode 100644 index 0000000..b934fdc --- /dev/null +++ b/deploy/manifests/gitrello/templates/deployment.yaml @@ -0,0 +1,135 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "gitrello.fullname" . }} + labels: + {{- include "gitrello.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.deployment.replicaCount }} + selector: + matchLabels: + {{- include "gitrello.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.deployment.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "gitrello.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.deployment.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "gitrello.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.deployment.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "fnsdev/gitrello:{{ .Values.deployment.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.deployment.image.pullPolicy }} + ports: + - name: http + containerPort: 80 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: http + readinessProbe: + httpGet: + path: / + port: http + resources: + {{- toYaml .Values.deployment.resources | nindent 12 }} + env: + - name: DJANGO_SECRET_KEY + valueFrom: + secretKeyRef: + name: {{ .Values.secret.name }} + key: django_secret_key + - name: DJANGO_DB_NAME + valueFrom: + secretKeyRef: + name: {{ .Values.secret.name }} + key: django_db_name + - name: DJANGO_DB_USER + valueFrom: + secretKeyRef: + name: {{ .Values.secret.name }} + key: django_db_user + - name: DJANGO_DB_PASSWORD + valueFrom: + secretKeyRef: + name: {{ .Values.secret.name }} + key: django_db_password + - name: DJANGO_DB_HOST + valueFrom: + secretKeyRef: + name: {{ .Values.secret.name }} + key: django_db_host + - name: DJANGO_DB_PORT + valueFrom: + secretKeyRef: + name: {{ .Values.secret.name }} + key: django_db_port + - name: EMAIL_HOST_USER + valueFrom: + secretKeyRef: + name: {{ .Values.secret.name }} + key: email_host_user + - name: EMAIL_HOST_PASSWORD + valueFrom: + secretKeyRef: + name: {{ .Values.secret.name }} + key: email_host_password + - name: GS_BUCKET_NAME + valueFrom: + secretKeyRef: + name: {{ .Values.secret.name }} + key: gs_bucket_name + - name: GS_CREDENTIALS + valueFrom: + secretKeyRef: + name: {{ .Values.secret.name }} + key: gs_credentials + - name: GS_PROJECT_ID + valueFrom: + secretKeyRef: + name: {{ .Values.secret.name }} + key: gs_project_id + - name: URL + valueFrom: + secretKeyRef: + name: {{ .Values.secret.name }} + key: url + - name: GITHUB_INTEGRATION_SERVICE_URL + valueFrom: + secretKeyRef: + name: {{ .Values.secret.name }} + key: github_integration_service_url + - name: GITHUB_CLIENT_ID + valueFrom: + secretKeyRef: + name: {{ .Values.secret.name }} + key: github_client_id + - name: GITHUB_CLIENT_SECRET + valueFrom: + secretKeyRef: + name: {{ .Values.secret.name }} + key: github_client_secret + {{- with .Values.deployment.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.deployment.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.deployment.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/deploy/manifests/gitrello/templates/ingress.yaml b/deploy/manifests/gitrello/templates/ingress.yaml new file mode 100644 index 0000000..cebc20e --- /dev/null +++ b/deploy/manifests/gitrello/templates/ingress.yaml @@ -0,0 +1,37 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "gitrello.fullname" . -}} +{{- $svcPort := .Values.service.port -}} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "gitrello.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ . }} + backend: + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} diff --git a/deploy/manifests/gitrello/templates/secret.yaml b/deploy/manifests/gitrello/templates/secret.yaml new file mode 100644 index 0000000..3c075e8 --- /dev/null +++ b/deploy/manifests/gitrello/templates/secret.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +kind: Secret +metadata: + name: {{ .Values.secret.name }} +type: Opaque +stringData: + django_secret_key: {{ .Values.secret.django_secret_key }} + django_db_name: {{ .Values.secret.django_db_name }} + django_db_user: {{ .Values.secret.django_db_user }} + django_db_password: {{ .Values.secret.django_db_password }} + django_db_host: {{ .Values.secret.django_db_host }} + django_db_port: {{ .Values.secret.django_db_port }} + email_host_user: {{ .Values.secret.email_host_user }} + email_host_password: {{ .Values.secret.email_host_password }} + gs_bucket_name: {{ .Values.secret.gs_bucket_name }} + gs_project_id: {{ .Values.secret.gs_project_id }} + gs_credentials: {{ .Values.secret.gs_credentials }} + url: {{ .Values.secret.url }} + github_integration_service_url: {{ .Values.secret.github_integration_service_url }} + github_client_id: {{ .Values.secret.github_client_id }} + github_client_secret: {{ .Values.secret.github_client_secret }} diff --git a/deploy/manifests/gitrello/templates/service.yaml b/deploy/manifests/gitrello/templates/service.yaml new file mode 100644 index 0000000..c9a646c --- /dev/null +++ b/deploy/manifests/gitrello/templates/service.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "gitrello.fullname" . }} +{{- with .Values.service.annotations }} + annotations: + {{- toYaml . | nindent 4 }} +{{- end }} + labels: + {{- include "gitrello.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "gitrello.selectorLabels" . | nindent 4 }} diff --git a/deploy/manifests/gitrello/templates/serviceaccount.yaml b/deploy/manifests/gitrello/templates/serviceaccount.yaml new file mode 100644 index 0000000..7c9cb8b --- /dev/null +++ b/deploy/manifests/gitrello/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "gitrello.serviceAccountName" . }} + labels: + {{- include "gitrello.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/deploy/manifests/gitrello/templates/tests/test-connection.yaml b/deploy/manifests/gitrello/templates/tests/test-connection.yaml new file mode 100644 index 0000000..808a216 --- /dev/null +++ b/deploy/manifests/gitrello/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "gitrello.fullname" . }}-gitrello-connection" + labels: + {{- include "gitrello.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": gitrello-success +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "gitrello.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/deploy/manifests/gitrello/values.yaml b/deploy/manifests/gitrello/values.yaml new file mode 100644 index 0000000..4c3df06 --- /dev/null +++ b/deploy/manifests/gitrello/values.yaml @@ -0,0 +1,95 @@ +# Default values for gitrello. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +labels: + app: gitrello + +selectorLabels: + app: gitrello + +serviceAccount: + # Specifies whether a service account should be created + create: false + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "default" + +secret: + # Secret's name + name: environment + + # Required secrets + django_secret_key: "example" + django_db_name: "example" + django_db_user: "example" + django_db_password: "example" + django_db_host: "cockroachdb-public" + django_db_port: "26257" + email_host_user: "example@gmail.com" + email_host_password: "example" + gs_bucket_name: "example" + gs_project_id: "1111111" + gs_credentials: "credentials_json" + url: "https://example.com" + github_integration_service_url: "github-integration-service" + github_client_id: "example" + github_client_secret: "example" + +deployment: + replicaCount: 1 + + image: + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: 0.16dev + + imagePullSecrets: [] + + podAnnotations: {} + + podSecurityContext: {} + # fsGroup: 2000 + + securityContext: {} + # capabilities: + # drop:environment + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + + resources: { } + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + + nodeSelector: { } + tolerations: [ ] + affinity: { } + +service: + type: ClusterIP + port: 80 + +ingress: + enabled: false + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: chart-example.local + paths: [] + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local diff --git a/deploy/manifests/ingress-nginx/values.yaml b/deploy/manifests/ingress-nginx/values.yaml index f1cbe53..431483e 100644 --- a/deploy/manifests/ingress-nginx/values.yaml +++ b/deploy/manifests/ingress-nginx/values.yaml @@ -1,4 +1,4 @@ controller: service: annotations: - metallb.universe.tf/allow-shared-ip: gitrello + metallb.universe.tf/allow-shared-ip: tmp diff --git a/deploy/manifests/jenkins/jenkins-ingress.yaml b/deploy/manifests/jenkins/jenkins-ingress.yaml index fb4ab30..a034f3f 100644 --- a/deploy/manifests/jenkins/jenkins-ingress.yaml +++ b/deploy/manifests/jenkins/jenkins-ingress.yaml @@ -7,11 +7,11 @@ metadata: spec: tls: - hosts: - - gitrello.me - - www.gitrello.me + - tmp.me + - www.tmp.me secretName: tls rules: - - host: gitrello.me + - host: tmp.me http: paths: - path: /jenkins @@ -21,7 +21,7 @@ spec: name: jenkins port: number: 8081 - - host: www.gitrello.me + - host: www.tmp.me http: paths: - path: /jenkins diff --git a/deploy/manifests/jenkins/values.yaml b/deploy/manifests/jenkins/values.yaml index caa066b..e729f4b 100644 --- a/deploy/manifests/jenkins/values.yaml +++ b/deploy/manifests/jenkins/values.yaml @@ -10,7 +10,7 @@ master: - configuration-as-code:1.41 - matrix-auth:2.6.2 - embeddable-build-status:2.0.3 - jenkinsUrl: https://gitrello.me/jenkins + jenkinsUrl: https://tmp.me/jenkins jenkinsAdminEmail: fnsdevelopment@gmail.com JCasC: securityRealm: |- diff --git a/deploy/manifests/gitrello/collect-static-job.yaml b/deploy/manifests/tmp/collect-static-job.yaml similarity index 94% rename from deploy/manifests/gitrello/collect-static-job.yaml rename to deploy/manifests/tmp/collect-static-job.yaml index 03f2861..9cceaf5 100644 --- a/deploy/manifests/gitrello/collect-static-job.yaml +++ b/deploy/manifests/tmp/collect-static-job.yaml @@ -6,10 +6,10 @@ spec: template: spec: containers: - - name: gitrello-collect-static - image: fnsdev/gitrello:current + - name: tmp-collect-static + image: fnsdev/tmp:current imagePullPolicy: Always - command: ["sh", "-c", "python manage.py collectstatic --noinput --settings=gitrello.settings_prod"] + command: ["sh", "-c", "python manage.py collectstatic --noinput --settings=tmp.settings_prod"] env: - name: DJANGO_SECRET_KEY valueFrom: diff --git a/deploy/manifests/gitrello/default_admin_cluster_role_binding.yaml b/deploy/manifests/tmp/default_admin_cluster_role_binding.yaml similarity index 100% rename from deploy/manifests/gitrello/default_admin_cluster_role_binding.yaml rename to deploy/manifests/tmp/default_admin_cluster_role_binding.yaml diff --git a/deploy/manifests/gitrello/environment-secret-example.yaml b/deploy/manifests/tmp/environment-secret-example.yaml similarity index 100% rename from deploy/manifests/gitrello/environment-secret-example.yaml rename to deploy/manifests/tmp/environment-secret-example.yaml diff --git a/deploy/manifests/gitrello/gitrello-deployment.yaml b/deploy/manifests/tmp/gitrello-deployment.yaml similarity index 93% rename from deploy/manifests/gitrello/gitrello-deployment.yaml rename to deploy/manifests/tmp/gitrello-deployment.yaml index 923db87..f08fae0 100644 --- a/deploy/manifests/gitrello/gitrello-deployment.yaml +++ b/deploy/manifests/tmp/gitrello-deployment.yaml @@ -3,22 +3,22 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: gitrello + name: tmp labels: - app: gitrello + app: tmp spec: replicas: 1 selector: matchLabels: - app: gitrello + app: tmp template: metadata: labels: - app: gitrello + app: tmp spec: containers: - - image: fnsdev/gitrello:latest - name: gitrello + - image: fnsdev/tmp:latest + name: tmp env: - name: DJANGO_SECRET_KEY valueFrom: @@ -97,4 +97,4 @@ spec: key: github_client_secret ports: - containerPort: 80 - name: gitrello + name: tmp diff --git a/deploy/manifests/gitrello/gitrello-ingress.yaml b/deploy/manifests/tmp/gitrello-ingress.yaml similarity index 72% rename from deploy/manifests/gitrello/gitrello-ingress.yaml rename to deploy/manifests/tmp/gitrello-ingress.yaml index 390736d..8bfc7aa 100644 --- a/deploy/manifests/gitrello/gitrello-ingress.yaml +++ b/deploy/manifests/tmp/gitrello-ingress.yaml @@ -1,33 +1,33 @@ apiVersion: networking.k8s.io/v1 kind: Ingress metadata: - name: gitrello-ingress + name: tmp-ingress annotations: kubernetes.io/ingress.class: "nginx" spec: tls: - hosts: - - gitrello.me - - www.gitrello.me + - tmp.me + - www.tmp.me secretName: tls rules: - - host: gitrello.me + - host: tmp.me http: paths: - path: / pathType: Prefix backend: service: - name: gitrello + name: tmp port: number: 80 - - host: www.gitrello.me + - host: www.tmp.me http: paths: - path: / pathType: Prefix backend: service: - name: gitrello + name: tmp port: number: 80 diff --git a/deploy/manifests/gitrello/gitrello-service.yaml b/deploy/manifests/tmp/gitrello-service.yaml similarity index 75% rename from deploy/manifests/gitrello/gitrello-service.yaml rename to deploy/manifests/tmp/gitrello-service.yaml index c4876bf..287a7a4 100644 --- a/deploy/manifests/gitrello/gitrello-service.yaml +++ b/deploy/manifests/tmp/gitrello-service.yaml @@ -1,9 +1,9 @@ apiVersion: v1 kind: Service metadata: - name: gitrello + name: tmp labels: - app: gitrello + app: tmp spec: ports: - protocol: TCP @@ -11,5 +11,5 @@ spec: targetPort: 80 name: http selector: - app: gitrello + app: tmp type: ClusterIP diff --git a/deploy/manifests/gitrello/migrate-database-job.yaml b/deploy/manifests/tmp/migrate-database-job.yaml similarity index 94% rename from deploy/manifests/gitrello/migrate-database-job.yaml rename to deploy/manifests/tmp/migrate-database-job.yaml index 6718fb3..bb5f25a 100644 --- a/deploy/manifests/gitrello/migrate-database-job.yaml +++ b/deploy/manifests/tmp/migrate-database-job.yaml @@ -6,10 +6,10 @@ spec: template: spec: containers: - - name: gitrello-migrate-database - image: fnsdev/gitrello:current + - name: tmp-migrate-database + image: fnsdev/tmp:current imagePullPolicy: Always - command: ["sh", "-c", "python manage.py migrate --noinput --settings=gitrello.settings_prod"] + command: ["sh", "-c", "python manage.py migrate --noinput --settings=tmp.settings_prod"] env: - name: DJANGO_SECRET_KEY valueFrom: diff --git a/deploy/manifests/gitrello/run-tests-job.yaml b/deploy/manifests/tmp/run-tests-job.yaml similarity index 75% rename from deploy/manifests/gitrello/run-tests-job.yaml rename to deploy/manifests/tmp/run-tests-job.yaml index 96c238e..567cbbe 100644 --- a/deploy/manifests/gitrello/run-tests-job.yaml +++ b/deploy/manifests/tmp/run-tests-job.yaml @@ -6,34 +6,34 @@ spec: template: spec: containers: - - name: gitrello-tests - image: fnsdev/gitrello:test + - name: tmp-tests + image: fnsdev/tmp:gitrello imagePullPolicy: Always env: - name: DJANGO_DB_NAME valueFrom: secretKeyRef: - name: test-environment + name: gitrello-environment key: django_db_name - name: DJANGO_DB_USER valueFrom: secretKeyRef: - name: test-environment + name: gitrello-environment key: django_db_user - name: DJANGO_DB_PASSWORD valueFrom: secretKeyRef: - name: test-environment + name: gitrello-environment key: django_db_password - name: DJANGO_DB_HOST valueFrom: secretKeyRef: - name: test-environment + name: gitrello-environment key: django_db_host - name: DJANGO_DB_PORT valueFrom: secretKeyRef: - name: test-environment + name: gitrello-environment key: django_db_port restartPolicy: Never backoffLimit: 1 diff --git a/deploy/run_kubernetes_job.py b/deploy/run_kubernetes_job.py deleted file mode 100644 index 5be7625..0000000 --- a/deploy/run_kubernetes_job.py +++ /dev/null @@ -1,160 +0,0 @@ -# TODO it will not work correctly if job can fail and restart"" - -import argparse -import os -import sys -import time - -import requests - - -class KubernetesJobException(Exception): - pass - - -# TODO logging -class KubernetesJob: - ACTIVE = 'active' - SUCCEEDED = 'succeeded' - FAILED = 'failed' - - def __init__(self, name, file_name, k8s_url, k8s_token): - path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'manifests', 'gitrello', file_name)) - - with open(path, 'r') as file: - self.manifest = file.read() - self.name = name - self._url = k8s_url - self._token = k8s_token - - def clean_up(self): - headers = { - 'Authorization': f'Bearer {self._token}', - 'Content-Type': 'application/json', - } - data = { - 'kind': 'DeleteOptions', - 'apiVersion': 'batch/v1', - 'propagationPolicy': 'Background', - 'gracePeriodSeconds': 0, - } - - print('Cleaning up') - response = requests.delete( - f'{self._url}/apis/batch/v1/namespaces/default/jobs/{self.name}', - headers=headers, - json=data, - ) - if not response.status_code == 200: - print(response.text) - raise KubernetesJobException('Clean up failed') - - print('Clean up succeeded') - - def create(self): - headers = { - 'Authorization': f'Bearer {self._token}', - 'Content-Type': 'application/yaml', - } - - print('Creating job') - response = requests.post( - f'{self._url}/apis/batch/v1/namespaces/default/jobs', - data=self.manifest, - headers=headers - ) - - if response.status_code not in (200, 201, 202): - print(response.text) - raise KubernetesJobException('Creating job failed') - - print('Job created') - - def get_status(self): - headers = {'Authorization': f'Bearer {self._token}'} - - print('Getting status') - response = requests.get(f'{self._url}/apis/batch/v1/namespaces/default/jobs/{self.name}', headers=headers) - - if response.status_code != 200: - print(response.text) - raise KubernetesJobException('Check job status failed') - - response = response.json() - if response['status'].get('active') is not None: - return self.ACTIVE - - if response['status'].get('failed') is not None: - return self.FAILED - - return self.SUCCEEDED - - def get_logs(self): - headers = {'Authorization': f'Bearer {self._token}'} - - print('Getting logs') - response = requests.get( - f'{self._url}/api/v1/namespaces/default/pods?labelSelector=job-name%3D{self.name}', - headers=headers, - ) - if response.status_code != 200: - print(response.text) - raise KubernetesJobException('Get logs failed. Could not get pods list') - - pod = response.json()['items'][0] - pod_name = pod['metadata']['name'] - - response = requests.get(f'{self._url}/api/v1/namespaces/default/pods/{pod_name}/log', headers=headers) - - if response.status_code != 200: - print(response.text) - raise KubernetesJobException('Get logs failed. Could not get pod`s logs') - - return response.text - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument('-n', '--name', type=str) - parser.add_argument('-f', '--file-name', type=str) - parser.add_argument('-l', '--time-limit', type=int) - parser.add_argument('-s', '--sleep-time', type=int) - args = parser.parse_args() - - job = KubernetesJob( - name=args.name, - file_name=args.file_name, - k8s_url=os.getenv('K8S_URL'), - k8s_token=os.getenv('K8S_TOKEN'), - ) - - try: - job.create() - - waiting_for = 0 - while True: - time.sleep(args.sleep_time) - waiting_for += args.sleep_time - - status = job.get_status() - if status != job.ACTIVE or waiting_for >= args.time_limit: - break - - print(job.get_logs()) - print(f'Job status: {status}') - job.clean_up() - - if status != job.SUCCEEDED: - sys.exit(-1) - - except KubernetesJobException as e: - print(e) - job.clean_up() - sys.exit(-1) - except Exception as e: - print(e) - sys.exit(-1) - - -if __name__ == '__main__': - main() From 2e763a5704805d9de48b1cfb312443ce7f109faa Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sat, 5 Sep 2020 17:31:00 +0300 Subject: [PATCH 07/32] fix: correct include statement in _helpers.tpl --- deploy/manifests/gitrello/templates/_helpers.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/manifests/gitrello/templates/_helpers.tpl b/deploy/manifests/gitrello/templates/_helpers.tpl index e0707ef..e7d090d 100644 --- a/deploy/manifests/gitrello/templates/_helpers.tpl +++ b/deploy/manifests/gitrello/templates/_helpers.tpl @@ -34,7 +34,7 @@ Create chart name and version as used by the chart label. Common labels */}} {{- define "gitrello.labels" -}} -helm.sh/chart: {{ include "test.chart" . }} +helm.sh/chart: {{ include "gitrello.chart" . }} {{ include "gitrello.selectorLabels" . }} {{- if .Chart.AppVersion }} app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} From 08a68cae90dd11b253c04f688b08e7b3c043d52e Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sat, 5 Sep 2020 18:09:14 +0300 Subject: [PATCH 08/32] fix: gitrello helm chart --- .../gitrello/templates/deployment.yaml | 6 ++++ .../manifests/gitrello/templates/ingress.yaml | 13 ++++---- .../manifests/gitrello/templates/secret.yaml | 30 +++++++++---------- .../templates/tests/test-connection.yaml | 2 +- deploy/manifests/gitrello/values.yaml | 3 ++ 5 files changed, 33 insertions(+), 21 deletions(-) diff --git a/deploy/manifests/gitrello/templates/deployment.yaml b/deploy/manifests/gitrello/templates/deployment.yaml index b934fdc..cde9b48 100644 --- a/deploy/manifests/gitrello/templates/deployment.yaml +++ b/deploy/manifests/gitrello/templates/deployment.yaml @@ -39,10 +39,16 @@ spec: httpGet: path: / port: http + httpHeaders: + - name: Host + value: {{ .Values.host | quote }} readinessProbe: httpGet: path: / port: http + httpHeaders: + - name: Host + value: {{ .Values.host | quote }} resources: {{- toYaml .Values.deployment.resources | nindent 12 }} env: diff --git a/deploy/manifests/gitrello/templates/ingress.yaml b/deploy/manifests/gitrello/templates/ingress.yaml index cebc20e..f9180d9 100644 --- a/deploy/manifests/gitrello/templates/ingress.yaml +++ b/deploy/manifests/gitrello/templates/ingress.yaml @@ -28,10 +28,13 @@ spec: http: paths: {{- range .paths }} - - path: {{ . }} + - path: {{ .path }} + pathType: {{ .type }} backend: - serviceName: {{ $fullName }} - servicePort: {{ $svcPort }} + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} {{- end }} - {{- end }} - {{- end }} + {{- end}} +{{- end }} diff --git a/deploy/manifests/gitrello/templates/secret.yaml b/deploy/manifests/gitrello/templates/secret.yaml index 3c075e8..5c411ea 100644 --- a/deploy/manifests/gitrello/templates/secret.yaml +++ b/deploy/manifests/gitrello/templates/secret.yaml @@ -4,18 +4,18 @@ metadata: name: {{ .Values.secret.name }} type: Opaque stringData: - django_secret_key: {{ .Values.secret.django_secret_key }} - django_db_name: {{ .Values.secret.django_db_name }} - django_db_user: {{ .Values.secret.django_db_user }} - django_db_password: {{ .Values.secret.django_db_password }} - django_db_host: {{ .Values.secret.django_db_host }} - django_db_port: {{ .Values.secret.django_db_port }} - email_host_user: {{ .Values.secret.email_host_user }} - email_host_password: {{ .Values.secret.email_host_password }} - gs_bucket_name: {{ .Values.secret.gs_bucket_name }} - gs_project_id: {{ .Values.secret.gs_project_id }} - gs_credentials: {{ .Values.secret.gs_credentials }} - url: {{ .Values.secret.url }} - github_integration_service_url: {{ .Values.secret.github_integration_service_url }} - github_client_id: {{ .Values.secret.github_client_id }} - github_client_secret: {{ .Values.secret.github_client_secret }} + django_secret_key: {{ .Values.secret.django_secret_key | quote }} + django_db_name: {{ .Values.secret.django_db_name | quote }} + django_db_user: {{ .Values.secret.django_db_user | quote }} + django_db_password: {{ .Values.secret.django_db_password | quote }} + django_db_host: {{ .Values.secret.django_db_host | quote }} + django_db_port: {{ .Values.secret.django_db_port | quote }} + email_host_user: {{ .Values.secret.email_host_user | quote }} + email_host_password: {{ .Values.secret.email_host_password | quote }} + gs_bucket_name: {{ .Values.secret.gs_bucket_name | quote }} + gs_project_id: {{ .Values.secret.gs_project_id | quote }} + gs_credentials: {{ .Values.secret.gs_credentials | quote }} + url: {{ .Values.secret.url | quote }} + github_integration_service_url: {{ .Values.secret.github_integration_service_url | quote }} + github_client_id: {{ .Values.secret.github_client_id | quote }} + github_client_secret: {{ .Values.secret.github_client_secret | quote }} diff --git a/deploy/manifests/gitrello/templates/tests/test-connection.yaml b/deploy/manifests/gitrello/templates/tests/test-connection.yaml index 808a216..bbfe0fa 100644 --- a/deploy/manifests/gitrello/templates/tests/test-connection.yaml +++ b/deploy/manifests/gitrello/templates/tests/test-connection.yaml @@ -5,7 +5,7 @@ metadata: labels: {{- include "gitrello.labels" . | nindent 4 }} annotations: - "helm.sh/hook": gitrello-success + "helm.sh/hook": test-success spec: containers: - name: wget diff --git a/deploy/manifests/gitrello/values.yaml b/deploy/manifests/gitrello/values.yaml index 4c3df06..4993a06 100644 --- a/deploy/manifests/gitrello/values.yaml +++ b/deploy/manifests/gitrello/values.yaml @@ -2,6 +2,9 @@ # This is a YAML-formatted file. # Declare variables to be passed into your templates. +# Required for liveness & readiness probes +host: example.com + labels: app: gitrello From f1157c42bae021e3ad9c51837667e4df0e4e91d6 Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sat, 5 Sep 2020 18:13:17 +0300 Subject: [PATCH 09/32] feat: add ingress configuration example in values.yaml --- deploy/manifests/gitrello/values.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/deploy/manifests/gitrello/values.yaml b/deploy/manifests/gitrello/values.yaml index 4993a06..484285a 100644 --- a/deploy/manifests/gitrello/values.yaml +++ b/deploy/manifests/gitrello/values.yaml @@ -92,6 +92,15 @@ ingress: hosts: - host: chart-example.local paths: [] + # paths: + # - host: gitrello.me + # paths: + # - path: / + # type: Prefix + # - host: www.gitrello.me + # paths: + # - path: / + # type: Prefix tls: [] # - secretName: chart-example-tls # hosts: From 9ec24102d9bf3e3a944f2eaf58e008e6b2f928b8 Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sat, 5 Sep 2020 18:13:39 +0300 Subject: [PATCH 10/32] feat: delete not needed manifests --- deploy/manifests/tmp/collect-static-job.yaml | 71 ------------- .../default_admin_cluster_role_binding.yaml | 12 --- .../tmp/environment-secret-example.yaml | 21 ---- deploy/manifests/tmp/gitrello-deployment.yaml | 100 ------------------ deploy/manifests/tmp/gitrello-ingress.yaml | 33 ------ deploy/manifests/tmp/gitrello-service.yaml | 15 --- .../manifests/tmp/migrate-database-job.yaml | 71 ------------- deploy/manifests/tmp/run-tests-job.yaml | 40 ------- 8 files changed, 363 deletions(-) delete mode 100644 deploy/manifests/tmp/collect-static-job.yaml delete mode 100644 deploy/manifests/tmp/default_admin_cluster_role_binding.yaml delete mode 100644 deploy/manifests/tmp/environment-secret-example.yaml delete mode 100644 deploy/manifests/tmp/gitrello-deployment.yaml delete mode 100644 deploy/manifests/tmp/gitrello-ingress.yaml delete mode 100644 deploy/manifests/tmp/gitrello-service.yaml delete mode 100644 deploy/manifests/tmp/migrate-database-job.yaml delete mode 100644 deploy/manifests/tmp/run-tests-job.yaml diff --git a/deploy/manifests/tmp/collect-static-job.yaml b/deploy/manifests/tmp/collect-static-job.yaml deleted file mode 100644 index 9cceaf5..0000000 --- a/deploy/manifests/tmp/collect-static-job.yaml +++ /dev/null @@ -1,71 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: collect-static -spec: - template: - spec: - containers: - - name: tmp-collect-static - image: fnsdev/tmp:current - imagePullPolicy: Always - command: ["sh", "-c", "python manage.py collectstatic --noinput --settings=tmp.settings_prod"] - env: - - name: DJANGO_SECRET_KEY - valueFrom: - secretKeyRef: - name: environment - key: django_secret_key - - name: DJANGO_DB_NAME - valueFrom: - secretKeyRef: - name: environment - key: django_db_name - - name: DJANGO_DB_USER - valueFrom: - secretKeyRef: - name: environment - key: django_db_user - - name: DJANGO_DB_PASSWORD - valueFrom: - secretKeyRef: - name: environment - key: django_db_password - - name: DJANGO_DB_HOST - valueFrom: - secretKeyRef: - name: environment - key: django_db_host - - name: DJANGO_DB_PORT - valueFrom: - secretKeyRef: - name: environment - key: django_db_port - - name: EMAIL_HOST_USER - valueFrom: - secretKeyRef: - name: environment - key: email_host_user - - name: EMAIL_HOST_PASSWORD - valueFrom: - secretKeyRef: - name: environment - key: email_host_password - - name: GS_BUCKET_NAME - valueFrom: - secretKeyRef: - name: environment - key: gs_bucket_name - - name: GS_CREDENTIALS - valueFrom: - secretKeyRef: - name: environment - key: gs_credentials - - name: GS_PROJECT_ID - valueFrom: - secretKeyRef: - name: environment - key: gs_project_id - restartPolicy: Never - backoffLimit: 1 - activeDeadlineSeconds: 120 diff --git a/deploy/manifests/tmp/default_admin_cluster_role_binding.yaml b/deploy/manifests/tmp/default_admin_cluster_role_binding.yaml deleted file mode 100644 index 814efb9..0000000 --- a/deploy/manifests/tmp/default_admin_cluster_role_binding.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRoleBinding -metadata: - name: default-cluster-admin-role-binding -subjects: - - kind: ServiceAccount - name: default - namespace: default -roleRef: - kind: ClusterRole - name: cluster-admin - apiGroup: rbac.authorization.k8s.io diff --git a/deploy/manifests/tmp/environment-secret-example.yaml b/deploy/manifests/tmp/environment-secret-example.yaml deleted file mode 100644 index 71a091a..0000000 --- a/deploy/manifests/tmp/environment-secret-example.yaml +++ /dev/null @@ -1,21 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: environment -type: Opaque -stringData: - django_secret_key: "example" - django_db_name: "example" - django_db_user: "example" - django_db_password: "example" - django_db_host: "cockroachdb-public" - django_db_port: "26257" - email_host_user: "example@gmail.com" - email_host_password: "example" - gs_bucket_name: "example" - gs_project_id: "1111111" - gs_credentials: "credentials_json" - url: "https://example.com" - github_integration_service_url: "github-integration-service" - github_client_id: "example" - github_client_secret: "example" diff --git a/deploy/manifests/tmp/gitrello-deployment.yaml b/deploy/manifests/tmp/gitrello-deployment.yaml deleted file mode 100644 index f08fae0..0000000 --- a/deploy/manifests/tmp/gitrello-deployment.yaml +++ /dev/null @@ -1,100 +0,0 @@ -# TODO add requests & limits -# TODO increase replicas -apiVersion: apps/v1 -kind: Deployment -metadata: - name: tmp - labels: - app: tmp -spec: - replicas: 1 - selector: - matchLabels: - app: tmp - template: - metadata: - labels: - app: tmp - spec: - containers: - - image: fnsdev/tmp:latest - name: tmp - env: - - name: DJANGO_SECRET_KEY - valueFrom: - secretKeyRef: - name: environment - key: django_secret_key - - name: DJANGO_DB_NAME - valueFrom: - secretKeyRef: - name: environment - key: django_db_name - - name: DJANGO_DB_USER - valueFrom: - secretKeyRef: - name: environment - key: django_db_user - - name: DJANGO_DB_PASSWORD - valueFrom: - secretKeyRef: - name: environment - key: django_db_password - - name: DJANGO_DB_HOST - valueFrom: - secretKeyRef: - name: environment - key: django_db_host - - name: DJANGO_DB_PORT - valueFrom: - secretKeyRef: - name: environment - key: django_db_port - - name: EMAIL_HOST_USER - valueFrom: - secretKeyRef: - name: environment - key: email_host_user - - name: EMAIL_HOST_PASSWORD - valueFrom: - secretKeyRef: - name: environment - key: email_host_password - - name: GS_BUCKET_NAME - valueFrom: - secretKeyRef: - name: environment - key: gs_bucket_name - - name: GS_CREDENTIALS - valueFrom: - secretKeyRef: - name: environment - key: gs_credentials - - name: GS_PROJECT_ID - valueFrom: - secretKeyRef: - name: environment - key: gs_project_id - - name: URL - valueFrom: - secretKeyRef: - name: environment - key: url - - name: GITHUB_INTEGRATION_SERVICE_URL - valueFrom: - secretKeyRef: - name: environment - key: github_integration_service_url - - name: GITHUB_CLIENT_ID - valueFrom: - secretKeyRef: - name: environment - key: github_client_id - - name: GITHUB_CLIENT_SECRET - valueFrom: - secretKeyRef: - name: environment - key: github_client_secret - ports: - - containerPort: 80 - name: tmp diff --git a/deploy/manifests/tmp/gitrello-ingress.yaml b/deploy/manifests/tmp/gitrello-ingress.yaml deleted file mode 100644 index 8bfc7aa..0000000 --- a/deploy/manifests/tmp/gitrello-ingress.yaml +++ /dev/null @@ -1,33 +0,0 @@ -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: tmp-ingress - annotations: - kubernetes.io/ingress.class: "nginx" -spec: - tls: - - hosts: - - tmp.me - - www.tmp.me - secretName: tls - rules: - - host: tmp.me - http: - paths: - - path: / - pathType: Prefix - backend: - service: - name: tmp - port: - number: 80 - - host: www.tmp.me - http: - paths: - - path: / - pathType: Prefix - backend: - service: - name: tmp - port: - number: 80 diff --git a/deploy/manifests/tmp/gitrello-service.yaml b/deploy/manifests/tmp/gitrello-service.yaml deleted file mode 100644 index 287a7a4..0000000 --- a/deploy/manifests/tmp/gitrello-service.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: tmp - labels: - app: tmp -spec: - ports: - - protocol: TCP - port: 80 - targetPort: 80 - name: http - selector: - app: tmp - type: ClusterIP diff --git a/deploy/manifests/tmp/migrate-database-job.yaml b/deploy/manifests/tmp/migrate-database-job.yaml deleted file mode 100644 index bb5f25a..0000000 --- a/deploy/manifests/tmp/migrate-database-job.yaml +++ /dev/null @@ -1,71 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: migrate-database -spec: - template: - spec: - containers: - - name: tmp-migrate-database - image: fnsdev/tmp:current - imagePullPolicy: Always - command: ["sh", "-c", "python manage.py migrate --noinput --settings=tmp.settings_prod"] - env: - - name: DJANGO_SECRET_KEY - valueFrom: - secretKeyRef: - name: environment - key: django_secret_key - - name: DJANGO_DB_NAME - valueFrom: - secretKeyRef: - name: environment - key: django_db_name - - name: DJANGO_DB_USER - valueFrom: - secretKeyRef: - name: environment - key: django_db_user - - name: DJANGO_DB_PASSWORD - valueFrom: - secretKeyRef: - name: environment - key: django_db_password - - name: DJANGO_DB_HOST - valueFrom: - secretKeyRef: - name: environment - key: django_db_host - - name: DJANGO_DB_PORT - valueFrom: - secretKeyRef: - name: environment - key: django_db_port - - name: EMAIL_HOST_USER - valueFrom: - secretKeyRef: - name: environment - key: email_host_user - - name: EMAIL_HOST_PASSWORD - valueFrom: - secretKeyRef: - name: environment - key: email_host_password - - name: GS_BUCKET_NAME - valueFrom: - secretKeyRef: - name: environment - key: gs_bucket_name - - name: GS_CREDENTIALS - valueFrom: - secretKeyRef: - name: environment - key: gs_credentials - - name: GS_PROJECT_ID - valueFrom: - secretKeyRef: - name: environment - key: gs_project_id - restartPolicy: Never - backoffLimit: 1 - activeDeadlineSeconds: 120 diff --git a/deploy/manifests/tmp/run-tests-job.yaml b/deploy/manifests/tmp/run-tests-job.yaml deleted file mode 100644 index 567cbbe..0000000 --- a/deploy/manifests/tmp/run-tests-job.yaml +++ /dev/null @@ -1,40 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: run-tests -spec: - template: - spec: - containers: - - name: tmp-tests - image: fnsdev/tmp:gitrello - imagePullPolicy: Always - env: - - name: DJANGO_DB_NAME - valueFrom: - secretKeyRef: - name: gitrello-environment - key: django_db_name - - name: DJANGO_DB_USER - valueFrom: - secretKeyRef: - name: gitrello-environment - key: django_db_user - - name: DJANGO_DB_PASSWORD - valueFrom: - secretKeyRef: - name: gitrello-environment - key: django_db_password - - name: DJANGO_DB_HOST - valueFrom: - secretKeyRef: - name: gitrello-environment - key: django_db_host - - name: DJANGO_DB_PORT - valueFrom: - secretKeyRef: - name: gitrello-environment - key: django_db_port - restartPolicy: Never - backoffLimit: 1 - activeDeadlineSeconds: 120 From 39441ba023250a002c367a5e1d58a4ed4482a0b1 Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sat, 5 Sep 2020 21:42:33 +0300 Subject: [PATCH 11/32] feat: add Jenkinsfile --- deploy/Dockerfile => Dockerfile | 2 +- Jenkinsfile | 100 +++++++ .../cockroachdb/cockroachdb-pv-0.yaml | 0 .../cockroachdb/cockroachdb-pv-1.yaml | 0 .../cockroachdb/cockroachdb-pv-2.yaml | 0 .../cockroachdb/values.yaml | 0 .../gitrello/.helmignore | 0 .../gitrello/Chart.yaml | 0 .../gitrello/charts/.gitkeep | 0 .../gitrello/templates/NOTES.txt | 0 .../gitrello/templates/_helpers.tpl | 0 .../gitrello/templates/deployment.yaml | 0 .../gitrello/templates/ingress.yaml | 0 .../gitrello/templates/secret.yaml | 0 .../gitrello/templates/service.yaml | 0 .../gitrello/templates/serviceaccount.yaml | 0 .../templates/tests/test-connection.yaml | 0 .../gitrello/values.yaml | 18 +- .../ingress-nginx/values.yaml | 0 .../jenkins/jenkins-ingress.yaml | 0 .../jenkins/jenkins-pv.yaml | 0 .../jenkins/values.yaml | 0 .../metallb/metallb-config-example.yaml | 0 poetry.lock | 44 +-- pyproject.toml | 2 +- requirements.txt | 278 ++++++++++++++++++ 26 files changed, 411 insertions(+), 33 deletions(-) rename deploy/Dockerfile => Dockerfile (97%) create mode 100644 Jenkinsfile rename {deploy/manifests => manifests}/cockroachdb/cockroachdb-pv-0.yaml (100%) rename {deploy/manifests => manifests}/cockroachdb/cockroachdb-pv-1.yaml (100%) rename {deploy/manifests => manifests}/cockroachdb/cockroachdb-pv-2.yaml (100%) rename {deploy/manifests => manifests}/cockroachdb/values.yaml (100%) rename {deploy/manifests => manifests}/gitrello/.helmignore (100%) rename {deploy/manifests => manifests}/gitrello/Chart.yaml (100%) rename {deploy/manifests => manifests}/gitrello/charts/.gitkeep (100%) rename {deploy/manifests => manifests}/gitrello/templates/NOTES.txt (100%) rename {deploy/manifests => manifests}/gitrello/templates/_helpers.tpl (100%) rename {deploy/manifests => manifests}/gitrello/templates/deployment.yaml (100%) rename {deploy/manifests => manifests}/gitrello/templates/ingress.yaml (100%) rename {deploy/manifests => manifests}/gitrello/templates/secret.yaml (100%) rename {deploy/manifests => manifests}/gitrello/templates/service.yaml (100%) rename {deploy/manifests => manifests}/gitrello/templates/serviceaccount.yaml (100%) rename {deploy/manifests => manifests}/gitrello/templates/tests/test-connection.yaml (100%) rename {deploy/manifests => manifests}/gitrello/values.yaml (91%) rename {deploy/manifests => manifests}/ingress-nginx/values.yaml (100%) rename {deploy/manifests => manifests}/jenkins/jenkins-ingress.yaml (100%) rename {deploy/manifests => manifests}/jenkins/jenkins-pv.yaml (100%) rename {deploy/manifests => manifests}/jenkins/values.yaml (100%) rename {deploy/manifests => manifests}/metallb/metallb-config-example.yaml (100%) create mode 100644 requirements.txt diff --git a/deploy/Dockerfile b/Dockerfile similarity index 97% rename from deploy/Dockerfile rename to Dockerfile index 6f08ab0..41ecd33 100644 --- a/deploy/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.8.3-slim-buster AS base +FROM python:3.8.5-slim-buster AS base ENV PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 \ PIP_NO_CACHE_DIR=off \ diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..5dcbf24 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,100 @@ +def tag + +pipeline { + environment { + IMAGE_NAME = 'fnsdev/test' + } + agent { + kubernetes { + defaultContainer 'jnlp' + yaml """ + apiVersion: v1 + kind: Pod + metadata: + name: ci + labels: + app: jenkins + spec: + containers: + - name: python + image: python:3.8.5-slim-buster + command: + - cat + tty: true + - name: docker + image: docker:19.03 + command: + - cat + tty: true + volumeMounts: + - name: dockersock + mountPath: /var/run/docker.sock + - name: helm + image: lachlanevenson/k8s-helm:v3.3.1 + command: + - cat + tty: true + volumes: + - name: dockersock + hostPath: + path: /var/run/docker.sock + """ + } + } + stages { + stage ('Run tests') { + environment { + DJANGO_DB_NAME = credentials('django-db-name') + DJANGO_DB_USER = credentials('django-db-user') + DJANGO_DB_HOST = credentials('django-db-host') + DJANGO_DB_PORT = credentials('django-db-port') + DJANGO_DB_PASSWORD = credentials('django-db-password') + } + steps { + container('python') { + sh """ + apt-get update && \ + apt-get install --no-install-recommends -y libpq-dev && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + """ + sh "pip install -r requirements.txt" + sh "python gitrello/manage.py test" + } + } + } + stage ('Set tag') { + steps { + script { + tag = sh(script: 'git describe', returnStdout: true).trim() + } + } + } + stage('Build image') { + steps { + container('docker') { + sh "docker build -t ${IMAGE_NAME}:${tag} ." + } + } + } + stage('Publish image') { + steps { + container('docker') { + withCredentials([usernamePassword(credentialsId: 'dockerhub', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) { + sh "echo ${PASSWORD} | docker login -u ${USERNAME} --password-stdin" + sh "docker push ${IMAGE_NAME}:${tag}" + } + } + } + } +// stage('Deploy chart') { +// steps { +// container('helm') { +// withCredentials([file(credentialsId: 'overrides', variable: 'OVERRIDES')]) { +// sh "helm upgrade test --install ./helm/test -f ${OVERRIDES} --set deployment.image.tag=${tag}" +// } +// } +// } +// } + } +} diff --git a/deploy/manifests/cockroachdb/cockroachdb-pv-0.yaml b/manifests/cockroachdb/cockroachdb-pv-0.yaml similarity index 100% rename from deploy/manifests/cockroachdb/cockroachdb-pv-0.yaml rename to manifests/cockroachdb/cockroachdb-pv-0.yaml diff --git a/deploy/manifests/cockroachdb/cockroachdb-pv-1.yaml b/manifests/cockroachdb/cockroachdb-pv-1.yaml similarity index 100% rename from deploy/manifests/cockroachdb/cockroachdb-pv-1.yaml rename to manifests/cockroachdb/cockroachdb-pv-1.yaml diff --git a/deploy/manifests/cockroachdb/cockroachdb-pv-2.yaml b/manifests/cockroachdb/cockroachdb-pv-2.yaml similarity index 100% rename from deploy/manifests/cockroachdb/cockroachdb-pv-2.yaml rename to manifests/cockroachdb/cockroachdb-pv-2.yaml diff --git a/deploy/manifests/cockroachdb/values.yaml b/manifests/cockroachdb/values.yaml similarity index 100% rename from deploy/manifests/cockroachdb/values.yaml rename to manifests/cockroachdb/values.yaml diff --git a/deploy/manifests/gitrello/.helmignore b/manifests/gitrello/.helmignore similarity index 100% rename from deploy/manifests/gitrello/.helmignore rename to manifests/gitrello/.helmignore diff --git a/deploy/manifests/gitrello/Chart.yaml b/manifests/gitrello/Chart.yaml similarity index 100% rename from deploy/manifests/gitrello/Chart.yaml rename to manifests/gitrello/Chart.yaml diff --git a/deploy/manifests/gitrello/charts/.gitkeep b/manifests/gitrello/charts/.gitkeep similarity index 100% rename from deploy/manifests/gitrello/charts/.gitkeep rename to manifests/gitrello/charts/.gitkeep diff --git a/deploy/manifests/gitrello/templates/NOTES.txt b/manifests/gitrello/templates/NOTES.txt similarity index 100% rename from deploy/manifests/gitrello/templates/NOTES.txt rename to manifests/gitrello/templates/NOTES.txt diff --git a/deploy/manifests/gitrello/templates/_helpers.tpl b/manifests/gitrello/templates/_helpers.tpl similarity index 100% rename from deploy/manifests/gitrello/templates/_helpers.tpl rename to manifests/gitrello/templates/_helpers.tpl diff --git a/deploy/manifests/gitrello/templates/deployment.yaml b/manifests/gitrello/templates/deployment.yaml similarity index 100% rename from deploy/manifests/gitrello/templates/deployment.yaml rename to manifests/gitrello/templates/deployment.yaml diff --git a/deploy/manifests/gitrello/templates/ingress.yaml b/manifests/gitrello/templates/ingress.yaml similarity index 100% rename from deploy/manifests/gitrello/templates/ingress.yaml rename to manifests/gitrello/templates/ingress.yaml diff --git a/deploy/manifests/gitrello/templates/secret.yaml b/manifests/gitrello/templates/secret.yaml similarity index 100% rename from deploy/manifests/gitrello/templates/secret.yaml rename to manifests/gitrello/templates/secret.yaml diff --git a/deploy/manifests/gitrello/templates/service.yaml b/manifests/gitrello/templates/service.yaml similarity index 100% rename from deploy/manifests/gitrello/templates/service.yaml rename to manifests/gitrello/templates/service.yaml diff --git a/deploy/manifests/gitrello/templates/serviceaccount.yaml b/manifests/gitrello/templates/serviceaccount.yaml similarity index 100% rename from deploy/manifests/gitrello/templates/serviceaccount.yaml rename to manifests/gitrello/templates/serviceaccount.yaml diff --git a/deploy/manifests/gitrello/templates/tests/test-connection.yaml b/manifests/gitrello/templates/tests/test-connection.yaml similarity index 100% rename from deploy/manifests/gitrello/templates/tests/test-connection.yaml rename to manifests/gitrello/templates/tests/test-connection.yaml diff --git a/deploy/manifests/gitrello/values.yaml b/manifests/gitrello/values.yaml similarity index 91% rename from deploy/manifests/gitrello/values.yaml rename to manifests/gitrello/values.yaml index 484285a..e265931 100644 --- a/deploy/manifests/gitrello/values.yaml +++ b/manifests/gitrello/values.yaml @@ -92,15 +92,15 @@ ingress: hosts: - host: chart-example.local paths: [] - # paths: - # - host: gitrello.me - # paths: - # - path: / - # type: Prefix - # - host: www.gitrello.me - # paths: - # - path: / - # type: Prefix + # paths: + # - host: gitrello.me + # paths: + # - path: / + # type: Prefix + # - host: www.gitrello.me + # paths: + # - path: / + # type: Prefix tls: [] # - secretName: chart-example-tls # hosts: diff --git a/deploy/manifests/ingress-nginx/values.yaml b/manifests/ingress-nginx/values.yaml similarity index 100% rename from deploy/manifests/ingress-nginx/values.yaml rename to manifests/ingress-nginx/values.yaml diff --git a/deploy/manifests/jenkins/jenkins-ingress.yaml b/manifests/jenkins/jenkins-ingress.yaml similarity index 100% rename from deploy/manifests/jenkins/jenkins-ingress.yaml rename to manifests/jenkins/jenkins-ingress.yaml diff --git a/deploy/manifests/jenkins/jenkins-pv.yaml b/manifests/jenkins/jenkins-pv.yaml similarity index 100% rename from deploy/manifests/jenkins/jenkins-pv.yaml rename to manifests/jenkins/jenkins-pv.yaml diff --git a/deploy/manifests/jenkins/values.yaml b/manifests/jenkins/values.yaml similarity index 100% rename from deploy/manifests/jenkins/values.yaml rename to manifests/jenkins/values.yaml diff --git a/deploy/manifests/metallb/metallb-config-example.yaml b/manifests/metallb/metallb-config-example.yaml similarity index 100% rename from deploy/manifests/metallb/metallb-config-example.yaml rename to manifests/metallb/metallb-config-example.yaml diff --git a/poetry.lock b/poetry.lock index 889dad4..a29684b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -67,7 +67,7 @@ description = "A high-level Python Web framework that encourages rapid developme name = "django" optional = false python-versions = ">=3.6" -version = "3.1" +version = "3.1.1" [package.dependencies] asgiref = ">=3.2.10,<3.3.0" @@ -102,11 +102,11 @@ category = "main" description = "Support for many storage backends in Django" name = "django-storages" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "1.9.1" +python-versions = ">=3.5" +version = "1.10" [package.dependencies] -Django = ">=1.11" +Django = ">=2.2" [package.dependencies.google-cloud-storage] optional = true @@ -160,10 +160,10 @@ description = "Google API client core library" name = "google-api-core" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" -version = "1.22.1" +version = "1.22.2" [package.dependencies] -google-auth = ">=1.19.1,<2.0dev" +google-auth = ">=1.21.1,<2.0dev" googleapis-common-protos = ">=1.6.0,<2.0dev" protobuf = ">=3.12.0" pytz = "*" @@ -182,7 +182,7 @@ description = "Google Authentication Library" name = "google-auth" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" -version = "1.20.1" +version = "1.21.1" [package.dependencies] cachetools = ">=2.0.0,<5.0" @@ -214,12 +214,12 @@ description = "Google Cloud Storage API client library" name = "google-cloud-storage" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" -version = "1.30.0" +version = "1.31.0" [package.dependencies] google-auth = ">=1.11.0,<2.0dev" -google-cloud-core = ">=1.2.0,<2.0dev" -google-resumable-media = ">=0.6.0,<2.0dev" +google-cloud-core = ">=1.4.1,<2.0dev" +google-resumable-media = ">=1.0.0,<2.0dev" [[package]] category = "main" @@ -614,8 +614,8 @@ python-versions = ">=3.6.1" version = "8.1" [metadata] -content-hash = "3ea42246ab70bab83dcace60b236dbfb5b4f8617977caf53bed5c097f2741f32" -python-versions = "3.8.3" +content-hash = "0b464071969ac68e458ffc12f368bd8ae4b6f696d5ac8003ba4433e52c8ad589" +python-versions = "3.8.5" [metadata.files] aniso8601 = [ @@ -673,8 +673,8 @@ click = [ {file = "click-7.1.2.tar.gz", hash = "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a"}, ] django = [ - {file = "Django-3.1-py3-none-any.whl", hash = "sha256:1a63f5bb6ff4d7c42f62a519edc2adbb37f9b78068a5a862beff858b68e3dc8b"}, - {file = "Django-3.1.tar.gz", hash = "sha256:2d390268a13c655c97e0e2ede9d117007996db692c1bb93eabebd4fb7ea7012b"}, + {file = "Django-3.1.1-py3-none-any.whl", hash = "sha256:b5fbb818e751f660fa2d576d9f40c34a4c615c8b48dd383f5216e609f383371f"}, + {file = "Django-3.1.1.tar.gz", hash = "sha256:59c8125ca873ed3bdae9c12b146fbbd6ed8d0f743e4cf5f5817af50c51f1fc2f"}, ] django-cockroachdb = [ {file = "django-cockroachdb-3.1.tar.gz", hash = "sha256:3acb36906ac0b7725f3847e21ca6dc9ff83975b5672156edea0b74ce281baf9d"}, @@ -685,8 +685,8 @@ django-filter = [ {file = "django_filter-2.3.0-py3-none-any.whl", hash = "sha256:616848eab6fc50193a1b3730140c49b60c57a3eda1f7fc57fa8505ac156c6c75"}, ] django-storages = [ - {file = "django-storages-1.9.1.tar.gz", hash = "sha256:a59e9923cbce7068792f75344ed7727021ee4ac20f227cf17297d0d03d141e91"}, - {file = "django_storages-1.9.1-py2.py3-none-any.whl", hash = "sha256:3103991c2ee8cef8a2ff096709973ffe7106183d211a79f22cf855f33533d924"}, + {file = "django-storages-1.10.tar.gz", hash = "sha256:36ed8dab33d761954498189592ce005920095fcbc02dab4184eb51393c370991"}, + {file = "django_storages-1.10-py3-none-any.whl", hash = "sha256:1e37da57678e6cf1e9914f84099a305323e4e1f261afe54fdb703cae7aa6fbc3"}, ] djangorestframework = [ {file = "djangorestframework-3.11.1-py3-none-any.whl", hash = "sha256:8b1ac62c581dbc5799b03e535854b92fc4053ecfe74bad3f9c05782063d4196b"}, @@ -701,20 +701,20 @@ faker = [ {file = "Faker-4.1.2.tar.gz", hash = "sha256:ff188c416864e3f7d8becd8f9ee683a4b4101a2a2d2bcdcb3e84bb1bdd06eaae"}, ] google-api-core = [ - {file = "google-api-core-1.22.1.tar.gz", hash = "sha256:35cba563034d668ae90ffe1f03193a84e745b38f09592f60258358b5e5ee6238"}, - {file = "google_api_core-1.22.1-py2.py3-none-any.whl", hash = "sha256:431839101b7edc7b0e6cccca0441cb9015f728fc5f098e146e123bf523e8cf71"}, + {file = "google-api-core-1.22.2.tar.gz", hash = "sha256:779107f17e0fef8169c5239d56a8fbff03f9f72a3893c0c9e5842ec29dfedd54"}, + {file = "google_api_core-1.22.2-py2.py3-none-any.whl", hash = "sha256:67e33a852dcca7cb7eff49abc35c8cc2c0bb8ab11397dc8306d911505cae2990"}, ] google-auth = [ - {file = "google-auth-1.20.1.tar.gz", hash = "sha256:2f34dd810090d0d4c9d5787c4ad7b4413d1fbfb941e13682c7a2298d3b6cdcc8"}, - {file = "google_auth-1.20.1-py2.py3-none-any.whl", hash = "sha256:ce1fb80b5c6d3dd038babcc43e221edeafefc72d983b3dc28b67b996f76f00b9"}, + {file = "google-auth-1.21.1.tar.gz", hash = "sha256:bcbd9f970e7144fe933908aa286d7a12c44b7deb6d78a76871f0377a29d09789"}, + {file = "google_auth-1.21.1-py2.py3-none-any.whl", hash = "sha256:f4d5093f13b1b1c0a434ab1dc851cd26a983f86a4d75c95239974e33ed406a87"}, ] google-cloud-core = [ {file = "google-cloud-core-1.4.1.tar.gz", hash = "sha256:613e56f164b6bee487dd34f606083a0130f66f42f7b10f99730afdf1630df507"}, {file = "google_cloud_core-1.4.1-py2.py3-none-any.whl", hash = "sha256:4c9e457fcfc026fdde2e492228f04417d4c717fb0f29f070122fb0ab89e34ebd"}, ] google-cloud-storage = [ - {file = "google-cloud-storage-1.30.0.tar.gz", hash = "sha256:0634addb7576d48861d9963312fc82a0436042b8f282414ed58ca76d73edee54"}, - {file = "google_cloud_storage-1.30.0-py2.py3-none-any.whl", hash = "sha256:02ac63059c798d4b8ba9057921be745707dc2d3316f5f366de91c24cc23cd77e"}, + {file = "google-cloud-storage-1.31.0.tar.gz", hash = "sha256:4f51c7700242a9d54c07117f25fec5d110ab85435b3ce60ac28cc553f8ea938b"}, + {file = "google_cloud_storage-1.31.0-py2.py3-none-any.whl", hash = "sha256:34fb8f7e8a2a633cbfb09d8dec38b3450c4029af1a328a67bca64f6226a1f4a5"}, ] google-crc32c = [ {file = "google-crc32c-1.0.0.tar.gz", hash = "sha256:9439b960b6ecd847557675d130fc3626d762bf535da595c20a6949a705fb3eae"}, diff --git a/pyproject.toml b/pyproject.toml index 0388648..d248afa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ description = "Trello clone with GitHub integration" authors = ["Uladzislau Stasheuski "] [tool.poetry.dependencies] -python = "3.8.3" +python = "3.8.5" django = "^3.0.8" django-cockroachdb = "^3.0.1" django-filter = "^2.3.0" diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..599445a --- /dev/null +++ b/requirements.txt @@ -0,0 +1,278 @@ +aniso8601==7.0.0 \ + --hash=sha256:d10a4bf949f619f719b227ef5386e31f49a2b6d453004b21f02661ccc8670c7b \ + --hash=sha256:513d2b6637b7853806ae79ffaca6f3e8754bdd547048f5ccc1420aec4b714f1e +asgiref==3.2.10 \ + --hash=sha256:9fc6fb5d39b8af147ba40765234fa822b39818b12cc80b35ad9b0cef3a476aed \ + --hash=sha256:7e51911ee147dd685c3c8b805c0ad0cb58d360987b56953878f8c06d2d1c6f1a +cachetools==4.1.1 \ + --hash=sha256:513d4ff98dd27f85743a8dc0e92f55ddb1b49e060c2d5961512855cda2c01a98 \ + --hash=sha256:bbaa39c3dede00175df2dc2b03d0cf18dd2d32a7de7beb68072d13043c9edb20 +certifi==2020.6.20 \ + --hash=sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41 \ + --hash=sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3 +cffi==1.14.2; python_version >= "3.5" \ + --hash=sha256:da9d3c506f43e220336433dffe643fbfa40096d408cb9b7f2477892f369d5f82 \ + --hash=sha256:23e44937d7695c27c66a54d793dd4b45889a81b35c0751ba91040fe825ec59c4 \ + --hash=sha256:0da50dcbccd7cb7e6c741ab7912b2eff48e85af217d72b57f80ebc616257125e \ + --hash=sha256:76ada88d62eb24de7051c5157a1a78fd853cca9b91c0713c2e973e4196271d0c \ + --hash=sha256:15a5f59a4808f82d8ec7364cbace851df591c2d43bc76bcbe5c4543a7ddd1bf1 \ + --hash=sha256:e4082d832e36e7f9b2278bc774886ca8207346b99f278e54c9de4834f17232f7 \ + --hash=sha256:57214fa5430399dffd54f4be37b56fe22cedb2b98862550d43cc085fb698dc2c \ + --hash=sha256:6843db0343e12e3f52cc58430ad559d850a53684f5b352540ca3f1bc56df0731 \ + --hash=sha256:577791f948d34d569acb2d1add5831731c59d5a0c50a6d9f629ae1cefd9ca4a0 \ + --hash=sha256:8662aabfeab00cea149a3d1c2999b0731e70c6b5bac596d95d13f643e76d3d4e \ + --hash=sha256:837398c2ec00228679513802e3744d1e8e3cb1204aa6ad408b6aff081e99a487 \ + --hash=sha256:bf44a9a0141a082e89c90e8d785b212a872db793a0080c20f6ae6e2a0ebf82ad \ + --hash=sha256:29c4688ace466a365b85a51dcc5e3c853c1d283f293dfcc12f7a77e498f160d2 \ + --hash=sha256:99cc66b33c418cd579c0f03b77b94263c305c389cb0c6972dac420f24b3bf123 \ + --hash=sha256:65867d63f0fd1b500fa343d7798fa64e9e681b594e0a07dc934c13e76ee28fb1 \ + --hash=sha256:f5033952def24172e60493b68717792e3aebb387a8d186c43c020d9363ee7281 \ + --hash=sha256:7057613efefd36cacabbdbcef010e0a9c20a88fc07eb3e616019ea1692fa5df4 \ + --hash=sha256:6539314d84c4d36f28d73adc1b45e9f4ee2a89cdc7e5d2b0a6dbacba31906798 \ + --hash=sha256:672b539db20fef6b03d6f7a14b5825d57c98e4026401fce838849f8de73fe4d4 \ + --hash=sha256:95e9094162fa712f18b4f60896e34b621df99147c2cee216cfa8f022294e8e9f \ + --hash=sha256:b9aa9d8818c2e917fa2c105ad538e222a5bce59777133840b93134022a7ce650 \ + --hash=sha256:e4b9b7af398c32e408c00eb4e0d33ced2f9121fd9fb978e6c1b57edd014a7d15 \ + --hash=sha256:e613514a82539fc48291d01933951a13ae93b6b444a88782480be32245ed4afa \ + --hash=sha256:9b219511d8b64d3fa14261963933be34028ea0e57455baf6781fe399c2c3206c \ + --hash=sha256:c0b48b98d79cf795b0916c57bebbc6d16bb43b9fc9b8c9f57f4cf05881904c75 \ + --hash=sha256:15419020b0e812b40d96ec9d369b2bc8109cc3295eac6e013d3261343580cc7e \ + --hash=sha256:12a453e03124069b6896107ee133ae3ab04c624bb10683e1ed1c1663df17c13c \ + --hash=sha256:ae8f34d50af2c2154035984b8b5fc5d9ed63f32fe615646ab435b05b132ca91b +chardet==3.0.4 \ + --hash=sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691 \ + --hash=sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae +click==7.1.2 \ + --hash=sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc \ + --hash=sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a +django==3.1.1 \ + --hash=sha256:b5fbb818e751f660fa2d576d9f40c34a4c615c8b48dd383f5216e609f383371f \ + --hash=sha256:59c8125ca873ed3bdae9c12b146fbbd6ed8d0f743e4cf5f5817af50c51f1fc2f +django-cockroachdb==3.1 \ + --hash=sha256:3acb36906ac0b7725f3847e21ca6dc9ff83975b5672156edea0b74ce281baf9d \ + --hash=sha256:75bc2bbc2475b2596a2c56d18946220d40d27b87fef961aac10d4a77c5b6e4de +django-filter==2.3.0 \ + --hash=sha256:11e63dd759835d9ba7a763926ffb2662cf8a6dcb4c7971a95064de34dbc7e5af \ + --hash=sha256:616848eab6fc50193a1b3730140c49b60c57a3eda1f7fc57fa8505ac156c6c75 +django-storages==1.10 \ + --hash=sha256:36ed8dab33d761954498189592ce005920095fcbc02dab4184eb51393c370991 \ + --hash=sha256:1e37da57678e6cf1e9914f84099a305323e4e1f261afe54fdb703cae7aa6fbc3 +djangorestframework==3.11.1 \ + --hash=sha256:8b1ac62c581dbc5799b03e535854b92fc4053ecfe74bad3f9c05782063d4196b \ + --hash=sha256:6dd02d5a4bd2516fb93f80360673bf540c3b6641fec8766b1da2870a5aa00b32 +factory-boy==2.12.0 \ + --hash=sha256:728df59b372c9588b83153facf26d3d28947fc750e8e3c95cefa9bed0e6394ee \ + --hash=sha256:faf48d608a1735f0d0a3c9cbf536d64f9132b547dae7ba452c4d99a79e84a370 +faker==4.1.2 \ + --hash=sha256:bc4b8c908dfcd84e4fe5d9fa2e52fbe17546515fb8f126909b98c47badf05658 \ + --hash=sha256:ff188c416864e3f7d8becd8f9ee683a4b4101a2a2d2bcdcb3e84bb1bdd06eaae +google-api-core==1.22.2 \ + --hash=sha256:779107f17e0fef8169c5239d56a8fbff03f9f72a3893c0c9e5842ec29dfedd54 \ + --hash=sha256:67e33a852dcca7cb7eff49abc35c8cc2c0bb8ab11397dc8306d911505cae2990 +google-auth==1.21.1 \ + --hash=sha256:bcbd9f970e7144fe933908aa286d7a12c44b7deb6d78a76871f0377a29d09789 \ + --hash=sha256:f4d5093f13b1b1c0a434ab1dc851cd26a983f86a4d75c95239974e33ed406a87 +google-cloud-core==1.4.1 \ + --hash=sha256:613e56f164b6bee487dd34f606083a0130f66f42f7b10f99730afdf1630df507 \ + --hash=sha256:4c9e457fcfc026fdde2e492228f04417d4c717fb0f29f070122fb0ab89e34ebd +google-cloud-storage==1.31.0 \ + --hash=sha256:4f51c7700242a9d54c07117f25fec5d110ab85435b3ce60ac28cc553f8ea938b \ + --hash=sha256:34fb8f7e8a2a633cbfb09d8dec38b3450c4029af1a328a67bca64f6226a1f4a5 +google-crc32c==1.0.0; python_version >= "3.5" \ + --hash=sha256:9439b960b6ecd847557675d130fc3626d762bf535da595c20a6949a705fb3eae \ + --hash=sha256:7b5ccdc7697ca54351d2965d4241f907d53f26f5288710bed505f8c3776ed235 \ + --hash=sha256:f3b859200c3bc73925b1719ed8b1f6d8d73b6620b42dbc121c4df58423045e34 \ + --hash=sha256:1a613f43534c9a345cc86fc6531bda477e2473cb876b6e26aee22b8060917069 \ + --hash=sha256:b7ee33659231c8205bb05559781ac61a325f31b06b917b3e997bea5c2c49ff4d \ + --hash=sha256:176cef33c9ad2a56977efd084646b378e50ab14b43a7c0a16e956bc3e3ec130a \ + --hash=sha256:b6fad0842a02abd270f8b660db082d37d197ab80aa4db6a2ddbfcf472eade9e7 \ + --hash=sha256:00b34d4c9ac565b2be553f81f58e5861e51d43af2043ed7cbfe1853ee2f54671 \ + --hash=sha256:438d6c314a52d50a9523460024e655a3d27774adde47d72eebccc89dc9eec992 \ + --hash=sha256:6fd5d861421c37786b9c1a87dc7b0d8349a426151a461d5724b76c5a07f6ae9b \ + --hash=sha256:cda3a6829e8b5bf6058615e53387430d004590c9b0ad808e53fea5bec35bbe44 \ + --hash=sha256:7f44c5259f6b2f8b2b6f668dbaa954693a10e97811345c193e46b933c2dd5165 \ + --hash=sha256:337566ce49d7ea7493f95bd6bc89ab08640caa91b6105cea0be57ed026980e74 \ + --hash=sha256:f54c90058e3f56e55fa0f699c6f4ceaaa825ea7f17ef2adbf07b2b06b27455e7 \ + --hash=sha256:ec4d91c9236b0576d9d2b23c7eb85c6a6372b88afe2d0c64681cf11629586f74 \ + --hash=sha256:17223ac9135eab28e874ff1e221810190d109a1abd482451d0776dc388be14de \ + --hash=sha256:cf373207380e54c42da6c88baf1f7a31c2d9f29b87c9c922d5147d219eed55aa \ + --hash=sha256:41fb6c22cd72ae3db4d98d28dbb768d53397c8fc3cb8ab945fd434e842e622d4 +google-resumable-media==1.0.0 \ + --hash=sha256:173acc6bade1480a529fa29c6c2717543ae2dc09d42e9461fdb86f39502efcf2 \ + --hash=sha256:99b5ac33a75ddb25d5e6aad487b37ecb4fa18b1fbf3d1ad726e032c3d6fc9aff +googleapis-common-protos==1.52.0 \ + --hash=sha256:560716c807117394da12cecb0a54da5a451b5cf9866f1d37e9a5e2329a665351 \ + --hash=sha256:c8961760f5aad9a711d37b675be103e0cc4e9a39327e0d6d857872f698403e24 +graphene==2.1.8 \ + --hash=sha256:09165f03e1591b76bf57b133482db9be6dac72c74b0a628d3c93182af9c5a896 \ + --hash=sha256:2cbe6d4ef15cfc7b7805e0760a0e5b80747161ce1b0f990dfdc0d2cf497c12f9 +graphene-django==2.13.0 \ + --hash=sha256:8a4efc7bf954ba0b5a28d3cdb090b36941aca6b83d211e3cd3ab29cf53ac6154 \ + --hash=sha256:0e33cdec0774284175c387c2af1e0ef4eb0f4e10a56a3a1b2d39bc3a74d9a538 +-e git+https://github.com/FNSdev/graphene-django-optimizer.git@e1a3d0412d06f6b95bb9505d5fa6f161c7013446#egg=graphene-django-optimizer +graphql-core==2.3.2 \ + --hash=sha256:aac46a9ac524c9855910c14c48fc5d60474def7f99fd10245e76608eba7af746 \ + --hash=sha256:44c9bac4514e5e30c5a595fac8e3c76c1975cae14db215e8174c7fe995825bad +graphql-relay==2.0.1 \ + --hash=sha256:870b6b5304123a38a0b215a79eace021acce5a466bf40cd39fa18cb8528afabb \ + --hash=sha256:ac514cb86db9a43014d7e73511d521137ac12cf0101b2eaa5f0a3da2e10d913d +h11==0.9.0 \ + --hash=sha256:4bc6d6a1238b7615b266ada57e0618568066f57dd6fa967d1290ec9309b2f2f1 \ + --hash=sha256:33d4bca7be0fa039f4e84d50ab00531047e53d6ee8ffbc83501ea602c169cae1 +httptools==0.1.1; sys_platform != "win32" and sys_platform != "cygwin" and platform_python_implementation != "PyPy" \ + --hash=sha256:a2719e1d7a84bb131c4f1e0cb79705034b48de6ae486eb5297a139d6a3296dce \ + --hash=sha256:fa3cd71e31436911a44620473e873a256851e1f53dee56669dae403ba41756a4 \ + --hash=sha256:86c6acd66765a934e8730bf0e9dfaac6fdcf2a4334212bd4a0a1c78f16475ca6 \ + --hash=sha256:bc3114b9edbca5a1eb7ae7db698c669eb53eb8afbbebdde116c174925260849c \ + --hash=sha256:ac0aa11e99454b6a66989aa2d44bca41d4e0f968e395a0a8f164b401fefe359a \ + --hash=sha256:96da81e1992be8ac2fd5597bf0283d832287e20cb3cfde8996d2b00356d4e17f \ + --hash=sha256:56b6393c6ac7abe632f2294da53f30d279130a92e8ae39d8d14ee2e1b05ad1f2 \ + --hash=sha256:96eb359252aeed57ea5c7b3d79839aaa0382c9d3149f7d24dd7172b1bcecb009 \ + --hash=sha256:fea04e126014169384dee76a153d4573d90d0cbd1d12185da089f73c78390437 \ + --hash=sha256:3592e854424ec94bd17dc3e0c96a64e459ec4147e6d53c0a42d0ebcef9cb9c5d \ + --hash=sha256:0a4b1b2012b28e68306575ad14ad5e9120b34fccd02a81eb08838d7e3bbb48be \ + --hash=sha256:41b573cf33f64a8f8f3400d0a7faf48e1888582b6f6e02b82b9bd4f0bf7497ce +idna==2.10 \ + --hash=sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0 \ + --hash=sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6 +promise==2.3 \ + --hash=sha256:dfd18337c523ba4b6a58801c164c1904a9d4d1b1747c7d5dbf45b693a49d93d0 +protobuf==3.13.0 \ + --hash=sha256:9c2e63c1743cba12737169c447374fab3dfeb18111a460a8c1a000e35836b18c \ + --hash=sha256:1e834076dfef9e585815757a2c7e4560c7ccc5962b9d09f831214c693a91b463 \ + --hash=sha256:df3932e1834a64b46ebc262e951cd82c3cf0fa936a154f0a42231140d8237060 \ + --hash=sha256:8c35bcbed1c0d29b127c886790e9d37e845ffc2725cc1db4bd06d70f4e8359f4 \ + --hash=sha256:339c3a003e3c797bc84499fa32e0aac83c768e67b3de4a5d7a5a9aa3b0da634c \ + --hash=sha256:361acd76f0ad38c6e38f14d08775514fbd241316cce08deb2ce914c7dfa1184a \ + --hash=sha256:9edfdc679a3669988ec55a989ff62449f670dfa7018df6ad7f04e8dbacb10630 \ + --hash=sha256:5db9d3e12b6ede5e601b8d8684a7f9d90581882925c96acf8495957b4f1b204b \ + --hash=sha256:c8abd7605185836f6f11f97b21200f8a864f9cb078a193fe3c9e235711d3ff1e \ + --hash=sha256:4d1174c9ed303070ad59553f435846a2f877598f59f9afc1b89757bdf846f2a7 \ + --hash=sha256:0bba42f439bf45c0f600c3c5993666fcb88e8441d011fad80a11df6f324eef33 \ + --hash=sha256:c0c5ab9c4b1eac0a9b838f1e46038c3175a95b0f2d944385884af72876bd6bc7 \ + --hash=sha256:f68eb9d03c7d84bd01c790948320b768de8559761897763731294e3bc316decb \ + --hash=sha256:91c2d897da84c62816e2f473ece60ebfeab024a16c1751aaf31100127ccd93ec \ + --hash=sha256:3dee442884a18c16d023e52e32dd34a8930a889e511af493f6dc7d4d9bf12e4f \ + --hash=sha256:e7662437ca1e0c51b93cadb988f9b353fa6b8013c0385d63a70c8a77d84da5f9 \ + --hash=sha256:d69697acac76d9f250ab745b46c725edf3e98ac24763990b24d58c16c642947a \ + --hash=sha256:6a82e0c8bb2bf58f606040cc5814e07715b2094caeba281e2e7d0b0e2e397db5 +psycopg2==2.8.5 \ + --hash=sha256:a0984ff49e176062fcdc8a5a2a670c9bb1704a2f69548bce8f8a7bad41c661bf \ + --hash=sha256:acf56d564e443e3dea152efe972b1434058244298a94348fc518d6dd6a9fb0bb \ + --hash=sha256:440a3ea2c955e89321a138eb7582aa1d22fe286c7d65e26a2c5411af0a88ae72 \ + --hash=sha256:6b306dae53ec7f4f67a10942cf8ac85de930ea90e9903e2df4001f69b7833f7e \ + --hash=sha256:d3b29d717d39d3580efd760a9a46a7418408acebbb784717c90d708c9ed5f055 \ + --hash=sha256:6a471d4d2a6f14c97a882e8d3124869bc623f3df6177eefe02994ea41fd45b52 \ + --hash=sha256:27c633f2d5db0fc27b51f1b08f410715b59fa3802987aec91aeb8f562724e95c \ + --hash=sha256:2df2bf1b87305bd95eb3ac666ee1f00a9c83d10927b8144e8e39644218f4cf81 \ + --hash=sha256:ac5b23d0199c012ad91ed1bbb971b7666da651c6371529b1be8cbe2a7bf3c3a9 \ + --hash=sha256:2c0afb40cfb4d53487ee2ebe128649028c9a78d2476d14a67781e45dc287f080 \ + --hash=sha256:2327bf42c1744a434ed8ed0bbaa9168cac7ee5a22a9001f6fc85c33b8a4a14b7 \ + --hash=sha256:132efc7ee46a763e68a815f4d26223d9c679953cd190f1f218187cb60decf535 \ + --hash=sha256:f7d46240f7a1ae1dd95aab38bd74f7428d46531f69219954266d669da60c0818 +pyasn1==0.4.8 \ + --hash=sha256:fec3e9d8e36808a28efb59b489e4528c10ad0f480e57dcc32b4de5c9d8c9fdf3 \ + --hash=sha256:0458773cfe65b153891ac249bcf1b5f8f320b7c2ce462151f8fa74de8934becf \ + --hash=sha256:5c9414dcfede6e441f7e8f81b43b34e834731003427e5b09e4e00e3172a10f00 \ + --hash=sha256:6e7545f1a61025a4e58bb336952c5061697da694db1cae97b116e9c46abcf7c8 \ + --hash=sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d \ + --hash=sha256:78fa6da68ed2727915c4767bb386ab32cdba863caa7dbe473eaae45f9959da86 \ + --hash=sha256:08c3c53b75eaa48d71cf8c710312316392ed40899cb34710d092e96745a358b7 \ + --hash=sha256:03840c999ba71680a131cfaee6fab142e1ed9bbd9c693e285cc6aca0d555e576 \ + --hash=sha256:7ab8a544af125fb704feadb008c99a88805126fb525280b2270bb25cc1d78a12 \ + --hash=sha256:e89bf84b5437b532b0803ba5c9a5e054d21fec423a89952a74f87fa2c9b7bce2 \ + --hash=sha256:014c0e9976956a08139dc0712ae195324a75e142284d5f87f1a87ee1b068a359 \ + --hash=sha256:99fcc3c8d804d1bc6d9a099921e39d827026409a58f2a720dcdb89374ea0c776 \ + --hash=sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba +pyasn1-modules==0.2.8 \ + --hash=sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e \ + --hash=sha256:0fe1b68d1e486a1ed5473f1302bd991c1611d319bba158e98b106ff86e1d7199 \ + --hash=sha256:fe0644d9ab041506b62782e92b06b8c68cca799e1a9636ec398675459e031405 \ + --hash=sha256:a99324196732f53093a84c4369c996713eb8c89d360a496b599fb1a9c47fc3eb \ + --hash=sha256:0845a5582f6a02bb3e1bde9ecfc4bfcae6ec3210dd270522fee602365430c3f8 \ + --hash=sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74 \ + --hash=sha256:f39edd8c4ecaa4556e989147ebf219227e2cd2e8a43c7e7fcb1f1c18c5fd6a3d \ + --hash=sha256:b80486a6c77252ea3a3e9b1e360bc9cf28eaac41263d173c032581ad2f20fe45 \ + --hash=sha256:65cebbaffc913f4fe9e4808735c95ea22d7a7775646ab690518c056784bc21b4 \ + --hash=sha256:15b7c67fabc7fc240d87fb9aabf999cf82311a6d6fb2c70d00d3d0604878c811 \ + --hash=sha256:426edb7a5e8879f1ec54a1864f16b882c2837bfd06eee62f2c982315ee2473ed \ + --hash=sha256:cbac4bc38d117f2a49aeedec4407d23e8866ea4ac27ff2cf7fb3e5b570df19e0 \ + --hash=sha256:c29a5e5cc7a3f05926aff34e097e84f8589cd790ce0ed41b67aed6857b26aafd +pycparser==2.20; python_version >= "3.5" \ + --hash=sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705 \ + --hash=sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0 +pyjwt==1.7.1 \ + --hash=sha256:5c6eca3c2940464d106b99ba83b00c6add741c9becaec087fb7ccdefea71350e \ + --hash=sha256:8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96 +python-dateutil==2.8.1 \ + --hash=sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c \ + --hash=sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a +python-dotenv==0.14.0 \ + --hash=sha256:8c10c99a1b25d9a68058a1ad6f90381a62ba68230ca93966882a4dbc3bc9c33d \ + --hash=sha256:c10863aee750ad720f4f43436565e4c1698798d763b63234fb5021b6c616e423 +pytz==2020.1 \ + --hash=sha256:a494d53b6d39c3c6e44c3bec237336e14305e4f29bbf800b599253057fbb79ed \ + --hash=sha256:c35965d010ce31b23eeb663ed3cc8c906275d6be1a34393a1d73a41febf4a048 +requests==2.24.0 \ + --hash=sha256:fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898 \ + --hash=sha256:b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b +rsa==4.6; python_version >= "3.5" \ + --hash=sha256:6166864e23d6b5195a5cfed6cd9fed0fe774e226d8f854fcb23b7bbef0350233 \ + --hash=sha256:109ea5a66744dd859bf16fe904b8d8b627adafb9408753161e766a92e7d681fa +rx==1.6.1 \ + --hash=sha256:7357592bc7e881a95e0c2013b73326f704953301ab551fbc8133a6fadab84105 \ + --hash=sha256:13a1d8d9e252625c173dc795471e614eadfe1cf40ffc684e08b8fff0d9748c23 +singledispatch==3.4.0.3 \ + --hash=sha256:833b46966687b3de7f438c761ac475213e53b306740f1abfaa86e1d1aae56aa8 \ + --hash=sha256:5b06af87df13818d14f08a028e42f566640aef80805c3b50c5056b086e3c2b9c +six==1.15.0 \ + --hash=sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced \ + --hash=sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259 +sqlparse==0.3.1 \ + --hash=sha256:022fb9c87b524d1f7862b3037e541f68597a730a8843245c349fc93e1643dc4e \ + --hash=sha256:e162203737712307dfe78860cc56c8da8a852ab2ee33750e33aeadf38d12c548 +text-unidecode==1.3 \ + --hash=sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93 \ + --hash=sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8 +unidecode==1.1.1 \ + --hash=sha256:1d7a042116536098d05d599ef2b8616759f02985c85b4fef50c78a5aaf10822a \ + --hash=sha256:2b6aab710c2a1647e928e36d69c21e76b453cd455f4e2621000e54b2a9b8cce8 +urllib3==1.25.10 \ + --hash=sha256:e7983572181f5e1522d9c98453462384ee92a0be7fac5f1413a1e35c56cc0461 \ + --hash=sha256:91056c15fa70756691db97756772bb1eb9678fa585d9184f24534b100dc60f4a +uvicorn==0.11.8 \ + --hash=sha256:4b70ddb4c1946e39db9f3082d53e323dfd50634b95fd83625d778729ef1730ef \ + --hash=sha256:46a83e371f37ea7ff29577d00015f02c942410288fb57def6440f2653fff1d26 +uvloop==0.14.0; sys_platform != "win32" and sys_platform != "cygwin" and platform_python_implementation != "PyPy" \ + --hash=sha256:08b109f0213af392150e2fe6f81d33261bb5ce968a288eb698aad4f46eb711bd \ + --hash=sha256:4544dcf77d74f3a84f03dd6278174575c44c67d7165d4c42c71db3fdc3860726 \ + --hash=sha256:b4f591aa4b3fa7f32fb51e2ee9fea1b495eb75b0b3c8d0ca52514ad675ae63f7 \ + --hash=sha256:f07909cd9fc08c52d294b1570bba92186181ca01fe3dc9ffba68955273dd7362 \ + --hash=sha256:afd5513c0ae414ec71d24f6f123614a80f3d27ca655a4fcf6cabe50994cc1891 \ + --hash=sha256:e7514d7a48c063226b7d06617cbb12a14278d4323a065a8d46a7962686ce2e95 \ + --hash=sha256:bcac356d62edd330080aed082e78d4b580ff260a677508718f88016333e2c9c5 \ + --hash=sha256:4315d2ec3ca393dd5bc0b0089d23101276778c304d42faff5dc4579cb6caef09 \ + --hash=sha256:123ac9c0c7dd71464f58f1b4ee0bbd81285d96cdda8bc3519281b8973e3a461e +websockets==8.1 \ + --hash=sha256:3762791ab8b38948f0c4d281c8b2ddfa99b7e510e46bd8dfa942a5fff621068c \ + --hash=sha256:3db87421956f1b0779a7564915875ba774295cc86e81bc671631379371af1170 \ + --hash=sha256:4f9f7d28ce1d8f1295717c2c25b732c2bc0645db3215cf757551c392177d7cb8 \ + --hash=sha256:295359a2cc78736737dd88c343cd0747546b2174b5e1adc223824bcaf3e164cb \ + --hash=sha256:1d3f1bf059d04a4e0eb4985a887d49195e15ebabc42364f4eb564b1d065793f5 \ + --hash=sha256:2db62a9142e88535038a6bcfea70ef9447696ea77891aebb730a333a51ed559a \ + --hash=sha256:0e4fb4de42701340bd2353bb2eee45314651caa6ccee80dbd5f5d5978888fed5 \ + --hash=sha256:9b248ba3dd8a03b1a10b19efe7d4f7fa41d158fdaa95e2cf65af5a7b95a4f989 \ + --hash=sha256:ce85b06a10fc65e6143518b96d3dca27b081a740bae261c2fb20375801a9d56d \ + --hash=sha256:965889d9f0e2a75edd81a07592d0ced54daa5b0785f57dc429c378edbcffe779 \ + --hash=sha256:751a556205d8245ff94aeef23546a1113b1dd4f6e4d102ded66c39b99c2ce6c8 \ + --hash=sha256:3ef56fcc7b1ff90de46ccd5a687bbd13a3180132268c4254fc0fa44ecf4fc422 \ + --hash=sha256:7ff46d441db78241f4c6c27b3868c9ae71473fe03341340d2dfdbe8d79310acc \ + --hash=sha256:20891f0dddade307ffddf593c733a3fdb6b83e6f9eef85908113e628fa5a8308 \ + --hash=sha256:c1ec8db4fac31850286b7cd3b9c0e1b944204668b8eb721674916d4e28744092 \ + --hash=sha256:5c01fd846263a75bc8a2b9542606927cfad57e7282965d96b93c387622487485 \ + --hash=sha256:9bef37ee224e104a413f0780e29adb3e514a5b698aabe0d969a6ba426b8435d1 \ + --hash=sha256:d705f8aeecdf3262379644e4b55107a3b55860eb812b673b28d0fbc347a60c55 \ + --hash=sha256:c8a116feafdb1f84607cb3b14aa1418424ae71fee131642fc568d21423b51824 \ + --hash=sha256:e898a0863421650f0bebac8ba40840fc02258ef4714cb7e1fd76b6a6354bda36 \ + --hash=sha256:f8a7bff6e8664afc4e6c28b983845c5bc14965030e3fb98789734d416af77c4b \ + --hash=sha256:5c65d2da8c6bce0fca2528f69f44b2f977e06954c8512a952222cea50dad430f From 6b7c39c5ebc03609b9a5cc5d47a5bd9056be2bb2 Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sat, 5 Sep 2020 21:46:56 +0300 Subject: [PATCH 12/32] chore: remove hashes from requirements.txt --- requirements.txt | 327 ++++++++--------------------------------------- 1 file changed, 50 insertions(+), 277 deletions(-) diff --git a/requirements.txt b/requirements.txt index 599445a..5339ab0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,278 +1,51 @@ -aniso8601==7.0.0 \ - --hash=sha256:d10a4bf949f619f719b227ef5386e31f49a2b6d453004b21f02661ccc8670c7b \ - --hash=sha256:513d2b6637b7853806ae79ffaca6f3e8754bdd547048f5ccc1420aec4b714f1e -asgiref==3.2.10 \ - --hash=sha256:9fc6fb5d39b8af147ba40765234fa822b39818b12cc80b35ad9b0cef3a476aed \ - --hash=sha256:7e51911ee147dd685c3c8b805c0ad0cb58d360987b56953878f8c06d2d1c6f1a -cachetools==4.1.1 \ - --hash=sha256:513d4ff98dd27f85743a8dc0e92f55ddb1b49e060c2d5961512855cda2c01a98 \ - --hash=sha256:bbaa39c3dede00175df2dc2b03d0cf18dd2d32a7de7beb68072d13043c9edb20 -certifi==2020.6.20 \ - --hash=sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41 \ - --hash=sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3 -cffi==1.14.2; python_version >= "3.5" \ - --hash=sha256:da9d3c506f43e220336433dffe643fbfa40096d408cb9b7f2477892f369d5f82 \ - --hash=sha256:23e44937d7695c27c66a54d793dd4b45889a81b35c0751ba91040fe825ec59c4 \ - --hash=sha256:0da50dcbccd7cb7e6c741ab7912b2eff48e85af217d72b57f80ebc616257125e \ - --hash=sha256:76ada88d62eb24de7051c5157a1a78fd853cca9b91c0713c2e973e4196271d0c \ - --hash=sha256:15a5f59a4808f82d8ec7364cbace851df591c2d43bc76bcbe5c4543a7ddd1bf1 \ - --hash=sha256:e4082d832e36e7f9b2278bc774886ca8207346b99f278e54c9de4834f17232f7 \ - --hash=sha256:57214fa5430399dffd54f4be37b56fe22cedb2b98862550d43cc085fb698dc2c \ - --hash=sha256:6843db0343e12e3f52cc58430ad559d850a53684f5b352540ca3f1bc56df0731 \ - --hash=sha256:577791f948d34d569acb2d1add5831731c59d5a0c50a6d9f629ae1cefd9ca4a0 \ - --hash=sha256:8662aabfeab00cea149a3d1c2999b0731e70c6b5bac596d95d13f643e76d3d4e \ - --hash=sha256:837398c2ec00228679513802e3744d1e8e3cb1204aa6ad408b6aff081e99a487 \ - --hash=sha256:bf44a9a0141a082e89c90e8d785b212a872db793a0080c20f6ae6e2a0ebf82ad \ - --hash=sha256:29c4688ace466a365b85a51dcc5e3c853c1d283f293dfcc12f7a77e498f160d2 \ - --hash=sha256:99cc66b33c418cd579c0f03b77b94263c305c389cb0c6972dac420f24b3bf123 \ - --hash=sha256:65867d63f0fd1b500fa343d7798fa64e9e681b594e0a07dc934c13e76ee28fb1 \ - --hash=sha256:f5033952def24172e60493b68717792e3aebb387a8d186c43c020d9363ee7281 \ - --hash=sha256:7057613efefd36cacabbdbcef010e0a9c20a88fc07eb3e616019ea1692fa5df4 \ - --hash=sha256:6539314d84c4d36f28d73adc1b45e9f4ee2a89cdc7e5d2b0a6dbacba31906798 \ - --hash=sha256:672b539db20fef6b03d6f7a14b5825d57c98e4026401fce838849f8de73fe4d4 \ - --hash=sha256:95e9094162fa712f18b4f60896e34b621df99147c2cee216cfa8f022294e8e9f \ - --hash=sha256:b9aa9d8818c2e917fa2c105ad538e222a5bce59777133840b93134022a7ce650 \ - --hash=sha256:e4b9b7af398c32e408c00eb4e0d33ced2f9121fd9fb978e6c1b57edd014a7d15 \ - --hash=sha256:e613514a82539fc48291d01933951a13ae93b6b444a88782480be32245ed4afa \ - --hash=sha256:9b219511d8b64d3fa14261963933be34028ea0e57455baf6781fe399c2c3206c \ - --hash=sha256:c0b48b98d79cf795b0916c57bebbc6d16bb43b9fc9b8c9f57f4cf05881904c75 \ - --hash=sha256:15419020b0e812b40d96ec9d369b2bc8109cc3295eac6e013d3261343580cc7e \ - --hash=sha256:12a453e03124069b6896107ee133ae3ab04c624bb10683e1ed1c1663df17c13c \ - --hash=sha256:ae8f34d50af2c2154035984b8b5fc5d9ed63f32fe615646ab435b05b132ca91b -chardet==3.0.4 \ - --hash=sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691 \ - --hash=sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae -click==7.1.2 \ - --hash=sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc \ - --hash=sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a -django==3.1.1 \ - --hash=sha256:b5fbb818e751f660fa2d576d9f40c34a4c615c8b48dd383f5216e609f383371f \ - --hash=sha256:59c8125ca873ed3bdae9c12b146fbbd6ed8d0f743e4cf5f5817af50c51f1fc2f -django-cockroachdb==3.1 \ - --hash=sha256:3acb36906ac0b7725f3847e21ca6dc9ff83975b5672156edea0b74ce281baf9d \ - --hash=sha256:75bc2bbc2475b2596a2c56d18946220d40d27b87fef961aac10d4a77c5b6e4de -django-filter==2.3.0 \ - --hash=sha256:11e63dd759835d9ba7a763926ffb2662cf8a6dcb4c7971a95064de34dbc7e5af \ - --hash=sha256:616848eab6fc50193a1b3730140c49b60c57a3eda1f7fc57fa8505ac156c6c75 -django-storages==1.10 \ - --hash=sha256:36ed8dab33d761954498189592ce005920095fcbc02dab4184eb51393c370991 \ - --hash=sha256:1e37da57678e6cf1e9914f84099a305323e4e1f261afe54fdb703cae7aa6fbc3 -djangorestframework==3.11.1 \ - --hash=sha256:8b1ac62c581dbc5799b03e535854b92fc4053ecfe74bad3f9c05782063d4196b \ - --hash=sha256:6dd02d5a4bd2516fb93f80360673bf540c3b6641fec8766b1da2870a5aa00b32 -factory-boy==2.12.0 \ - --hash=sha256:728df59b372c9588b83153facf26d3d28947fc750e8e3c95cefa9bed0e6394ee \ - --hash=sha256:faf48d608a1735f0d0a3c9cbf536d64f9132b547dae7ba452c4d99a79e84a370 -faker==4.1.2 \ - --hash=sha256:bc4b8c908dfcd84e4fe5d9fa2e52fbe17546515fb8f126909b98c47badf05658 \ - --hash=sha256:ff188c416864e3f7d8becd8f9ee683a4b4101a2a2d2bcdcb3e84bb1bdd06eaae -google-api-core==1.22.2 \ - --hash=sha256:779107f17e0fef8169c5239d56a8fbff03f9f72a3893c0c9e5842ec29dfedd54 \ - --hash=sha256:67e33a852dcca7cb7eff49abc35c8cc2c0bb8ab11397dc8306d911505cae2990 -google-auth==1.21.1 \ - --hash=sha256:bcbd9f970e7144fe933908aa286d7a12c44b7deb6d78a76871f0377a29d09789 \ - --hash=sha256:f4d5093f13b1b1c0a434ab1dc851cd26a983f86a4d75c95239974e33ed406a87 -google-cloud-core==1.4.1 \ - --hash=sha256:613e56f164b6bee487dd34f606083a0130f66f42f7b10f99730afdf1630df507 \ - --hash=sha256:4c9e457fcfc026fdde2e492228f04417d4c717fb0f29f070122fb0ab89e34ebd -google-cloud-storage==1.31.0 \ - --hash=sha256:4f51c7700242a9d54c07117f25fec5d110ab85435b3ce60ac28cc553f8ea938b \ - --hash=sha256:34fb8f7e8a2a633cbfb09d8dec38b3450c4029af1a328a67bca64f6226a1f4a5 -google-crc32c==1.0.0; python_version >= "3.5" \ - --hash=sha256:9439b960b6ecd847557675d130fc3626d762bf535da595c20a6949a705fb3eae \ - --hash=sha256:7b5ccdc7697ca54351d2965d4241f907d53f26f5288710bed505f8c3776ed235 \ - --hash=sha256:f3b859200c3bc73925b1719ed8b1f6d8d73b6620b42dbc121c4df58423045e34 \ - --hash=sha256:1a613f43534c9a345cc86fc6531bda477e2473cb876b6e26aee22b8060917069 \ - --hash=sha256:b7ee33659231c8205bb05559781ac61a325f31b06b917b3e997bea5c2c49ff4d \ - --hash=sha256:176cef33c9ad2a56977efd084646b378e50ab14b43a7c0a16e956bc3e3ec130a \ - --hash=sha256:b6fad0842a02abd270f8b660db082d37d197ab80aa4db6a2ddbfcf472eade9e7 \ - --hash=sha256:00b34d4c9ac565b2be553f81f58e5861e51d43af2043ed7cbfe1853ee2f54671 \ - --hash=sha256:438d6c314a52d50a9523460024e655a3d27774adde47d72eebccc89dc9eec992 \ - --hash=sha256:6fd5d861421c37786b9c1a87dc7b0d8349a426151a461d5724b76c5a07f6ae9b \ - --hash=sha256:cda3a6829e8b5bf6058615e53387430d004590c9b0ad808e53fea5bec35bbe44 \ - --hash=sha256:7f44c5259f6b2f8b2b6f668dbaa954693a10e97811345c193e46b933c2dd5165 \ - --hash=sha256:337566ce49d7ea7493f95bd6bc89ab08640caa91b6105cea0be57ed026980e74 \ - --hash=sha256:f54c90058e3f56e55fa0f699c6f4ceaaa825ea7f17ef2adbf07b2b06b27455e7 \ - --hash=sha256:ec4d91c9236b0576d9d2b23c7eb85c6a6372b88afe2d0c64681cf11629586f74 \ - --hash=sha256:17223ac9135eab28e874ff1e221810190d109a1abd482451d0776dc388be14de \ - --hash=sha256:cf373207380e54c42da6c88baf1f7a31c2d9f29b87c9c922d5147d219eed55aa \ - --hash=sha256:41fb6c22cd72ae3db4d98d28dbb768d53397c8fc3cb8ab945fd434e842e622d4 -google-resumable-media==1.0.0 \ - --hash=sha256:173acc6bade1480a529fa29c6c2717543ae2dc09d42e9461fdb86f39502efcf2 \ - --hash=sha256:99b5ac33a75ddb25d5e6aad487b37ecb4fa18b1fbf3d1ad726e032c3d6fc9aff -googleapis-common-protos==1.52.0 \ - --hash=sha256:560716c807117394da12cecb0a54da5a451b5cf9866f1d37e9a5e2329a665351 \ - --hash=sha256:c8961760f5aad9a711d37b675be103e0cc4e9a39327e0d6d857872f698403e24 -graphene==2.1.8 \ - --hash=sha256:09165f03e1591b76bf57b133482db9be6dac72c74b0a628d3c93182af9c5a896 \ - --hash=sha256:2cbe6d4ef15cfc7b7805e0760a0e5b80747161ce1b0f990dfdc0d2cf497c12f9 -graphene-django==2.13.0 \ - --hash=sha256:8a4efc7bf954ba0b5a28d3cdb090b36941aca6b83d211e3cd3ab29cf53ac6154 \ - --hash=sha256:0e33cdec0774284175c387c2af1e0ef4eb0f4e10a56a3a1b2d39bc3a74d9a538 +aniso8601==7.0.0 +asgiref==3.2.10 +cachetools==4.1.1 +certifi==2020.6.20 +cffi==1.14.2; python_version >= "3.5" +chardet==3.0.4 +click==7.1.2 +django==3.1.1 +django-cockroachdb==3.1 +django-filter==2.3.0 +django-storages==1.10 +djangorestframework==3.11.1 +factory-boy==2.12.0 +faker==4.1.2 +google-api-core==1.22.2 +google-auth==1.21.1 +google-cloud-core==1.4.1 +google-cloud-storage==1.31.0 +google-crc32c==1.0.0; python_version >= "3.5" +google-resumable-media==1.0.0 +googleapis-common-protos==1.52.0 +graphene==2.1.8 +graphene-django==2.13.0 -e git+https://github.com/FNSdev/graphene-django-optimizer.git@e1a3d0412d06f6b95bb9505d5fa6f161c7013446#egg=graphene-django-optimizer -graphql-core==2.3.2 \ - --hash=sha256:aac46a9ac524c9855910c14c48fc5d60474def7f99fd10245e76608eba7af746 \ - --hash=sha256:44c9bac4514e5e30c5a595fac8e3c76c1975cae14db215e8174c7fe995825bad -graphql-relay==2.0.1 \ - --hash=sha256:870b6b5304123a38a0b215a79eace021acce5a466bf40cd39fa18cb8528afabb \ - --hash=sha256:ac514cb86db9a43014d7e73511d521137ac12cf0101b2eaa5f0a3da2e10d913d -h11==0.9.0 \ - --hash=sha256:4bc6d6a1238b7615b266ada57e0618568066f57dd6fa967d1290ec9309b2f2f1 \ - --hash=sha256:33d4bca7be0fa039f4e84d50ab00531047e53d6ee8ffbc83501ea602c169cae1 -httptools==0.1.1; sys_platform != "win32" and sys_platform != "cygwin" and platform_python_implementation != "PyPy" \ - --hash=sha256:a2719e1d7a84bb131c4f1e0cb79705034b48de6ae486eb5297a139d6a3296dce \ - --hash=sha256:fa3cd71e31436911a44620473e873a256851e1f53dee56669dae403ba41756a4 \ - --hash=sha256:86c6acd66765a934e8730bf0e9dfaac6fdcf2a4334212bd4a0a1c78f16475ca6 \ - --hash=sha256:bc3114b9edbca5a1eb7ae7db698c669eb53eb8afbbebdde116c174925260849c \ - --hash=sha256:ac0aa11e99454b6a66989aa2d44bca41d4e0f968e395a0a8f164b401fefe359a \ - --hash=sha256:96da81e1992be8ac2fd5597bf0283d832287e20cb3cfde8996d2b00356d4e17f \ - --hash=sha256:56b6393c6ac7abe632f2294da53f30d279130a92e8ae39d8d14ee2e1b05ad1f2 \ - --hash=sha256:96eb359252aeed57ea5c7b3d79839aaa0382c9d3149f7d24dd7172b1bcecb009 \ - --hash=sha256:fea04e126014169384dee76a153d4573d90d0cbd1d12185da089f73c78390437 \ - --hash=sha256:3592e854424ec94bd17dc3e0c96a64e459ec4147e6d53c0a42d0ebcef9cb9c5d \ - --hash=sha256:0a4b1b2012b28e68306575ad14ad5e9120b34fccd02a81eb08838d7e3bbb48be \ - --hash=sha256:41b573cf33f64a8f8f3400d0a7faf48e1888582b6f6e02b82b9bd4f0bf7497ce -idna==2.10 \ - --hash=sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0 \ - --hash=sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6 -promise==2.3 \ - --hash=sha256:dfd18337c523ba4b6a58801c164c1904a9d4d1b1747c7d5dbf45b693a49d93d0 -protobuf==3.13.0 \ - --hash=sha256:9c2e63c1743cba12737169c447374fab3dfeb18111a460a8c1a000e35836b18c \ - --hash=sha256:1e834076dfef9e585815757a2c7e4560c7ccc5962b9d09f831214c693a91b463 \ - --hash=sha256:df3932e1834a64b46ebc262e951cd82c3cf0fa936a154f0a42231140d8237060 \ - --hash=sha256:8c35bcbed1c0d29b127c886790e9d37e845ffc2725cc1db4bd06d70f4e8359f4 \ - --hash=sha256:339c3a003e3c797bc84499fa32e0aac83c768e67b3de4a5d7a5a9aa3b0da634c \ - --hash=sha256:361acd76f0ad38c6e38f14d08775514fbd241316cce08deb2ce914c7dfa1184a \ - --hash=sha256:9edfdc679a3669988ec55a989ff62449f670dfa7018df6ad7f04e8dbacb10630 \ - --hash=sha256:5db9d3e12b6ede5e601b8d8684a7f9d90581882925c96acf8495957b4f1b204b \ - --hash=sha256:c8abd7605185836f6f11f97b21200f8a864f9cb078a193fe3c9e235711d3ff1e \ - --hash=sha256:4d1174c9ed303070ad59553f435846a2f877598f59f9afc1b89757bdf846f2a7 \ - --hash=sha256:0bba42f439bf45c0f600c3c5993666fcb88e8441d011fad80a11df6f324eef33 \ - --hash=sha256:c0c5ab9c4b1eac0a9b838f1e46038c3175a95b0f2d944385884af72876bd6bc7 \ - --hash=sha256:f68eb9d03c7d84bd01c790948320b768de8559761897763731294e3bc316decb \ - --hash=sha256:91c2d897da84c62816e2f473ece60ebfeab024a16c1751aaf31100127ccd93ec \ - --hash=sha256:3dee442884a18c16d023e52e32dd34a8930a889e511af493f6dc7d4d9bf12e4f \ - --hash=sha256:e7662437ca1e0c51b93cadb988f9b353fa6b8013c0385d63a70c8a77d84da5f9 \ - --hash=sha256:d69697acac76d9f250ab745b46c725edf3e98ac24763990b24d58c16c642947a \ - --hash=sha256:6a82e0c8bb2bf58f606040cc5814e07715b2094caeba281e2e7d0b0e2e397db5 -psycopg2==2.8.5 \ - --hash=sha256:a0984ff49e176062fcdc8a5a2a670c9bb1704a2f69548bce8f8a7bad41c661bf \ - --hash=sha256:acf56d564e443e3dea152efe972b1434058244298a94348fc518d6dd6a9fb0bb \ - --hash=sha256:440a3ea2c955e89321a138eb7582aa1d22fe286c7d65e26a2c5411af0a88ae72 \ - --hash=sha256:6b306dae53ec7f4f67a10942cf8ac85de930ea90e9903e2df4001f69b7833f7e \ - --hash=sha256:d3b29d717d39d3580efd760a9a46a7418408acebbb784717c90d708c9ed5f055 \ - --hash=sha256:6a471d4d2a6f14c97a882e8d3124869bc623f3df6177eefe02994ea41fd45b52 \ - --hash=sha256:27c633f2d5db0fc27b51f1b08f410715b59fa3802987aec91aeb8f562724e95c \ - --hash=sha256:2df2bf1b87305bd95eb3ac666ee1f00a9c83d10927b8144e8e39644218f4cf81 \ - --hash=sha256:ac5b23d0199c012ad91ed1bbb971b7666da651c6371529b1be8cbe2a7bf3c3a9 \ - --hash=sha256:2c0afb40cfb4d53487ee2ebe128649028c9a78d2476d14a67781e45dc287f080 \ - --hash=sha256:2327bf42c1744a434ed8ed0bbaa9168cac7ee5a22a9001f6fc85c33b8a4a14b7 \ - --hash=sha256:132efc7ee46a763e68a815f4d26223d9c679953cd190f1f218187cb60decf535 \ - --hash=sha256:f7d46240f7a1ae1dd95aab38bd74f7428d46531f69219954266d669da60c0818 -pyasn1==0.4.8 \ - --hash=sha256:fec3e9d8e36808a28efb59b489e4528c10ad0f480e57dcc32b4de5c9d8c9fdf3 \ - --hash=sha256:0458773cfe65b153891ac249bcf1b5f8f320b7c2ce462151f8fa74de8934becf \ - --hash=sha256:5c9414dcfede6e441f7e8f81b43b34e834731003427e5b09e4e00e3172a10f00 \ - --hash=sha256:6e7545f1a61025a4e58bb336952c5061697da694db1cae97b116e9c46abcf7c8 \ - --hash=sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d \ - --hash=sha256:78fa6da68ed2727915c4767bb386ab32cdba863caa7dbe473eaae45f9959da86 \ - --hash=sha256:08c3c53b75eaa48d71cf8c710312316392ed40899cb34710d092e96745a358b7 \ - --hash=sha256:03840c999ba71680a131cfaee6fab142e1ed9bbd9c693e285cc6aca0d555e576 \ - --hash=sha256:7ab8a544af125fb704feadb008c99a88805126fb525280b2270bb25cc1d78a12 \ - --hash=sha256:e89bf84b5437b532b0803ba5c9a5e054d21fec423a89952a74f87fa2c9b7bce2 \ - --hash=sha256:014c0e9976956a08139dc0712ae195324a75e142284d5f87f1a87ee1b068a359 \ - --hash=sha256:99fcc3c8d804d1bc6d9a099921e39d827026409a58f2a720dcdb89374ea0c776 \ - --hash=sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba -pyasn1-modules==0.2.8 \ - --hash=sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e \ - --hash=sha256:0fe1b68d1e486a1ed5473f1302bd991c1611d319bba158e98b106ff86e1d7199 \ - --hash=sha256:fe0644d9ab041506b62782e92b06b8c68cca799e1a9636ec398675459e031405 \ - --hash=sha256:a99324196732f53093a84c4369c996713eb8c89d360a496b599fb1a9c47fc3eb \ - --hash=sha256:0845a5582f6a02bb3e1bde9ecfc4bfcae6ec3210dd270522fee602365430c3f8 \ - --hash=sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74 \ - --hash=sha256:f39edd8c4ecaa4556e989147ebf219227e2cd2e8a43c7e7fcb1f1c18c5fd6a3d \ - --hash=sha256:b80486a6c77252ea3a3e9b1e360bc9cf28eaac41263d173c032581ad2f20fe45 \ - --hash=sha256:65cebbaffc913f4fe9e4808735c95ea22d7a7775646ab690518c056784bc21b4 \ - --hash=sha256:15b7c67fabc7fc240d87fb9aabf999cf82311a6d6fb2c70d00d3d0604878c811 \ - --hash=sha256:426edb7a5e8879f1ec54a1864f16b882c2837bfd06eee62f2c982315ee2473ed \ - --hash=sha256:cbac4bc38d117f2a49aeedec4407d23e8866ea4ac27ff2cf7fb3e5b570df19e0 \ - --hash=sha256:c29a5e5cc7a3f05926aff34e097e84f8589cd790ce0ed41b67aed6857b26aafd -pycparser==2.20; python_version >= "3.5" \ - --hash=sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705 \ - --hash=sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0 -pyjwt==1.7.1 \ - --hash=sha256:5c6eca3c2940464d106b99ba83b00c6add741c9becaec087fb7ccdefea71350e \ - --hash=sha256:8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96 -python-dateutil==2.8.1 \ - --hash=sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c \ - --hash=sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a -python-dotenv==0.14.0 \ - --hash=sha256:8c10c99a1b25d9a68058a1ad6f90381a62ba68230ca93966882a4dbc3bc9c33d \ - --hash=sha256:c10863aee750ad720f4f43436565e4c1698798d763b63234fb5021b6c616e423 -pytz==2020.1 \ - --hash=sha256:a494d53b6d39c3c6e44c3bec237336e14305e4f29bbf800b599253057fbb79ed \ - --hash=sha256:c35965d010ce31b23eeb663ed3cc8c906275d6be1a34393a1d73a41febf4a048 -requests==2.24.0 \ - --hash=sha256:fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898 \ - --hash=sha256:b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b -rsa==4.6; python_version >= "3.5" \ - --hash=sha256:6166864e23d6b5195a5cfed6cd9fed0fe774e226d8f854fcb23b7bbef0350233 \ - --hash=sha256:109ea5a66744dd859bf16fe904b8d8b627adafb9408753161e766a92e7d681fa -rx==1.6.1 \ - --hash=sha256:7357592bc7e881a95e0c2013b73326f704953301ab551fbc8133a6fadab84105 \ - --hash=sha256:13a1d8d9e252625c173dc795471e614eadfe1cf40ffc684e08b8fff0d9748c23 -singledispatch==3.4.0.3 \ - --hash=sha256:833b46966687b3de7f438c761ac475213e53b306740f1abfaa86e1d1aae56aa8 \ - --hash=sha256:5b06af87df13818d14f08a028e42f566640aef80805c3b50c5056b086e3c2b9c -six==1.15.0 \ - --hash=sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced \ - --hash=sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259 -sqlparse==0.3.1 \ - --hash=sha256:022fb9c87b524d1f7862b3037e541f68597a730a8843245c349fc93e1643dc4e \ - --hash=sha256:e162203737712307dfe78860cc56c8da8a852ab2ee33750e33aeadf38d12c548 -text-unidecode==1.3 \ - --hash=sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93 \ - --hash=sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8 -unidecode==1.1.1 \ - --hash=sha256:1d7a042116536098d05d599ef2b8616759f02985c85b4fef50c78a5aaf10822a \ - --hash=sha256:2b6aab710c2a1647e928e36d69c21e76b453cd455f4e2621000e54b2a9b8cce8 -urllib3==1.25.10 \ - --hash=sha256:e7983572181f5e1522d9c98453462384ee92a0be7fac5f1413a1e35c56cc0461 \ - --hash=sha256:91056c15fa70756691db97756772bb1eb9678fa585d9184f24534b100dc60f4a -uvicorn==0.11.8 \ - --hash=sha256:4b70ddb4c1946e39db9f3082d53e323dfd50634b95fd83625d778729ef1730ef \ - --hash=sha256:46a83e371f37ea7ff29577d00015f02c942410288fb57def6440f2653fff1d26 -uvloop==0.14.0; sys_platform != "win32" and sys_platform != "cygwin" and platform_python_implementation != "PyPy" \ - --hash=sha256:08b109f0213af392150e2fe6f81d33261bb5ce968a288eb698aad4f46eb711bd \ - --hash=sha256:4544dcf77d74f3a84f03dd6278174575c44c67d7165d4c42c71db3fdc3860726 \ - --hash=sha256:b4f591aa4b3fa7f32fb51e2ee9fea1b495eb75b0b3c8d0ca52514ad675ae63f7 \ - --hash=sha256:f07909cd9fc08c52d294b1570bba92186181ca01fe3dc9ffba68955273dd7362 \ - --hash=sha256:afd5513c0ae414ec71d24f6f123614a80f3d27ca655a4fcf6cabe50994cc1891 \ - --hash=sha256:e7514d7a48c063226b7d06617cbb12a14278d4323a065a8d46a7962686ce2e95 \ - --hash=sha256:bcac356d62edd330080aed082e78d4b580ff260a677508718f88016333e2c9c5 \ - --hash=sha256:4315d2ec3ca393dd5bc0b0089d23101276778c304d42faff5dc4579cb6caef09 \ - --hash=sha256:123ac9c0c7dd71464f58f1b4ee0bbd81285d96cdda8bc3519281b8973e3a461e -websockets==8.1 \ - --hash=sha256:3762791ab8b38948f0c4d281c8b2ddfa99b7e510e46bd8dfa942a5fff621068c \ - --hash=sha256:3db87421956f1b0779a7564915875ba774295cc86e81bc671631379371af1170 \ - --hash=sha256:4f9f7d28ce1d8f1295717c2c25b732c2bc0645db3215cf757551c392177d7cb8 \ - --hash=sha256:295359a2cc78736737dd88c343cd0747546b2174b5e1adc223824bcaf3e164cb \ - --hash=sha256:1d3f1bf059d04a4e0eb4985a887d49195e15ebabc42364f4eb564b1d065793f5 \ - --hash=sha256:2db62a9142e88535038a6bcfea70ef9447696ea77891aebb730a333a51ed559a \ - --hash=sha256:0e4fb4de42701340bd2353bb2eee45314651caa6ccee80dbd5f5d5978888fed5 \ - --hash=sha256:9b248ba3dd8a03b1a10b19efe7d4f7fa41d158fdaa95e2cf65af5a7b95a4f989 \ - --hash=sha256:ce85b06a10fc65e6143518b96d3dca27b081a740bae261c2fb20375801a9d56d \ - --hash=sha256:965889d9f0e2a75edd81a07592d0ced54daa5b0785f57dc429c378edbcffe779 \ - --hash=sha256:751a556205d8245ff94aeef23546a1113b1dd4f6e4d102ded66c39b99c2ce6c8 \ - --hash=sha256:3ef56fcc7b1ff90de46ccd5a687bbd13a3180132268c4254fc0fa44ecf4fc422 \ - --hash=sha256:7ff46d441db78241f4c6c27b3868c9ae71473fe03341340d2dfdbe8d79310acc \ - --hash=sha256:20891f0dddade307ffddf593c733a3fdb6b83e6f9eef85908113e628fa5a8308 \ - --hash=sha256:c1ec8db4fac31850286b7cd3b9c0e1b944204668b8eb721674916d4e28744092 \ - --hash=sha256:5c01fd846263a75bc8a2b9542606927cfad57e7282965d96b93c387622487485 \ - --hash=sha256:9bef37ee224e104a413f0780e29adb3e514a5b698aabe0d969a6ba426b8435d1 \ - --hash=sha256:d705f8aeecdf3262379644e4b55107a3b55860eb812b673b28d0fbc347a60c55 \ - --hash=sha256:c8a116feafdb1f84607cb3b14aa1418424ae71fee131642fc568d21423b51824 \ - --hash=sha256:e898a0863421650f0bebac8ba40840fc02258ef4714cb7e1fd76b6a6354bda36 \ - --hash=sha256:f8a7bff6e8664afc4e6c28b983845c5bc14965030e3fb98789734d416af77c4b \ - --hash=sha256:5c65d2da8c6bce0fca2528f69f44b2f977e06954c8512a952222cea50dad430f +graphql-core==2.3.2 +graphql-relay==2.0.1 +h11==0.9.0 +httptools==0.1.1; sys_platform != "win32" and sys_platform != "cygwin" and platform_python_implementation != "PyPy" +idna==2.10 +promise==2.3 +protobuf==3.13.0 +psycopg2==2.8.5 +pyasn1==0.4.8 +pyasn1-modules==0.2.8 +pycparser==2.20; python_version >= "3.5" +pyjwt==1.7.1 +python-dateutil==2.8.1 +python-dotenv==0.14.0 +pytz==2020.1 +requests==2.24.0 +rsa==4.6; python_version >= "3.5" +rx==1.6.1 +singledispatch==3.4.0.3 +six==1.15.0 +sqlparse==0.3.1 +text-unidecode==1.3 +unidecode==1.1.1 +urllib3==1.25.10 +uvicorn==0.11.8 +uvloop==0.14.0; sys_platform != "win32" and sys_platform != "cygwin" and platform_python_implementation != "PyPy" +websockets==8.1 From 6452f2938191462512d6bafc794aa4bed776cf35 Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sat, 5 Sep 2020 21:49:45 +0300 Subject: [PATCH 13/32] chore: update Jenkinsfile --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 5dcbf24..fe5d0a3 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -54,7 +54,7 @@ pipeline { container('python') { sh """ apt-get update && \ - apt-get install --no-install-recommends -y libpq-dev && \ + apt-get install --no-install-recommends -y libpq-dev git && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* """ From f84a5cbe380569f3df803c54d219567503a53a33 Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sat, 5 Sep 2020 21:54:43 +0300 Subject: [PATCH 14/32] chore: update Jenkinsfile #2 --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index fe5d0a3..374e1f8 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -54,7 +54,7 @@ pipeline { container('python') { sh """ apt-get update && \ - apt-get install --no-install-recommends -y libpq-dev git && \ + apt-get install --no-install-recommends -y libpq-dev git gcc libc6-dev && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* """ From 9ef6292298e83b873963febf4e951c7d7bf2ef93 Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sat, 5 Sep 2020 22:05:31 +0300 Subject: [PATCH 15/32] chore: update Jenkinsfile (3) --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 374e1f8..26c1a40 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -59,7 +59,7 @@ pipeline { rm -rf /var/lib/apt/lists/* """ sh "pip install -r requirements.txt" - sh "python gitrello/manage.py test" + sh "cd gitrello && python manage.py test" } } } From 1d3599ae29d484688e3cad62c6344170db79e891 Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sat, 5 Sep 2020 22:35:59 +0300 Subject: [PATCH 16/32] chore: add new stages to Jenkinsfile --- Jenkinsfile | 54 +++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 40 insertions(+), 14 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 26c1a40..e6457f4 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -44,11 +44,11 @@ pipeline { stages { stage ('Run tests') { environment { - DJANGO_DB_NAME = credentials('django-db-name') - DJANGO_DB_USER = credentials('django-db-user') - DJANGO_DB_HOST = credentials('django-db-host') - DJANGO_DB_PORT = credentials('django-db-port') - DJANGO_DB_PASSWORD = credentials('django-db-password') + DJANGO_DB_NAME = credentials('test-db-name') + DJANGO_DB_USER = credentials('test-db-user') + DJANGO_DB_HOST = credentials('test-db-host') + DJANGO_DB_PORT = credentials('test-db-port') + DJANGO_DB_PASSWORD = credentials('test-db-password') } steps { container('python') { @@ -87,14 +87,40 @@ pipeline { } } } -// stage('Deploy chart') { -// steps { -// container('helm') { -// withCredentials([file(credentialsId: 'overrides', variable: 'OVERRIDES')]) { -// sh "helm upgrade test --install ./helm/test -f ${OVERRIDES} --set deployment.image.tag=${tag}" -// } -// } -// } -// } + stage('Collect static') { + environment { + GS_BUCKET_NAME = credentials('gs-bucket-name') + GS_PROJECT_ID = credentials('gs-project-id') + GS_CREDENTIALS = credentials('gs-credentials') + } + steps { + container('python') { + sh "cd gitrello & python manage.py collectstatic --settings=gitrello.settings_prod" + } + } + } + stage('Migrate database') { + environment { + DJANGO_DB_NAME = credentials('db-name') + DJANGO_DB_USER = credentials('db-user') + DJANGO_DB_HOST = credentials('db-host') + DJANGO_DB_PORT = credentials('db-port') + DJANGO_DB_PASSWORD = credentials('db-password') + } + steps { + container('python') { + sh "cd gitrello & python manage.py migrate" + } + } + } + stage('Deploy chart') { + steps { + container('helm') { + withCredentials([file(credentialsId: 'gitrello-overrides', variable: 'OVERRIDES')]) { + sh "helm upgrade test --install ./manifests/gitrello -f ${OVERRIDES} --set deployment.image.tag=${tag}" + } + } + } + } } } From 9b63a8a5c753a612db956e7603370eec0ba09acf Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sat, 5 Sep 2020 22:42:37 +0300 Subject: [PATCH 17/32] chore: fix Jenkinsfile --- Jenkinsfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index e6457f4..96a1570 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -95,7 +95,7 @@ pipeline { } steps { container('python') { - sh "cd gitrello & python manage.py collectstatic --settings=gitrello.settings_prod" + sh "python manage.py collectstatic --settings=gitrello.settings_prod" } } } @@ -109,7 +109,7 @@ pipeline { } steps { container('python') { - sh "cd gitrello & python manage.py migrate" + sh "python manage.py migrate" } } } @@ -117,7 +117,7 @@ pipeline { steps { container('helm') { withCredentials([file(credentialsId: 'gitrello-overrides', variable: 'OVERRIDES')]) { - sh "helm upgrade test --install ./manifests/gitrello -f ${OVERRIDES} --set deployment.image.tag=${tag}" + sh "helm upgrade gitrello --install ./manifests/gitrello -f ${OVERRIDES} --set deployment.image.tag=${tag}" } } } From da93aef47f2b704fe69edab1fc74f0df25c30183 Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sat, 5 Sep 2020 22:52:49 +0300 Subject: [PATCH 18/32] chore: fix Jenkinsfile (2) --- Jenkinsfile | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 96a1570..89d3e7f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -87,29 +87,29 @@ pipeline { } } } - stage('Collect static') { + stage('Migrate database') { environment { - GS_BUCKET_NAME = credentials('gs-bucket-name') - GS_PROJECT_ID = credentials('gs-project-id') - GS_CREDENTIALS = credentials('gs-credentials') + DJANGO_DB_NAME = credentials('db-name') + DJANGO_DB_USER = credentials('db-user') + DJANGO_DB_HOST = credentials('db-host') + DJANGO_DB_PORT = credentials('db-port') + DJANGO_DB_PASSWORD = credentials('db-password') } steps { container('python') { - sh "python manage.py collectstatic --settings=gitrello.settings_prod" + sh "cd gitrello && python manage.py migrate" } } } - stage('Migrate database') { + stage('Collect static') { environment { - DJANGO_DB_NAME = credentials('db-name') - DJANGO_DB_USER = credentials('db-user') - DJANGO_DB_HOST = credentials('db-host') - DJANGO_DB_PORT = credentials('db-port') - DJANGO_DB_PASSWORD = credentials('db-password') + GS_BUCKET_NAME = credentials('gs-bucket-name') + GS_PROJECT_ID = credentials('gs-project-id') + GS_CREDENTIALS = credentials('gs-credentials') } steps { container('python') { - sh "python manage.py migrate" + sh "cd gitrello && python manage.py collectstatic --settings=gitrello.settings_prod" } } } From a9e0eb5784fadf8a984c9e4be5edb31b47791932 Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sat, 5 Sep 2020 23:06:50 +0300 Subject: [PATCH 19/32] feat: update settings --- gitrello/gitrello/settings.py | 2 +- gitrello/gitrello/settings_local.py | 2 -- gitrello/gitrello/settings_test.py | 2 -- 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/gitrello/gitrello/settings.py b/gitrello/gitrello/settings.py index 7112dfc..285a699 100644 --- a/gitrello/gitrello/settings.py +++ b/gitrello/gitrello/settings.py @@ -2,7 +2,7 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) -SECRET_KEY = os.getenv('DJANGO_SECRET_KEY') +SECRET_KEY = os.getenv('DJANGO_SECRET_KEY') or 'DUMMY_SECRET_KEY' DEBUG = False diff --git a/gitrello/gitrello/settings_local.py b/gitrello/gitrello/settings_local.py index 538c7e8..6f0a7e3 100644 --- a/gitrello/gitrello/settings_local.py +++ b/gitrello/gitrello/settings_local.py @@ -7,8 +7,6 @@ from gitrello.settings import * -SECRET_KEY = 'aDFgbU43GTgf@34cxbJhg7gsgd^hdgH%' - DEBUG = True # To disable IPython debug messages diff --git a/gitrello/gitrello/settings_test.py b/gitrello/gitrello/settings_test.py index 62da9ee..203413c 100644 --- a/gitrello/gitrello/settings_test.py +++ b/gitrello/gitrello/settings_test.py @@ -1,7 +1,5 @@ from gitrello.settings import * -SECRET_KEY = 'TEST_SECRET_KEY' - URL = 'http://127.0.0.1:8000' GITHUB_INTEGRATION_SERVICE_URL = 'http://127.0.0.1:8001' From 160e5cf8dc4ea68359ee554886b2b8b87dff7d0e Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sun, 6 Sep 2020 11:11:18 +0300 Subject: [PATCH 20/32] fix: replace tmp with gitrello in templates --- manifests/cockroachdb/values.yaml | 2 +- manifests/ingress-nginx/values.yaml | 2 +- manifests/jenkins/jenkins-ingress.yaml | 8 ++++---- manifests/jenkins/values.yaml | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/manifests/cockroachdb/values.yaml b/manifests/cockroachdb/values.yaml index 609360f..99e18f0 100644 --- a/manifests/cockroachdb/values.yaml +++ b/manifests/cockroachdb/values.yaml @@ -14,7 +14,7 @@ service: public: type: LoadBalancer annotations: - metallb.universe.tf/allow-shared-ip: tmp + metallb.universe.tf/allow-shared-ip: gitrello conf: cache: "200Mi" max-sql-memory: "200Mi" diff --git a/manifests/ingress-nginx/values.yaml b/manifests/ingress-nginx/values.yaml index 431483e..f1cbe53 100644 --- a/manifests/ingress-nginx/values.yaml +++ b/manifests/ingress-nginx/values.yaml @@ -1,4 +1,4 @@ controller: service: annotations: - metallb.universe.tf/allow-shared-ip: tmp + metallb.universe.tf/allow-shared-ip: gitrello diff --git a/manifests/jenkins/jenkins-ingress.yaml b/manifests/jenkins/jenkins-ingress.yaml index a034f3f..fb4ab30 100644 --- a/manifests/jenkins/jenkins-ingress.yaml +++ b/manifests/jenkins/jenkins-ingress.yaml @@ -7,11 +7,11 @@ metadata: spec: tls: - hosts: - - tmp.me - - www.tmp.me + - gitrello.me + - www.gitrello.me secretName: tls rules: - - host: tmp.me + - host: gitrello.me http: paths: - path: /jenkins @@ -21,7 +21,7 @@ spec: name: jenkins port: number: 8081 - - host: www.tmp.me + - host: www.gitrello.me http: paths: - path: /jenkins diff --git a/manifests/jenkins/values.yaml b/manifests/jenkins/values.yaml index e729f4b..caa066b 100644 --- a/manifests/jenkins/values.yaml +++ b/manifests/jenkins/values.yaml @@ -10,7 +10,7 @@ master: - configuration-as-code:1.41 - matrix-auth:2.6.2 - embeddable-build-status:2.0.3 - jenkinsUrl: https://tmp.me/jenkins + jenkinsUrl: https://gitrello.me/jenkins jenkinsAdminEmail: fnsdevelopment@gmail.com JCasC: securityRealm: |- From 370c87bb0b7dd3c1327ca0167c30a338291e1e2e Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sun, 6 Sep 2020 11:15:14 +0300 Subject: [PATCH 21/32] chore: add requests & limits to pods in Jenkinsfile --- Jenkinsfile | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Jenkinsfile b/Jenkinsfile index 89d3e7f..05b8b43 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -21,11 +21,25 @@ pipeline { command: - cat tty: true + resources: + requests: + memory: "500Mi" + cpu: "0.5" + limits: + memory: "500Mi" + cpu: "0.5" - name: docker image: docker:19.03 command: - cat tty: true + resources: + requests: + memory: "300Mi" + cpu: "0.2" + limits: + memory: "300Mi" + cpu: "0.2" volumeMounts: - name: dockersock mountPath: /var/run/docker.sock From 02024ef988a56f8bd2f0fac92b6f4668ea9acf6f Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sun, 6 Sep 2020 11:26:08 +0300 Subject: [PATCH 22/32] chore: update requests & limits to pods in Jenkinsfile --- Jenkinsfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 05b8b43..33f76dc 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -23,10 +23,10 @@ pipeline { tty: true resources: requests: - memory: "500Mi" + memory: "400Mi" cpu: "0.5" limits: - memory: "500Mi" + memory: "400Mi" cpu: "0.5" - name: docker image: docker:19.03 @@ -35,10 +35,10 @@ pipeline { tty: true resources: requests: - memory: "300Mi" + memory: "200Mi" cpu: "0.2" limits: - memory: "300Mi" + memory: "200Mi" cpu: "0.2" volumeMounts: - name: dockersock From d39d1de658de61e42774e4877300c8451bb3da9d Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sun, 6 Sep 2020 11:38:02 +0300 Subject: [PATCH 23/32] feat: load gs_credentials from file --- Jenkinsfile | 5 +++-- gitrello/gitrello/settings_prod.py | 4 +--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 33f76dc..1da6649 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -119,11 +119,12 @@ pipeline { environment { GS_BUCKET_NAME = credentials('gs-bucket-name') GS_PROJECT_ID = credentials('gs-project-id') - GS_CREDENTIALS = credentials('gs-credentials') } steps { container('python') { - sh "cd gitrello && python manage.py collectstatic --settings=gitrello.settings_prod" + withCredentials([file(credentialsId: 'gs-credentials', variable: 'GS_CREDENTIALS')) { + sh "cd gitrello && python manage.py collectstatic --settings=gitrello.settings_prod" + } } } } diff --git a/gitrello/gitrello/settings_prod.py b/gitrello/gitrello/settings_prod.py index d9aa3d3..3144d79 100644 --- a/gitrello/gitrello/settings_prod.py +++ b/gitrello/gitrello/settings_prod.py @@ -28,8 +28,6 @@ GS_BUCKET_NAME = os.getenv('GS_BUCKET_NAME') DEFAULT_FILE_STORAGE = 'gitrello.gcloud_storages.GoogleCloudMediaStorage' STATICFILES_STORAGE = 'gitrello.gcloud_storages.GoogleCloudStaticFilesStorage' -GS_CREDENTIALS = service_account.Credentials.from_service_account_info( - info=ast.literal_eval(os.getenv('GS_CREDENTIALS')), -) +GS_CREDENTIALS = service_account.Credentials.from_service_account_file(os.getenv('GS_CREDENTIALS')) GS_PROJECT_ID = os.getenv('GS_PROJECT_ID') GS_DEFAULT_ACL = 'publicRead' From 44decd3ee6fdf29f0ab795005bdc4dc22cf10a05 Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sun, 6 Sep 2020 11:39:38 +0300 Subject: [PATCH 24/32] fix: Jenkinsfile --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 1da6649..7cfc975 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -122,7 +122,7 @@ pipeline { } steps { container('python') { - withCredentials([file(credentialsId: 'gs-credentials', variable: 'GS_CREDENTIALS')) { + withCredentials([file(credentialsId: 'gs-credentials', variable: 'GS_CREDENTIALS')]) { sh "cd gitrello && python manage.py collectstatic --settings=gitrello.settings_prod" } } From 05a5e187bbe3b8a88ecce577e37c95b0967063bc Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sun, 6 Sep 2020 11:45:45 +0300 Subject: [PATCH 25/32] fix: add --noinput to collectstatic in pipeline --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 7cfc975..6f60cf8 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -123,7 +123,7 @@ pipeline { steps { container('python') { withCredentials([file(credentialsId: 'gs-credentials', variable: 'GS_CREDENTIALS')]) { - sh "cd gitrello && python manage.py collectstatic --settings=gitrello.settings_prod" + sh "cd gitrello && python manage.py collectstatic --noinput --settings=gitrello.settings_prod" } } } From dcc773329a12e803c955b4cdd26bd422af991f7f Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sun, 6 Sep 2020 11:47:58 +0300 Subject: [PATCH 26/32] fix: add --noinput to test in pipeline --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 6f60cf8..32893e9 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -73,7 +73,7 @@ pipeline { rm -rf /var/lib/apt/lists/* """ sh "pip install -r requirements.txt" - sh "cd gitrello && python manage.py test" + sh "cd gitrello && python manage.py --noinput test" } } } From 2d6b1c1e107a5e778ff6a7fbdca4d92c985d922f Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sun, 6 Sep 2020 11:57:05 +0300 Subject: [PATCH 27/32] fix: Jenkinsfile (2) --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 32893e9..b0cbabb 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -73,7 +73,7 @@ pipeline { rm -rf /var/lib/apt/lists/* """ sh "pip install -r requirements.txt" - sh "cd gitrello && python manage.py --noinput test" + sh "cd gitrello && python manage.py test --noinput" } } } From cda5fec257527eefe20ac0f062219e323e7360cf Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sun, 6 Sep 2020 12:08:55 +0300 Subject: [PATCH 28/32] fix: Jenkinsfile (3) --- Jenkinsfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Jenkinsfile b/Jenkinsfile index b0cbabb..457583f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -15,6 +15,8 @@ pipeline { labels: app: jenkins spec: + nodeSelector: + type: ci containers: - name: python image: python:3.8.5-slim-buster From 2582af2ae9c31220fd4e6847ce7d602e0a7905d2 Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sun, 6 Sep 2020 12:24:08 +0300 Subject: [PATCH 29/32] chore: bump app version --- gitrello/gitrello/settings_prod.py | 2 -- manifests/gitrello/Chart.yaml | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/gitrello/gitrello/settings_prod.py b/gitrello/gitrello/settings_prod.py index 3144d79..40b678a 100644 --- a/gitrello/gitrello/settings_prod.py +++ b/gitrello/gitrello/settings_prod.py @@ -1,5 +1,3 @@ -import ast - from google.oauth2 import service_account from gitrello.settings import * diff --git a/manifests/gitrello/Chart.yaml b/manifests/gitrello/Chart.yaml index 064a061..e8317de 100644 --- a/manifests/gitrello/Chart.yaml +++ b/manifests/gitrello/Chart.yaml @@ -5,4 +5,4 @@ description: Trello clone with GitHub integration type: application version: 0.1.0 -appVersion: 0.16dev +appVersion: 0.17 From 8f907a5e5ffbb77efef7561a13fe59dc3cbcc67e Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sun, 6 Sep 2020 12:41:47 +0300 Subject: [PATCH 30/32] chore: fix image in Jenkinsfile --- Jenkinsfile | 2 +- manifests/gitrello/Chart.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 457583f..5b8aff5 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -2,7 +2,7 @@ def tag pipeline { environment { - IMAGE_NAME = 'fnsdev/test' + IMAGE_NAME = 'fnsdev/gitrello' } agent { kubernetes { diff --git a/manifests/gitrello/Chart.yaml b/manifests/gitrello/Chart.yaml index e8317de..c252128 100644 --- a/manifests/gitrello/Chart.yaml +++ b/manifests/gitrello/Chart.yaml @@ -5,4 +5,4 @@ description: Trello clone with GitHub integration type: application version: 0.1.0 -appVersion: 0.17 +appVersion: 0.18 From a1a8d8d0b24c1003427f9d08662d989014b5f5cb Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sun, 6 Sep 2020 12:57:48 +0300 Subject: [PATCH 31/32] fix: try to load gs_credentials from file only if from_service_account_info failed --- gitrello/gitrello/settings_prod.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gitrello/gitrello/settings_prod.py b/gitrello/gitrello/settings_prod.py index 40b678a..48344d6 100644 --- a/gitrello/gitrello/settings_prod.py +++ b/gitrello/gitrello/settings_prod.py @@ -1,3 +1,5 @@ +import ast + from google.oauth2 import service_account from gitrello.settings import * @@ -26,6 +28,11 @@ GS_BUCKET_NAME = os.getenv('GS_BUCKET_NAME') DEFAULT_FILE_STORAGE = 'gitrello.gcloud_storages.GoogleCloudMediaStorage' STATICFILES_STORAGE = 'gitrello.gcloud_storages.GoogleCloudStaticFilesStorage' -GS_CREDENTIALS = service_account.Credentials.from_service_account_file(os.getenv('GS_CREDENTIALS')) +try: + GS_CREDENTIALS = service_account.Credentials.from_service_account_info( + info=ast.literal_eval(os.getenv('GS_CREDENTIALS')), + ) +except Exception: + GS_CREDENTIALS = service_account.Credentials.from_service_account_file(os.getenv('GS_CREDENTIALS')) GS_PROJECT_ID = os.getenv('GS_PROJECT_ID') GS_DEFAULT_ACL = 'publicRead' From 4694fd48310a5eff186d17c55772e5c6c3ebfb89 Mon Sep 17 00:00:00 2001 From: Uladzislau Stasheuski Date: Sun, 6 Sep 2020 13:22:41 +0300 Subject: [PATCH 32/32] chore: add build status into README --- README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..7154aef --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# GITrello + +[![Build Status](https://gitrello.me/jenkins/buildStatus/icon?job=gitrello)](https://gitrello.me/jenkins/job/gitrello/)