@allakando/allakando-web-ui
Version:
Allakando's web component library
177 lines (164 loc) • 7.78 kB
YAML
# For this pipeline to work the following parameters must be defined in the repository scope on bitbucket:
# NPM_TOKEN, Example "npm_SCuYMLXXXXXXXXXXXX" (The name that will be printed in the logs)
image: node:20
definitions:
services:
docker:
memory: 3072
type: docker
steps:
- step:
name: Linting
caches:
- node
script:
- echo "Linting Started..."
- npm install
- npm run lint:fix
- echo "Linting for all .js files in repository completed"
- step:
name: Testing
caches:
- node
script:
- echo "Testing Started..."
- apt-get update && apt-get install -y
- apt-get install -yq gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-dev libglib2.0-0 libgtk-3-0 libgtk-3-dev libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libnss3 libnss3-dev libxss-dev lsb-release xdg-utils wget
- npm install
- npm i @rollup/rollup-linux-x64-gnu
- git add .
- git commit -m "Update from CICD [skip ci]"
- git push
- git status
- npx puppeteer browsers install chrome
- npm run test
- echo "Testing completed"
- step: &build-storybook
name: Build Storybook
caches:
- node
script:
- echo "NPM build started..."
- npm install
- npm run build:bundle
- npm i @storybook/react react react-dom
- npm run build:storybook
- ls -lR dist # identify all files inside dist directory
- echo "NPM package building completed"
artifacts:
- .storybook/**
- dist/**
- src/**
- package.json
- package-lock.json
- step: &build-package
name: Build NPM Package
caches:
- node
script:
- echo "NPM build started..."
- npm install
- git status
- npm version patch -m "Upgrade package version to %s [skip ci]"
- git push
- npm run build:bundle
- npm run build:types
- npm run build:documentation
- npm i @storybook/react react react-dom
- npm run build:storybook
- ls -lR dist # identify all files inside dist directory
- echo "NPM package building completed"
artifacts:
- .storybook/**
- dist/**
- src/**
- package.json
- package-lock.json
- step: &build-test
name: Build bundle & Test
caches:
- node
script:
- echo "NPM build and test step started..."
- npm install
- npm run build:bundle
- apt-get update && apt-get install -y
- apt-get install -yq gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-dev libglib2.0-0 libgtk-3-0 libgtk-3-dev libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libnss3 libnss3-dev libxss-dev lsb-release xdg-utils wget
- npx puppeteer browsers install chrome
- npm run test
- echo "Building and testing completed"
- step: &build-image
name: Build Docker Image
script:
- docker build -t dockerimage -f Dockerfile .
- docker save --output tmp-image.docker dockerimage
services:
- docker
artifacts:
- tmp-image.docker
- step: &push-gcp
name: Push to GCP artifact registry
image: google/cloud-sdk:alpine
script:
- source build.env
- echo ${TAG}
- docker load --input ./tmp-image.docker
# Authentication using key file
- echo $GCLOUD_API_KEYFILE | base64 -d > ./gcloud-api-key.json
- gcloud auth activate-service-account --key-file gcloud-api-key.json
- gcloud config set project $GCLOUD_PROJECT_ID
- export IMAGE_NAME=${GCP_REGISTRY_HOSTNAME}/${GCP_PROJECT_NAME}/${GCP_REPOSITORY_NAME}/${GCP_IMAGE_NAME}:${TAG}
- docker tag dockerimage ${IMAGE_NAME}
# Login and push the image
- cat ./gcloud-api-key.json | docker login -u _json_key --password-stdin https://${GCP_REGISTRY_HOSTNAME}
- docker push ${IMAGE_NAME}
services:
- docker
- step: &deploy-gcp
name: Deploy to GCP Cloud Run
image: google/cloud-sdk:alpine
script:
- source build.env
- echo ${TAG}
# Authentication using key file
- echo $GCLOUD_API_KEYFILE | base64 -d > ./gcloud-api-key.json
- gcloud auth activate-service-account --key-file gcloud-api-key.json
- gcloud config set project $GCLOUD_PROJECT_ID
- export IMAGE_NAME=${GCP_REGISTRY_HOSTNAME}/${GCP_PROJECT_NAME}/${GCP_REPOSITORY_NAME}/${GCP_IMAGE_NAME}:${TAG}
# Deploy instance. TAG should only be "staging" or "production" at this point.
# We have to set the project flag to the project ID rather than the project number.
- export INSTANCE_NAME=cloudrun-${TAG}-${GCP_IMAGE_NAME}
- gcloud run deploy $INSTANCE_NAME --project $GCP_PROJECT_NAME --region $GCP_REGION --image $IMAGE_NAME
- step: &publish-package
name: Publish npm package
caches:
- node
deployment: production
script:
- pipe: atlassian/npm-publish:0.3.2
variables:
NPM_TOKEN: ${NPM_TOKEN}
pipelines:
pull-requests:
"**":
# - step: *lint
- step: *build-test
branches:
master:
# - step: *lint
- step: *build-package
- step: *build-test
- step: *publish-package
custom:
deploy-to-staging:
- step:
name: "Configure Build Variables"
script:
#- echo "export TAG=\"$(npm run version --silent)\"" >> build.env
- echo "export TAG=\"staging\"" >> build.env
artifacts:
- build.env
# - step: *lint
- step: *build-image
- step: *push-gcp
- step: *deploy-gcp