185 lines
4.3 KiB
YAML
185 lines
4.3 KiB
YAML
version: 2.1
|
|
orbs:
|
|
php: circleci/php@1.0.2
|
|
node: circleci/node@1.1.6
|
|
aws-cli: circleci/aws-cli@1.0.0
|
|
jobs:
|
|
install_composer_packages:
|
|
executor: php/default
|
|
steps:
|
|
- checkout
|
|
- php/install-composer
|
|
|
|
- run:
|
|
name: Install php extensions
|
|
command: |
|
|
sudo add-apt-repository ppa:ondrej/php
|
|
sudo apt install php7.4-imap
|
|
|
|
- php/install-packages:
|
|
app-dir: server/
|
|
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths:
|
|
- .
|
|
|
|
install_node_packages:
|
|
docker:
|
|
- image: circleci/node:11.15.0-stretch
|
|
|
|
steps:
|
|
- attach_workspace:
|
|
at: .
|
|
|
|
- restore_cache:
|
|
keys:
|
|
- node-cache-{{ checksum "client/package.json" }}
|
|
|
|
- run:
|
|
name: Install dependencies
|
|
command: |
|
|
sudo npm install -g npm@6.7.0
|
|
sudo npm install -g mocha@6.2.0
|
|
cd client && npm install
|
|
|
|
- save_cache:
|
|
paths:
|
|
- client/node_modules
|
|
key: node-cache-{{ checksum "client/package.json" }}
|
|
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths:
|
|
- .
|
|
|
|
deploy_staging_files:
|
|
docker:
|
|
- image: circleci/node:11.15.0-stretch
|
|
|
|
environment:
|
|
- GIT_COMMIT_DESC: git log --format=oneline -n 1 $CIRCLE_SHA1
|
|
|
|
steps:
|
|
- attach_workspace:
|
|
at: .
|
|
|
|
- deploy:
|
|
name: Deploy staging files
|
|
command: |
|
|
if [ ! "$CIRCLE_BRANCH" = "master" ]; then exit 0; fi
|
|
if [[ "$GIT_COMMIT_DESC" = Release* ]]; then exit 0; fi
|
|
sudo apt update
|
|
sudo apt install -y lftp
|
|
make deploy-staging-files
|
|
make deploy-staging-population
|
|
|
|
add_release_commit:
|
|
docker:
|
|
- image: circleci/node:11.15.0-stretch
|
|
|
|
parameters:
|
|
version:
|
|
type: string
|
|
default: ""
|
|
|
|
steps:
|
|
- attach_workspace:
|
|
at: .
|
|
|
|
- add_ssh_keys:
|
|
fingerprints:
|
|
- "45:1e:cf:38:3f:9f:97:87:5b:b8:fd:e1:6c:71:11:41"
|
|
|
|
- run:
|
|
name: Commit new version
|
|
command: |
|
|
export VERSION=<< parameters.version >>
|
|
cd version_upgrades/release_script
|
|
npm i
|
|
npm run modify-files
|
|
cd ../..
|
|
ssh-keyscan -H github.com >> ~/.ssh/known_hosts
|
|
git config --global user.email "ivan@opensupports.com"
|
|
git config --global user.name "CircleCI-BOT"
|
|
git add .
|
|
git commit -m "Release $VERSION"
|
|
git checkout -b release-${VERSION}
|
|
git push origin release-${VERSION}
|
|
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths:
|
|
- .
|
|
|
|
add_release_tag:
|
|
docker:
|
|
- image: circleci/node:11.15.0-stretch
|
|
|
|
parameters:
|
|
version:
|
|
type: string
|
|
default: ""
|
|
|
|
steps:
|
|
- attach_workspace:
|
|
at: .
|
|
|
|
- add_ssh_keys:
|
|
fingerprints:
|
|
- "45:1e:cf:38:3f:9f:97:87:5b:b8:fd:e1:6c:71:11:41"
|
|
|
|
- run:
|
|
name: Add Release tag
|
|
command: |
|
|
export VERSION=<< parameters.version >>
|
|
sudo apt-get update
|
|
sudo apt-get install lftp
|
|
make build-release-bundles
|
|
make upload-bundles
|
|
# make push-prerelease-tag
|
|
make populate-staging-release
|
|
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths:
|
|
- .
|
|
|
|
parameters:
|
|
version:
|
|
type: string
|
|
default: ""
|
|
run_build:
|
|
type: boolean
|
|
default: true
|
|
|
|
workflows:
|
|
build:
|
|
when:
|
|
and:
|
|
- equal: [ master, << pipeline.git.branch >> ]
|
|
- << pipeline.parameters.run_build >>
|
|
jobs:
|
|
- install_composer_packages
|
|
- install_node_packages:
|
|
requires:
|
|
- install_composer_packages
|
|
- deploy_staging_files:
|
|
requires:
|
|
- install_node_packages
|
|
release:
|
|
when: << pipeline.parameters.version >>
|
|
jobs:
|
|
- install_composer_packages
|
|
- install_node_packages:
|
|
requires:
|
|
- install_composer_packages
|
|
- add_release_commit:
|
|
version: << pipeline.parameters.version >>
|
|
requires:
|
|
- install_node_packages
|
|
- add_release_tag:
|
|
version: << pipeline.parameters.version >>
|
|
requires:
|
|
- add_release_commit
|