kind: pipeline type: kubernetes name: default concurrency: limit: 1 trigger: event: - push steps: - name: replace hosts and user variables image: ubuntu:impish environment: SPT_ITEMS_HOSTNAME: from_secret: spt_items_hostname DEPLOY_HOSTNAME: from_secret: deploy_hostname DEPLOY_USER: from_secret: deploy_username DEPLOY_PRIVATE_KEY: from_secret: deploy_ssh_key DEPLOY_SSH_KEY_PASSPHRASE: from_secret: deploy_ssh_key_passphrase commands: - sed -i 's/{{ SPT_ITEMS_HOSTNAME }}/'"$SPT_ITEMS_HOSTNAME"'/g' ./items/frontend/.env.example - mv ./items/frontend/.env.example ./items/frontend/.env - echo "$DEPLOY_PRIVATE_KEY" > private.key && chmod 600 private.key - sed -i 's/{{ DEPLOY_HOSTNAME }}/'"$DEPLOY_HOSTNAME"'/g' ./.ansible-items/inventory - sed -i 's/{{ DEPLOY_SSH_KEY_PASSPHRASE }}/'"$DEPLOY_SSH_KEY_PASSPHRASE"'/g' ./.ansible-items/inventory - sed -i 's/{{ DEPLOY_USER }}/'"$DEPLOY_USER"'/g' ./.ansible-items/inventory - name: install dependencies and build frontend image: node:lts-alpine3.14 commands: - node -v - npm -v - yarn --version - yarn --cwd ./items/frontend install - yarn --cwd ./items/frontend build --pure-lockfile - rm -rf ./items/api/public/static/* - cp ./items/frontend/build/* ./items/api/public - rm ./items/api/public/index.html depends_on: - replace hosts and user variables - name: frontend image: nginx:1.21.4-alpine commands: - cp ./items/frontend/build/* /usr/share/nginx/html detach: true depends_on: - install dependencies and build frontend - name: test frontend image: cypress/browsers:node16.5.0-chrome94-ff93 commands: - node -v - npm -v - yarn --version - yarn --cwd ./items/frontend cy:run depends_on: - install dependencies and build frontend - name: check ansible syntax image: plugins/ansible:3 settings: playbook: ./.ansible-items/playbook.yml inventory: ./.ansible-items/inventory galaxy: ./.ansible-items/requirements.yml syntax_check: true when: branch: - development - name: apply ansible playbook image: plugins/ansible:3 settings: playbook: ./.ansible-items/playbook.yml inventory: ./.ansible-items/inventory galaxy: ./.ansible-items/requirements.yml timeout: 60 verbose: 2 environment: SPT_ITEMS_HOSTNAME: from_secret: spt_items_hostname DEPLOY_HOSTNAME: from_secret: deploy_hostname DEPLOY_USER: from_secret: deploy_username DEPLOY_USER_GROUP: from_secret: deploy_user_group SPT_ITEMS_PATH: from_secret: deploy_path depends_on: - test frontend when: branch: - master - main