Update templates for 10.0
This commit is contained in:
parent
43f474901d
commit
3dafd75e47
14 changed files with 572 additions and 22 deletions
47
vendor/Dockerfile/CONTRIBUTING.md
vendored
47
vendor/Dockerfile/CONTRIBUTING.md
vendored
|
@ -3,3 +3,50 @@ https://gitlab.com/gitlab-org/Dockerfile.
|
||||||
|
|
||||||
GitLab only mirrors the templates. Please submit your merge requests to
|
GitLab only mirrors the templates. Please submit your merge requests to
|
||||||
https://gitlab.com/gitlab-org/Dockerfile.
|
https://gitlab.com/gitlab-org/Dockerfile.
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
Thank you for your interest in contributing to this GitLab project! We welcome
|
||||||
|
all contributions. By participating in this project, you agree to abide by the
|
||||||
|
[code of conduct](#code-of-conduct).
|
||||||
|
|
||||||
|
## Contributor license agreement
|
||||||
|
|
||||||
|
By submitting code as an individual you agree to the [individual contributor
|
||||||
|
license agreement][individual-agreement].
|
||||||
|
|
||||||
|
By submitting code as an entity you agree to the [corporate contributor license
|
||||||
|
agreement][corporate-agreement].
|
||||||
|
|
||||||
|
## Code of conduct
|
||||||
|
|
||||||
|
As contributors and maintainers of this project, we pledge to respect all people
|
||||||
|
who contribute through reporting issues, posting feature requests, updating
|
||||||
|
documentation, submitting pull requests or patches, and other activities.
|
||||||
|
|
||||||
|
We are committed to making participation in this project a harassment-free
|
||||||
|
experience for everyone, regardless of level of experience, gender, gender
|
||||||
|
identity and expression, sexual orientation, disability, personal appearance,
|
||||||
|
body size, race, ethnicity, age, or religion.
|
||||||
|
|
||||||
|
Examples of unacceptable behavior by participants include the use of sexual
|
||||||
|
language or imagery, derogatory comments or personal attacks, trolling, public
|
||||||
|
or private harassment, insults, or other unprofessional conduct.
|
||||||
|
|
||||||
|
Project maintainers have the right and responsibility to remove, edit, or reject
|
||||||
|
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||||
|
not aligned to this Code of Conduct. Project maintainers who do not follow the
|
||||||
|
Code of Conduct may be removed from the project team.
|
||||||
|
|
||||||
|
This code of conduct applies both within project spaces and in public spaces
|
||||||
|
when an individual is representing the project or its community.
|
||||||
|
|
||||||
|
Instances of abusive, harassing, or otherwise unacceptable behavior can be
|
||||||
|
reported by emailing contact@gitlab.com.
|
||||||
|
|
||||||
|
This Code of Conduct is adapted from the [Contributor Covenant][contributor-covenant], version 1.1.0,
|
||||||
|
available at [http://contributor-covenant.org/version/1/1/0/](http://contributor-covenant.org/version/1/1/0/).
|
||||||
|
|
||||||
|
[contributor-covenant]: http://contributor-covenant.org
|
||||||
|
[individual-agreement]: https://docs.gitlab.com/ee/legal/individual_contributor_license_agreement.html
|
||||||
|
[corporate-agreement]: https://docs.gitlab.com/ee/legal/corporate_contributor_license_agreement.html
|
||||||
|
|
5
vendor/gitignore/Actionscript.gitignore
vendored
5
vendor/gitignore/Actionscript.gitignore
vendored
|
@ -1,9 +1,8 @@
|
||||||
# Build and Release Folders
|
# Build and Release Folders
|
||||||
bin/
|
|
||||||
bin-debug/
|
bin-debug/
|
||||||
bin-release/
|
bin-release/
|
||||||
[Oo]bj/ # FlashDevelop obj
|
[Oo]bj/
|
||||||
[Bb]in/ # FlashDevelop bin
|
[Bb]in/
|
||||||
|
|
||||||
# Other files and folders
|
# Other files and folders
|
||||||
.settings/
|
.settings/
|
||||||
|
|
3
vendor/gitignore/Drupal.gitignore
vendored
3
vendor/gitignore/Drupal.gitignore
vendored
|
@ -1,10 +1,12 @@
|
||||||
# Ignore configuration files that may contain sensitive information.
|
# Ignore configuration files that may contain sensitive information.
|
||||||
sites/*/*settings*.php
|
sites/*/*settings*.php
|
||||||
|
sites/example.sites.php
|
||||||
|
|
||||||
# Ignore paths that contain generated content.
|
# Ignore paths that contain generated content.
|
||||||
files/
|
files/
|
||||||
sites/*/files
|
sites/*/files
|
||||||
sites/*/private
|
sites/*/private
|
||||||
|
sites/*/translations
|
||||||
|
|
||||||
# Ignore default text files
|
# Ignore default text files
|
||||||
robots.txt
|
robots.txt
|
||||||
|
@ -16,6 +18,7 @@ robots.txt
|
||||||
/UPGRADE.txt
|
/UPGRADE.txt
|
||||||
/README.txt
|
/README.txt
|
||||||
sites/README.txt
|
sites/README.txt
|
||||||
|
sites/all/libraries/README.txt
|
||||||
sites/all/modules/README.txt
|
sites/all/modules/README.txt
|
||||||
sites/all/themes/README.txt
|
sites/all/themes/README.txt
|
||||||
|
|
||||||
|
|
1
vendor/gitignore/Kotlin.gitignore
vendored
Symbolic link
1
vendor/gitignore/Kotlin.gitignore
vendored
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
Java.gitignore
|
2
vendor/gitignore/Nanoc.gitignore
vendored
2
vendor/gitignore/Nanoc.gitignore
vendored
|
@ -4,7 +4,7 @@
|
||||||
output/
|
output/
|
||||||
|
|
||||||
# Temporary file directory
|
# Temporary file directory
|
||||||
tmp/
|
tmp/nanoc/
|
||||||
|
|
||||||
# Crash Log
|
# Crash Log
|
||||||
crash.log
|
crash.log
|
||||||
|
|
2
vendor/gitignore/Node.gitignore
vendored
2
vendor/gitignore/Node.gitignore
vendored
|
@ -29,7 +29,7 @@ bower_components
|
||||||
# node-waf configuration
|
# node-waf configuration
|
||||||
.lock-wscript
|
.lock-wscript
|
||||||
|
|
||||||
# Compiled binary addons (http://nodejs.org/api/addons.html)
|
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||||
build/Release
|
build/Release
|
||||||
|
|
||||||
# Dependency directories
|
# Dependency directories
|
||||||
|
|
2
vendor/gitignore/Qt.gitignore
vendored
2
vendor/gitignore/Qt.gitignore
vendored
|
@ -26,6 +26,8 @@ moc_*.cpp
|
||||||
moc_*.h
|
moc_*.h
|
||||||
qrc_*.cpp
|
qrc_*.cpp
|
||||||
ui_*.h
|
ui_*.h
|
||||||
|
*.qmlc
|
||||||
|
*.jsc
|
||||||
Makefile*
|
Makefile*
|
||||||
*build-*
|
*build-*
|
||||||
|
|
||||||
|
|
1
vendor/gitignore/Swift.gitignore
vendored
1
vendor/gitignore/Swift.gitignore
vendored
|
@ -37,6 +37,7 @@ playground.xcworkspace
|
||||||
# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
|
# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
|
||||||
# Packages/
|
# Packages/
|
||||||
# Package.pins
|
# Package.pins
|
||||||
|
# Package.resolved
|
||||||
.build/
|
.build/
|
||||||
|
|
||||||
# CocoaPods
|
# CocoaPods
|
||||||
|
|
1
vendor/gitignore/Terraform.gitignore
vendored
1
vendor/gitignore/Terraform.gitignore
vendored
|
@ -1,5 +1,6 @@
|
||||||
# Compiled files
|
# Compiled files
|
||||||
*.tfstate
|
*.tfstate
|
||||||
|
*.tfstate.*.backup
|
||||||
*.tfstate.backup
|
*.tfstate.backup
|
||||||
|
|
||||||
# Module directory
|
# Module directory
|
||||||
|
|
4
vendor/gitignore/VisualStudio.gitignore
vendored
4
vendor/gitignore/VisualStudio.gitignore
vendored
|
@ -116,6 +116,10 @@ _TeamCity*
|
||||||
# DotCover is a Code Coverage Tool
|
# DotCover is a Code Coverage Tool
|
||||||
*.dotCover
|
*.dotCover
|
||||||
|
|
||||||
|
# AxoCover is a Code Coverage Tool
|
||||||
|
.axoCover/*
|
||||||
|
!.axoCover/settings.json
|
||||||
|
|
||||||
# Visual Studio code coverage results
|
# Visual Studio code coverage results
|
||||||
*.coverage
|
*.coverage
|
||||||
*.coveragexml
|
*.coveragexml
|
||||||
|
|
411
vendor/gitlab-ci-yml/Auto-DevOps.gitlab-ci.yml
vendored
Normal file
411
vendor/gitlab-ci-yml/Auto-DevOps.gitlab-ci.yml
vendored
Normal file
|
@ -0,0 +1,411 @@
|
||||||
|
# Auto DevOps
|
||||||
|
# This CI/CD configuration provides a standard pipeline for
|
||||||
|
# * building a Docker image (using a buildpack if necessary),
|
||||||
|
# * storing the image in the container registry,
|
||||||
|
# * running tests from a buildpack,
|
||||||
|
# * running code quality analysis,
|
||||||
|
# * creating a review app for each topic branch,
|
||||||
|
# * and continuous deployment to production
|
||||||
|
#
|
||||||
|
# In order to deploy, you must have a Kubernetes cluster configured either
|
||||||
|
# via a project integration, or via group/project variables.
|
||||||
|
# AUTO_DEVOPS_DOMAIN must also be set as a variable at the group or project
|
||||||
|
# level, or manually added below.
|
||||||
|
#
|
||||||
|
# If you want to deploy to staging first, or enable canary deploys,
|
||||||
|
# uncomment the relevant jobs in the pipeline below.
|
||||||
|
#
|
||||||
|
# If Auto DevOps fails to detect the proper buildpack, or if you want to
|
||||||
|
# specify a custom buildpack, set a project variable `BUILDPACK_URL` to the
|
||||||
|
# repository URL of the buildpack.
|
||||||
|
# e.g. BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-ruby.git#v142
|
||||||
|
# If you need multiple buildpacks, add a file to your project called
|
||||||
|
# `.buildpacks` that contains the URLs, one on each line, in order.
|
||||||
|
# Note: Auto CI does not work with multiple buildpacks yet
|
||||||
|
|
||||||
|
image: alpine:latest
|
||||||
|
|
||||||
|
variables:
|
||||||
|
# AUTO_DEVOPS_DOMAIN is the application deployment domain and should be set as a variable at the group or project level.
|
||||||
|
# AUTO_DEVOPS_DOMAIN: domain.example.com
|
||||||
|
|
||||||
|
POSTGRES_USER: user
|
||||||
|
POSTGRES_PASSWORD: testing-password
|
||||||
|
POSTGRES_ENABLED: "true"
|
||||||
|
POSTGRES_DB: $CI_ENVIRONMENT_SLUG
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- build
|
||||||
|
- test
|
||||||
|
- review
|
||||||
|
- staging
|
||||||
|
- canary
|
||||||
|
- production
|
||||||
|
- cleanup
|
||||||
|
|
||||||
|
build:
|
||||||
|
stage: build
|
||||||
|
image: docker:git
|
||||||
|
services:
|
||||||
|
- docker:dind
|
||||||
|
variables:
|
||||||
|
DOCKER_DRIVER: overlay2
|
||||||
|
script:
|
||||||
|
- setup_docker
|
||||||
|
- build
|
||||||
|
only:
|
||||||
|
- branches
|
||||||
|
|
||||||
|
test:
|
||||||
|
services:
|
||||||
|
- postgres:latest
|
||||||
|
variables:
|
||||||
|
POSTGRES_DB: test
|
||||||
|
stage: test
|
||||||
|
image: gliderlabs/herokuish:latest
|
||||||
|
script:
|
||||||
|
- setup_test_db
|
||||||
|
- cp -R . /tmp/app
|
||||||
|
- /bin/herokuish buildpack test
|
||||||
|
only:
|
||||||
|
- branches
|
||||||
|
|
||||||
|
codequality:
|
||||||
|
image: docker:latest
|
||||||
|
variables:
|
||||||
|
DOCKER_DRIVER: overlay2
|
||||||
|
allow_failure: true
|
||||||
|
services:
|
||||||
|
- docker:dind
|
||||||
|
script:
|
||||||
|
- setup_docker
|
||||||
|
- codeclimate
|
||||||
|
artifacts:
|
||||||
|
paths: [codeclimate.json]
|
||||||
|
|
||||||
|
review:
|
||||||
|
stage: review
|
||||||
|
script:
|
||||||
|
- check_kube_domain
|
||||||
|
- install_dependencies
|
||||||
|
- download_chart
|
||||||
|
- ensure_namespace
|
||||||
|
- install_tiller
|
||||||
|
- create_secret
|
||||||
|
- deploy
|
||||||
|
environment:
|
||||||
|
name: review/$CI_COMMIT_REF_NAME
|
||||||
|
url: http://$CI_PROJECT_PATH_SLUG-$CI_ENVIRONMENT_SLUG.$AUTO_DEVOPS_DOMAIN
|
||||||
|
on_stop: stop_review
|
||||||
|
only:
|
||||||
|
refs:
|
||||||
|
- branches
|
||||||
|
kubernetes: active
|
||||||
|
except:
|
||||||
|
- master
|
||||||
|
|
||||||
|
stop_review:
|
||||||
|
stage: cleanup
|
||||||
|
variables:
|
||||||
|
GIT_STRATEGY: none
|
||||||
|
script:
|
||||||
|
- install_dependencies
|
||||||
|
- delete
|
||||||
|
environment:
|
||||||
|
name: review/$CI_COMMIT_REF_NAME
|
||||||
|
action: stop
|
||||||
|
when: manual
|
||||||
|
allow_failure: true
|
||||||
|
only:
|
||||||
|
refs:
|
||||||
|
- branches
|
||||||
|
kubernetes: active
|
||||||
|
except:
|
||||||
|
- master
|
||||||
|
|
||||||
|
# Keys that start with a dot (.) will not be processed by GitLab CI.
|
||||||
|
# Staging and canary jobs are disabled by default, to enable them
|
||||||
|
# remove the dot (.) before the job name.
|
||||||
|
# https://docs.gitlab.com/ee/ci/yaml/README.html#hidden-keys
|
||||||
|
|
||||||
|
# Staging deploys are disabled by default since
|
||||||
|
# continuous deployment to production is enabled by default
|
||||||
|
# If you prefer to automatically deploy to staging and
|
||||||
|
# only manually promote to production, enable this job by removing the dot (.),
|
||||||
|
# and uncomment the `when: manual` line in the `production` job.
|
||||||
|
|
||||||
|
.staging:
|
||||||
|
stage: staging
|
||||||
|
script:
|
||||||
|
- check_kube_domain
|
||||||
|
- install_dependencies
|
||||||
|
- download_chart
|
||||||
|
- ensure_namespace
|
||||||
|
- install_tiller
|
||||||
|
- create_secret
|
||||||
|
- deploy
|
||||||
|
environment:
|
||||||
|
name: staging
|
||||||
|
url: http://$CI_PROJECT_PATH_SLUG-staging.$AUTO_DEVOPS_DOMAIN
|
||||||
|
only:
|
||||||
|
refs:
|
||||||
|
- master
|
||||||
|
kubernetes: active
|
||||||
|
|
||||||
|
# Canaries are disabled by default, but if you want them,
|
||||||
|
# and know what the downsides are, enable this job by removing the dot (.),
|
||||||
|
# and uncomment the `when: manual` line in the `production` job.
|
||||||
|
|
||||||
|
.canary:
|
||||||
|
stage: canary
|
||||||
|
script:
|
||||||
|
- check_kube_domain
|
||||||
|
- install_dependencies
|
||||||
|
- download_chart
|
||||||
|
- ensure_namespace
|
||||||
|
- install_tiller
|
||||||
|
- create_secret
|
||||||
|
- deploy canary
|
||||||
|
environment:
|
||||||
|
name: production
|
||||||
|
url: http://$CI_PROJECT_PATH_SLUG.$AUTO_DEVOPS_DOMAIN
|
||||||
|
when: manual
|
||||||
|
only:
|
||||||
|
refs:
|
||||||
|
- master
|
||||||
|
kubernetes: active
|
||||||
|
|
||||||
|
# This job continuously deploys to production on every push to `master`.
|
||||||
|
# To make this a manual process, either because you're enabling `staging`
|
||||||
|
# or `canary` deploys, or you simply want more control over when you deploy
|
||||||
|
# to production, uncomment the `when: manual` line in the `production` job.
|
||||||
|
|
||||||
|
production:
|
||||||
|
stage: production
|
||||||
|
script:
|
||||||
|
- check_kube_domain
|
||||||
|
- install_dependencies
|
||||||
|
- download_chart
|
||||||
|
- ensure_namespace
|
||||||
|
- install_tiller
|
||||||
|
- create_secret
|
||||||
|
- deploy
|
||||||
|
- delete canary
|
||||||
|
environment:
|
||||||
|
name: production
|
||||||
|
url: http://$CI_PROJECT_PATH_SLUG.$AUTO_DEVOPS_DOMAIN
|
||||||
|
# when: manual
|
||||||
|
only:
|
||||||
|
refs:
|
||||||
|
- master
|
||||||
|
kubernetes: active
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.auto_devops: &auto_devops |
|
||||||
|
# Auto DevOps variables and functions
|
||||||
|
[[ "$TRACE" ]] && set -x
|
||||||
|
auto_database_url=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${CI_ENVIRONMENT_SLUG}-postgres:5432/${POSTGRES_DB}
|
||||||
|
export DATABASE_URL=${DATABASE_URL-$auto_database_url}
|
||||||
|
export CI_APPLICATION_REPOSITORY=$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG
|
||||||
|
export CI_APPLICATION_TAG=$CI_COMMIT_SHA
|
||||||
|
export CI_CONTAINER_NAME=ci_job_build_${CI_JOB_ID}
|
||||||
|
export TILLER_NAMESPACE=$KUBE_NAMESPACE
|
||||||
|
|
||||||
|
function codeclimate() {
|
||||||
|
cc_opts="--env CODECLIMATE_CODE="$PWD" \
|
||||||
|
--volume "$PWD":/code \
|
||||||
|
--volume /var/run/docker.sock:/var/run/docker.sock \
|
||||||
|
--volume /tmp/cc:/tmp/cc"
|
||||||
|
|
||||||
|
docker run ${cc_opts} codeclimate/codeclimate init
|
||||||
|
docker run ${cc_opts} codeclimate/codeclimate analyze -f json > codeclimate.json
|
||||||
|
}
|
||||||
|
|
||||||
|
function deploy() {
|
||||||
|
track="${1-stable}"
|
||||||
|
name="$CI_ENVIRONMENT_SLUG"
|
||||||
|
|
||||||
|
if [[ "$track" != "stable" ]]; then
|
||||||
|
name="$name-$track"
|
||||||
|
fi
|
||||||
|
|
||||||
|
replicas="1"
|
||||||
|
service_enabled="false"
|
||||||
|
postgres_enabled="$POSTGRES_ENABLED"
|
||||||
|
# canary uses stable db
|
||||||
|
[[ "$track" == "canary" ]] && postgres_enabled="false"
|
||||||
|
|
||||||
|
env_track=$( echo $track | tr -s '[:lower:]' '[:upper:]' )
|
||||||
|
env_slug=$( echo ${CI_ENVIRONMENT_SLUG//-/_} | tr -s '[:lower:]' '[:upper:]' )
|
||||||
|
|
||||||
|
if [[ "$track" == "stable" ]]; then
|
||||||
|
# for stable track get number of replicas from `PRODUCTION_REPLICAS`
|
||||||
|
eval new_replicas=\$${env_slug}_REPLICAS
|
||||||
|
service_enabled="true"
|
||||||
|
else
|
||||||
|
# for all tracks get number of replicas from `CANARY_PRODUCTION_REPLICAS`
|
||||||
|
eval new_replicas=\$${env_track}_${env_slug}_REPLICAS
|
||||||
|
fi
|
||||||
|
if [[ -n "$new_replicas" ]]; then
|
||||||
|
replicas="$new_replicas"
|
||||||
|
fi
|
||||||
|
|
||||||
|
helm upgrade --install \
|
||||||
|
--wait \
|
||||||
|
--set service.enabled="$service_enabled" \
|
||||||
|
--set releaseOverride="$CI_ENVIRONMENT_SLUG" \
|
||||||
|
--set image.repository="$CI_APPLICATION_REPOSITORY" \
|
||||||
|
--set image.tag="$CI_APPLICATION_TAG" \
|
||||||
|
--set image.pullPolicy=IfNotPresent \
|
||||||
|
--set application.track="$track" \
|
||||||
|
--set application.database_url="$DATABASE_URL" \
|
||||||
|
--set service.url="$CI_ENVIRONMENT_URL" \
|
||||||
|
--set replicaCount="$replicas" \
|
||||||
|
--set postgresql.enabled="$postgres_enabled" \
|
||||||
|
--set postgresql.nameOverride="postgres" \
|
||||||
|
--set postgresql.postgresUser="$POSTGRES_USER" \
|
||||||
|
--set postgresql.postgresPassword="$POSTGRES_PASSWORD" \
|
||||||
|
--set postgresql.postgresDatabase="$POSTGRES_DB" \
|
||||||
|
--namespace="$KUBE_NAMESPACE" \
|
||||||
|
--version="$CI_PIPELINE_ID-$CI_JOB_ID" \
|
||||||
|
"$name" \
|
||||||
|
chart/
|
||||||
|
|
||||||
|
if [[ "$track" == "stable" ]]; then
|
||||||
|
kubectl rollout status -n "$KUBE_NAMESPACE" -w "deployment/${CI_ENVIRONMENT_SLUG}-auto-deploy"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function install_dependencies() {
|
||||||
|
apk add -U openssl curl tar gzip bash ca-certificates git
|
||||||
|
wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://raw.githubusercontent.com/sgerrand/alpine-pkg-glibc/master/sgerrand.rsa.pub
|
||||||
|
wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.23-r3/glibc-2.23-r3.apk
|
||||||
|
apk add glibc-2.23-r3.apk
|
||||||
|
rm glibc-2.23-r3.apk
|
||||||
|
|
||||||
|
curl https://kubernetes-helm.storage.googleapis.com/helm-v2.6.1-linux-amd64.tar.gz | tar zx
|
||||||
|
mv linux-amd64/helm /usr/bin/
|
||||||
|
helm version --client
|
||||||
|
|
||||||
|
curl -L -o /usr/bin/kubectl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
|
||||||
|
chmod +x /usr/bin/kubectl
|
||||||
|
kubectl version --client
|
||||||
|
}
|
||||||
|
|
||||||
|
function setup_docker() {
|
||||||
|
if ! docker info &>/dev/null; then
|
||||||
|
if [ -z "$DOCKER_HOST" -a "$KUBERNETES_PORT" ]; then
|
||||||
|
export DOCKER_HOST='tcp://localhost:2375'
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function setup_test_db() {
|
||||||
|
if [ -z ${KUBERNETES_PORT+x} ]; then
|
||||||
|
DB_HOST=postgres
|
||||||
|
else
|
||||||
|
DB_HOST=localhost
|
||||||
|
fi
|
||||||
|
export DATABASE_URL="postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DB_HOST}:5432/${POSTGRES_DB}"
|
||||||
|
}
|
||||||
|
|
||||||
|
function download_chart() {
|
||||||
|
if [[ ! -d chart ]]; then
|
||||||
|
auto_chart=${AUTO_DEVOPS_CHART:-gitlab/auto-deploy-app}
|
||||||
|
auto_chart_name=$(basename $auto_chart)
|
||||||
|
auto_chart_name=${auto_chart_name%.tgz}
|
||||||
|
else
|
||||||
|
auto_chart="chart"
|
||||||
|
auto_chart_name="chart"
|
||||||
|
fi
|
||||||
|
|
||||||
|
helm init --client-only
|
||||||
|
helm repo add gitlab https://charts.gitlab.io
|
||||||
|
if [[ ! -d "$auto_chart" ]]; then
|
||||||
|
helm fetch ${auto_chart} --untar
|
||||||
|
fi
|
||||||
|
if [ "$auto_chart_name" != "chart" ]; then
|
||||||
|
mv ${auto_chart_name} chart
|
||||||
|
fi
|
||||||
|
|
||||||
|
helm dependency update chart/
|
||||||
|
helm dependency build chart/
|
||||||
|
}
|
||||||
|
|
||||||
|
function ensure_namespace() {
|
||||||
|
kubectl describe namespace "$KUBE_NAMESPACE" || kubectl create namespace "$KUBE_NAMESPACE"
|
||||||
|
}
|
||||||
|
|
||||||
|
function check_kube_domain() {
|
||||||
|
if [ -z ${AUTO_DEVOPS_DOMAIN+x} ]; then
|
||||||
|
echo "In order to deploy, AUTO_DEVOPS_DOMAIN must be set as a variable at the group or project level, or manually added in .gitlab-cy.yml"
|
||||||
|
false
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function build() {
|
||||||
|
if [[ -f Dockerfile ]]; then
|
||||||
|
echo "Building Dockerfile-based application..."
|
||||||
|
docker build -t "$CI_APPLICATION_REPOSITORY:$CI_APPLICATION_TAG" .
|
||||||
|
else
|
||||||
|
echo "Building Heroku-based application using gliderlabs/herokuish docker image..."
|
||||||
|
docker run -i --name="$CI_CONTAINER_NAME" -v "$(pwd):/tmp/app:ro" gliderlabs/herokuish /bin/herokuish buildpack build
|
||||||
|
docker commit "$CI_CONTAINER_NAME" "$CI_APPLICATION_REPOSITORY:$CI_APPLICATION_TAG"
|
||||||
|
docker rm "$CI_CONTAINER_NAME" >/dev/null
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "Configuring $CI_APPLICATION_REPOSITORY:$CI_APPLICATION_TAG docker image..."
|
||||||
|
docker create --expose 5000 --env PORT=5000 --name="$CI_CONTAINER_NAME" "$CI_APPLICATION_REPOSITORY:$CI_APPLICATION_TAG" /bin/herokuish procfile start web
|
||||||
|
docker commit "$CI_CONTAINER_NAME" "$CI_APPLICATION_REPOSITORY:$CI_APPLICATION_TAG"
|
||||||
|
docker rm "$CI_CONTAINER_NAME" >/dev/null
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n "$CI_REGISTRY_USER" ]]; then
|
||||||
|
echo "Logging to GitLab Container Registry with CI credentials..."
|
||||||
|
docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Pushing to GitLab Container Registry..."
|
||||||
|
docker push "$CI_APPLICATION_REPOSITORY:$CI_APPLICATION_TAG"
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
function install_tiller() {
|
||||||
|
echo "Checking Tiller..."
|
||||||
|
helm init --upgrade
|
||||||
|
kubectl rollout status -n "$TILLER_NAMESPACE" -w "deployment/tiller-deploy"
|
||||||
|
if ! helm version --debug; then
|
||||||
|
echo "Failed to init Tiller."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
function create_secret() {
|
||||||
|
kubectl create secret -n "$KUBE_NAMESPACE" \
|
||||||
|
docker-registry gitlab-registry \
|
||||||
|
--docker-server="$CI_REGISTRY" \
|
||||||
|
--docker-username="$CI_REGISTRY_USER" \
|
||||||
|
--docker-password="$CI_REGISTRY_PASSWORD" \
|
||||||
|
--docker-email="$GITLAB_USER_EMAIL" \
|
||||||
|
-o yaml --dry-run | kubectl replace -n "$KUBE_NAMESPACE" --force -f -
|
||||||
|
}
|
||||||
|
|
||||||
|
function delete() {
|
||||||
|
track="${1-stable}"
|
||||||
|
name="$CI_ENVIRONMENT_SLUG"
|
||||||
|
|
||||||
|
if [[ "$track" != "stable" ]]; then
|
||||||
|
name="$name-$track"
|
||||||
|
fi
|
||||||
|
|
||||||
|
helm delete "$name" || true
|
||||||
|
}
|
||||||
|
|
||||||
|
before_script:
|
||||||
|
- *auto_devops
|
34
vendor/gitlab-ci-yml/Bash.gitlab-ci.yml
vendored
34
vendor/gitlab-ci-yml/Bash.gitlab-ci.yml
vendored
|
@ -4,32 +4,32 @@
|
||||||
image: busybox:latest
|
image: busybox:latest
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- echo "Before script section"
|
- echo "Before script section"
|
||||||
- echo "For example you might run an update here or install a build dependency"
|
- echo "For example you might run an update here or install a build dependency"
|
||||||
- echo "Or perhaps you might print out some debugging details"
|
- echo "Or perhaps you might print out some debugging details"
|
||||||
|
|
||||||
after_script:
|
after_script:
|
||||||
- echo "After script section"
|
- echo "After script section"
|
||||||
- echo "For example you might do some cleanup here"
|
- echo "For example you might do some cleanup here"
|
||||||
|
|
||||||
build1:
|
build1:
|
||||||
stage: build
|
stage: build
|
||||||
script:
|
script:
|
||||||
- echo "Do your build here"
|
- echo "Do your build here"
|
||||||
|
|
||||||
test1:
|
test1:
|
||||||
stage: test
|
stage: test
|
||||||
script:
|
script:
|
||||||
- echo "Do a test here"
|
- echo "Do a test here"
|
||||||
- echo "For example run a test suite"
|
- echo "For example run a test suite"
|
||||||
|
|
||||||
test2:
|
test2:
|
||||||
stage: test
|
stage: test
|
||||||
script:
|
script:
|
||||||
- echo "Do another parallel test here"
|
- echo "Do another parallel test here"
|
||||||
- echo "For example run a lint test"
|
- echo "For example run a lint test"
|
||||||
|
|
||||||
deploy1:
|
deploy1:
|
||||||
stage: deploy
|
stage: deploy
|
||||||
script:
|
script:
|
||||||
- echo "Do your deploy here"
|
- echo "Do your deploy here"
|
||||||
|
|
26
vendor/gitlab-ci-yml/Packer.gitlab-ci.yml
vendored
Normal file
26
vendor/gitlab-ci-yml/Packer.gitlab-ci.yml
vendored
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
image:
|
||||||
|
name: hashicorp/packer:1.0.4
|
||||||
|
entrypoint:
|
||||||
|
- '/usr/bin/env'
|
||||||
|
- 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
|
||||||
|
|
||||||
|
before_script:
|
||||||
|
- packer --version
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- validate
|
||||||
|
- deploy
|
||||||
|
|
||||||
|
validate:
|
||||||
|
stage: validate
|
||||||
|
script:
|
||||||
|
- find . -maxdepth 1 -name '*.json' -print0 | xargs -t0n1 packer validate
|
||||||
|
|
||||||
|
build:
|
||||||
|
stage: deploy
|
||||||
|
environment: production
|
||||||
|
script:
|
||||||
|
- find . -maxdepth 1 -name '*.json' -print0 | xargs -t0n1 packer build
|
||||||
|
when: manual
|
||||||
|
only:
|
||||||
|
- master
|
55
vendor/gitlab-ci-yml/Terraform.gitlab-ci.yml
vendored
Normal file
55
vendor/gitlab-ci-yml/Terraform.gitlab-ci.yml
vendored
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
# Official image for Hashicorp's Terraform. It uses light image which is Alpine
|
||||||
|
# based as it is much lighter.
|
||||||
|
#
|
||||||
|
# Entrypoint is also needed as image by default set `terraform` binary as an
|
||||||
|
# entrypoint.
|
||||||
|
image:
|
||||||
|
name: hashicorp/terraform:light
|
||||||
|
entrypoint:
|
||||||
|
- '/usr/bin/env'
|
||||||
|
- 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
|
||||||
|
|
||||||
|
# Default output file for Terraform plan
|
||||||
|
variables:
|
||||||
|
PLAN: plan.tfplan
|
||||||
|
|
||||||
|
cache:
|
||||||
|
paths:
|
||||||
|
- .terraform
|
||||||
|
|
||||||
|
before_script:
|
||||||
|
- terraform --version
|
||||||
|
- terraform init
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- validate
|
||||||
|
- build
|
||||||
|
- deploy
|
||||||
|
|
||||||
|
validate:
|
||||||
|
stage: validate
|
||||||
|
script:
|
||||||
|
- terraform validate
|
||||||
|
|
||||||
|
plan:
|
||||||
|
stage: build
|
||||||
|
script:
|
||||||
|
- terraform plan -out=$PLAN
|
||||||
|
artifacts:
|
||||||
|
name: plan
|
||||||
|
paths:
|
||||||
|
- $PLAN
|
||||||
|
|
||||||
|
# Separate apply job for manual launching Terraform as it can be destructive
|
||||||
|
# action.
|
||||||
|
apply:
|
||||||
|
stage: deploy
|
||||||
|
environment:
|
||||||
|
name: production
|
||||||
|
script:
|
||||||
|
- terraform apply -input=false $PLAN
|
||||||
|
dependencies:
|
||||||
|
- plan
|
||||||
|
when: manual
|
||||||
|
only:
|
||||||
|
- master
|
Loading…
Reference in a new issue