Git Product home page Git Product logo

travis-ci's Introduction

Scripts for Travis CI

Build Status CodeFactor License: MIT

Overview

  • Code check
    • PHP
      • PHP_CodeSniffer
      • PHPMD
    • JavaScript
      • ESLint
  • Test
    • PHP
      • PHPUnit
    • JavaScript
      • Jest
  • Coverage
    • Coveralls
  • Deploy
    • GitHub releases
    • GitHub pages
    • WP Directory

Usage

0. Prepare composer.json, package.json

composer.json

  • require-dev
{
  "require-dev": {
    "squizlabs/php_codesniffer": "*",
    "wp-coding-standards/wpcs": "*",
    "phpmd/phpmd": "^2.6",
    "phpcompatibility/phpcompatibility-wp": "*",
    "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0",
    "roave/security-advisories": "dev-master",
    "php-coveralls/php-coveralls": "^2.1",
    "phake/phake": "^2.3 || ^3.1",
    "phpunit/phpunit": "^4.8 || ^5.7 || ^7.5"
  }
}
  • scripts
{
  "scripts": {
    "phpunit": [
      "phpunit"
    ],
    "phpcs": [
      "phpcs --standard=./phpcs.xml"
    ],
    "fix": [
      "phpcbf --standard=./phpcs.xml"
    ],
    "phpmd": [
      "phpmd ./src/,./configs/,./tests/ text phpmd.xml"
    ],
    "coveralls": [
      "php-coveralls -v"
    ]
  }
}

package.json

  • scripts
{
  "scripts": {
    "lint": "eslint src/**/**/*.js && eslint __tests__/**/**/*.js",
    "cover": "jest --coverage",
    "coveralls": "cat ./coverage/lcov.info | coveralls"
  }
}

1. Prepare scripts

Download and run prepare.sh to create test configs.

.travis.yml

before_script:
  - git clone --depth=1 https://github.com/wp-content-framework/travis-ci.git travis-ci
  - bash travis-ci/bin/prepare.sh

2. Use

Check coding style

.travis.yml

jobs:
  fast_finish: true
  include:
    - stage: check
      language: php
      php: '7.2'
      script: bash tests/bin/php/phpcs.sh

    - stage: check
      language: php
      php: '7.2'
      script: bash tests/bin/php/phpmd.sh

    - stage: check
      language: node_js
      node_js: '11'
      dist: trusty
      script: bash tests/bin/js/js-lint.sh

Test

Set COVERAGE_REPORT=1 to run composer coveralls

.travis.yml

    - stage: test
      language: php
      php: '7.2'
      env: WP_VERSION=latest
      script: bash tests/bin/php/wp-test.sh

    - stage: test
      language: php
      php: '7.2'
      env:
        - WP_VERSION=5.2
        - WP_MULTISITE=1
        - COVERAGE_REPORT=1
      script: bash tests/bin/php/wp-test.sh

    - stage: test
      language: node_js
      node_js: '11'
      dist: trusty
      env: COVERAGE_REPORT=1
      script: bash tests/bin/js/js-test.sh

SVN diff

.travis.yml

    - stage: prepare
      language: node_js
      node_js: '11'
      dist: trusty
      script:
        - source tests/bin/deploy/env.sh
        - bash tests/bin/deploy/wp-check-diff.sh

Deploy

  • GitHub releases
  1. Go to Personal access tokens.
  2. Generate token which has repo scope.
  3. Run travis encrypt command to encrypt the token (Details).
    like travis encrypt "<GitHub Token>" --com -r <owner>/<repo>

or use travis setup releases command.

.travis.yml

    - stage: deploy
      language: node_js
      node_js: '11'
      dist: trusty
      script: skip
      before_deploy:
        - source tests/bin/deploy/env.sh
        - bash tests/bin/deploy/create.sh
      deploy:
        provider: releases
        skip_cleanup: true
        name: ${RELEASE_TITLE}
        tag_name: ${RELEASE_TAG}
        file: ${RELEASE_FILE}
        api_key:
          secure: <encrypted token>
        draft: true
        overwrite: true
        on:
          tags: true
  • GitHub pages
  1. Go to Personal access tokens.
  2. Generate token which has repo scope and set as Environment Variables GITHUB_TOKEN in the settings page.
  3. Create script bin/gh-pages/setup.sh, bin/gh-pages/pre_install.sh or bin/gh-pages/pre_setup.sh to setup assets.

.travis.yml

    - stage: deploy
      language: node_js
      node_js: '11'
      dist: trusty
      env:
        - GH_PAGES_PLUGIN_SCRIPT="./index.min.js"
        - GH_PAGES_PLUGIN_STYLE="./index.css"
        - GH_PAGES_TITLE="Test"
        - GH_PAGES_TEMPLATE=gutenberg
        - GH_PAGES_TRACKING_ID=UA-XXXXXXXX-X
      script: skip
      before_deploy:
        - source tests/bin/deploy/env.sh
        - bash tests/bin/deploy/gh-pages.sh
      deploy:
        provider: pages
        skip_cleanup: true
        github_token: ${GITHUB_TOKEN}
        keep_history: true
        local_dir: ${GH_PAGES_DIR}
        on:
          branch: master
  • WP Directory
  1. Set Environment Variables SVN_USER and SVN_PASS in the settings page

.travis.yml

    - stage: deploy
      language: node_js
      node_js: '11'
      dist: trusty
      script: skip
      before_deploy:
        - source tests/bin/deploy/env.sh
      deploy:
        provider: script
        skip_cleanup: true
        script: bash tests/bin/deploy/wp-release.sh
        on:
          tags: true

3. Slack

  1. Install Travis CI slack app and get Token.
  2. Run travis encrypt command to encrypt the token.
    like travis encrypt "<account>:<token>" --com -r <owner>/<repo>

.travis.yml

notifications:
  email: false
  slack:
    secure: <encrypted token>

Check List

  • composer.json
    • require
    • scripts
  • package.json
    • scripts
  • .travis.yml
    • before_script
    • jobs
      • Check coding style
      • Test
      • SVN diff
      • Deploy
        • GitHub release
          • GITHUB_TOKEN
        • GitHub pages
          • GITHUB_TOKEN
          • bin/gh-pages/plugin.sh
        • WP Directory
          • SVN_USER
          • SVN_PASS
    • Slack
      • SLACK_TOKEN

Sample Plugins

Test Travis

travis-ci's People

Contributors

technote-space avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.