- hosts: "{{deploy_host}}" remote_user: root vars: src: "/data/src/{{ pj }}" tmp: "/data/cache/{{ pj }}/{{ env }}" url: "https://root:linyaohong@gitlab.grayvip.com" version_name: "{{ pj }}-{{ env }}-{{ version_ret }}-{{ date_str.stdout }}" dest_path: "{% if lang == 'js' %}/data/wwwroot/{{ domain }}/{{ pj }}{% else %}/data/wwwroot/{{ pj }}{% endif %}" tasks: - name: "get deploy data time" shell: date +%Y%m%d%H%M%S register: date_str run_once: true connection: local - name: "create {{ tmp }} and {{ src }} if they don't exist" file: path: "{{ path }}" state: directory mode: 0775 loop: - "{{ tmp }}" - "{{ src }}" loop_control: loop_var: path connection: local - name: "create {{ dest_path }} logs if they don't exist" file: path: "{{ path }}" state: directory owner: www group: www mode: 0775 loop: - "{{ dest_path }}" - /data/logs/web/ - /data/logs/java/ - /data/logs/app/ - /data/logs/queue/ loop_control: loop_var: path - name: "awk {{ version }}" shell: echo {{ version }}|awk -F '/' '{print $NF}' register: version_ret run_once: true connection: local - name: "pull {{ git }} {{ version_ret.stdout }}" git: repo: "{{ url }}/{{ git }}" dest: "{{ src }}" version: "{{ version_ret.stdout }}" force: yes run_once: yes connection: local - name: "check user.ini" stat: path: "{{ dest_path }}/.user.ini" register: file_name - name: "delete user.ini if it exists" shell : "chattr -i .user.ini && rm -rf .user.ini " args: chdir: "{{ dest_path }}" when: file_name.stat.exists == True # 检查文件是否存在/如果不存在则退出报错 - name: check sonar-pj.properties exist shell: ls /data/wwwroot/{{ pj }}/ ignore_errors: yes connection: local register: result run_once: true - file: msg="sonar-pj.properties in not exist" when: result.rc != 0 # - debug: var=result - name: "in {{ src }} exec npm i and npm run build" shell: "cnpm i && npm run build" register: result args: chdir: "{{ src }}" run_once: true connection: local when: lang == "js" and env in ["dev","uat"] - name: "{{ pj }} run init.sh" shell: "./init.sh" args: chdir: "{{ src }}" run_once: true ignore_errors: yes connection: local when: pj in ["lp_core","lp_work","csd_core","csd_work"] # 执行composer install - name: composer install shell: /usr/local/bin/composer install args: chdir: "{{ src }}" connection: local when: pj == "ems" # 执行pre_run.sh - name: pre_run.sh shell: ./pre_run.sh vars: testfile: "{{ src }}/pre_run.sh" args: chdir: "{{ src }}" when: testfile is exists and pj == "ems" connection: local # 执行apollo.sh - name: apollo shell: /usr/bin/php public/apollo.php {{ env }}-apollo.vipthink.cn {{ pj }} args: chdir: "{{ src }}" connection: local when: pj == "ems" - debug: var=result # 记录版本 - name: "Record {{ version_name }}" shell: "echo {{ version_name }} > .{% if lang == 'js' %}/dist{% else %}{% endif %}/version.log " args: chdir: "{{ src }}" run_once: true ignore_errors: yes connection: local # 本地压缩文件 tar.gz - name: "archive a gz from {{ src }}/dist/* to {{ tmp }}/{{ version_name }}.tar.gz " community.general.archive: path: "{% if lang == 'js' %}{{ src }}/dist/*{% else %}{{ src }}{% endif %}" dest: "{{ tmp }}/{{ version_name }}.tar.gz" exclude_path: - "{{ src }}/.git" - "/data/cache/devops/README.md" format: gz run_once: true connection: local # 删除前20个 - name: "delete last 20 rollback version" shell: "ls -t *.tar.gz|awk 'NR>20'|xargs rm -rf" args: chdir: "{{ tmp }}" run_once: true connection: local - name: "unarchive {{ tmp }}/{{ version_name }}.tar.gz to {{ dest_path }}" unarchive: src: "{{ tmp }}/{{ version_name }}.tar.gz" dest: "{{ dest_path }}/" owner: www group: www - name: "rollback project {{ rollback_version }}" unarchive: src: "{{ tmp }}/{{ rollback_version }}" dest: "{{ dest_path }}/" owner: www group: www tags: rollback,never - name: "pull .evn from apollo" shell: wget -O .env http://{{ env }}-apollo.vipthink.cn/configfiles/{{ pj }}/default/application/ && sed -i 's/\\//g' .env args: chdir: "{{ dest_path }}/" become: yes become_method: sudo become_user: www tags: always when: lang != "js" and pj != "ems"