create-typescript-project-scaffolding
Version:
Scaffold your new Typescript project with everything you need
80 lines (68 loc) • 2 kB
YAML
stages:
- build
- push
.docker_login:
- echo -n $CI_JOB_TOKEN | docker login -u gitlab-ci-token --password-stdin $CI_REGISTRY
variables:
DOCKER_BUILDKIT: 1
DOCKER_TLS_CERTDIR: "/certs"
include:
- template: Security/SAST.gitlab-ci.yml
- template: Security/Container-Scanning.gitlab-ci.yml
- template: Security/Secret-Detection.gitlab-ci.yml
# - template: Code-Quality.gitlab-ci.yml
Build:
image: docker:20
services:
- name: docker:20-dind
stage: build
retry: 2
before_script:
-
script:
- "docker -v"
#builder
- docker build --build-arg BUILDKIT_INLINE_CACHE=1 --cache-from $CI_REGISTRY_IMAGE/builder:latest --target builder -t $CI_REGISTRY_IMAGE/builder:latest .
#final image
- docker build --build-arg APP_VERSION=$CI_COMMIT_SHORT_SHA --build-arg BUILDKIT_INLINE_CACHE=1 --cache-from $CI_REGISTRY_IMAGE/builder:latest --cache-from $CI_REGISTRY_IMAGE:latest -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
# push both
- docker push $CI_REGISTRY_IMAGE/builder:latest
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
container_scanning:
stage: push
needs:
- Build
Push latest:
image: docker:20
services:
- name: docker:20-dind
variables:
GIT_STRATEGY: none
stage: push
needs:
- Build
rules:
- if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
before_script:
-
script:
- docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
- docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:latest
- docker push $CI_REGISTRY_IMAGE:latest
Push tag:
image: docker:20
services:
- name: docker:20-dind
variables:
GIT_STRATEGY: none
stage: push
needs:
- Build
only:
- tags
before_script:
-
script:
- docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
- docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME