diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000000..ccfd8320716 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,10 @@ +.dockerignore +.env +.env.* +.git +.gitignore +.travis.yml +Dockerfile +spec +#IDEs folders +.idea \ No newline at end of file diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml new file mode 100644 index 00000000000..093a9544b63 --- /dev/null +++ b/.github/workflows/node.js.yml @@ -0,0 +1,31 @@ +# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs + +name: Node.js CI + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +jobs: + build: + + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [18.x, 20.x, 22.x] + # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + + steps: + - uses: actions/checkout@v4 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + - run: npm ci + - run: npm run build --if-present + - run: npm test diff --git a/.github/workflows/npm-publish-github-packages.yml b/.github/workflows/npm-publish-github-packages.yml new file mode 100644 index 00000000000..0f838d5bce4 --- /dev/null +++ b/.github/workflows/npm-publish-github-packages.yml @@ -0,0 +1,36 @@ +# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created +# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages + +name: Node.js Package + +on: + release: + types: [created] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v3 + with: + node-version: 16 + - run: npm ci + - run: npm test + + publish-gpr: + needs: build + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v3 + with: + node-version: 16 + registry-url: https://npm.pkg.github.com/ + - run: npm ci + - run: npm publish + env: + NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/.gitignore b/.gitignore index 988a3f55b40..96ddb289a57 100644 --- a/.gitignore +++ b/.gitignore @@ -1,15 +1,19 @@ .DS_Store .bundle +.history .jekyll-metadata .rvmrc .sass-cache -# These files in _data are generated +*.sw[op] +# These files in _data are generated _data/*ip_range.yml _data/trusty*language*mapping* _data/node_js_versions.yml +_data/language-details/*-versions.yml +assets/javascripts/tablefilter _site -bin node_modules source/tmp/* tmp/ api/ +user/notifications.md diff --git a/.ruby-version b/.ruby-version index 35cee72dcbf..4560fb912c0 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.4.3 +ruby-2.6.3 diff --git a/.travis.yml b/.travis.yml index 9b5f71c3c0a..3c196e11bf7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,33 +1,61 @@ #language: ruby -sudo: false -dist: trusty -language: python -python: - - "3.5.2" +dist: bionic + branches: only: - master -env: - global: - - PATH=$HOME/.local/user/bin:$PATH -cache: - pip: true - directories: - - vendor/bundle - - node_modules -addons: - apt: - packages: - - libxml2-utils -deploy: - provider: heroku - api_key: - secure: "hylw2GIHMvZKOKX3uPSaLEzVrUGEA9mzGEA0s4zK37W9HJCTnvAcmgRCwOkRuC4L7R4Zshdh/CGORNnBBgh1xx5JGYwkdnqtjHuUQmWEXCusrIURu/iEBNSsZZEPK7zBuwqMHj2yRm64JfbTDJsku3xdoA5Z8XJG5AMJGKLFgUQ=" - app: docs-travis-ci-com - skip_cleanup: true - on: - branch: - - master + +jobs: + include: + - name: build site + language: python + python: + - "3.8.3" + env: + global: + - PATH=$HOME/.local/user/bin:$PATH + - NOKOGIRI_USE_SYSTEM_LIBRARIES=true # speeds up installation of html-proofer + cache: + pip: true + directories: + - vendor/bundle + - node_modules + - $TRAVIS_BUILD_DIR/tmp/.htmlproofer #https://github.com/gjtorikian/html-proofer/issues/381 + addons: + apt: + packages: + - libxml2-utils + install: + - rvm use 2.6.3 --install + - bundle install --deployment + - sudo apt-get install libcurl4-openssl-dev # required to avoid SSL errors + script: + - bundle exec rake test + - xmllint --noout _site/feed.build-env-updates.xml + + - name: update dpl v2 docs + if: type = cron || commit_message =~ /ci:dpl/ + language: shell + cache: false + install: + - rvm use 3.3.1 --install + script: + - git clone https://github.com/travis-ci/dpl.git + - cd dpl + - gem build dpl.gemspec + - gem install dpl-*.gem + - cd .. + - rm -rf dpl + - bin/dpl + deploy: + - provider: git_push + token: + secure: "YHuTjIGKpG0A8QJ4kmdLfOW1n+62uLakXv0KjCzWExl22qLSn2frip3j8JsaeMfndsmNZBUfGoONVHvDS+PHnkbRMYf21SjgctpVfHRYZQ3pulexOViEQ6azRgCBWuPO8A+vAyxvjlV4e3UDGnt2x/0X/Tdg9iVf/zzBGjM0YX0=" + branch: auto-dpl-v2-update-docs + pull_request: true + edge: + branch: master + notifications: slack: rooms: @@ -35,9 +63,3 @@ notifications: on_success: never webhooks: https://docs.travis-ci.com/update_webhook_payload_doc -install: - - rvm use 2.4.3 --install - - bundle install --deployment -script: - - bundle exec rake test - - xmllint --noout _site/feed.build-env-updates.xml diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000000..c12d20e8744 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,56 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "C#: Debug", + "type": "dotnet", + "request": "launch", + "projectPath": "${workspaceFolder}/.csproj" + }, + { + "name": "Launch Chrome", + "request": "launch", + "type": "chrome", + "url": "http://localhost:8080", + "webRoot": "${workspaceFolder}" + }, + { + "name": ".NET Core Launch (console)", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "build", + "program": "${workspaceFolder}/bin/Debug//", + "args": [], + "cwd": "${workspaceFolder}", + "stopAtEntry": false, + "console": "internalConsole", + "pipeTransport": { + "pipeCwd": "${workspaceFolder}", + "pipeProgram": "enter the fully qualified path for the pipe program name, for example '/usr/bin/ssh'", + "pipeArgs": [], + "debuggerPath": "enter the path for the debugger on the target machine, for example ~/vsdbg/vsdbg" + } + }, + { + "name": ".NET Core Attach", + "type": "coreclr", + "request": "attach", + "pipeTransport": { + "pipeCwd": "${workspaceFolder}", + "pipeProgram": "enter the fully qualified path for the pipe program name, for example '/usr/bin/ssh'", + "pipeArgs": [], + "debuggerPath": "enter the path for the debugger on the target machine, for example ~/vsdbg/vsdbg" + } + }, + { + "type": "chrome", + "request": "launch", + "name": "Launch Chrome against localhost", + "url": "http://localhost:8080", + "webRoot": "${workspaceFolder}" + } + ] +} \ No newline at end of file diff --git a/404.html b/404.html index 85687433eee..bd8e63f644e 100644 --- a/404.html +++ b/404.html @@ -3,6 +3,14 @@ + + + + Travis CI Documentation - 404 Page not found @@ -216,6 +224,11 @@ + + + +
@@ -224,8 +237,8 @@

diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000000..586b12e858c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,35 @@ +FROM ruby:2.6.3-slim +LABEL maintainer Travis CI GmbH + +# packages required for bundle install +RUN ( \ + apt-get update ; \ + apt-get install -y --no-install-recommends git make gcc g++ libpq-dev libcurl4-openssl-dev curl \ + && rm -rf /var/lib/apt/lists/* \ +) + +# ------ +# Set the encoding to UTF-8 +ENV LC_ALL C.UTF-8 +ENV LANG en_US.UTF-8 +ENV LANGUAGE en_US.UTF-8 +# ----- +ENV WEBHOOK_PAYLOAD_GIST_ID 4e317d6e71be6d0278be46bb751b2f78 + +# throw errors if Gemfile has been modified since Gemfile.lock +RUN bundle config --global frozen 1 +RUN mkdir -p /app + +WORKDIR /app +COPY Gemfile /app +COPY Gemfile.lock /app + +RUN gem install bundler:2.4.22 +RUN bundler install --verbose --retry=3 +RUN gem install --user-install executable-hooks + +COPY . /app +RUN bundle exec rake build +COPY . /app + +CMD bundle exec puma -p 4000 diff --git a/Gemfile b/Gemfile index 4260ed81228..78a22e4e954 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,6 @@ source 'https://rubygems.org' -ruby '2.4.3' +ruby '2.6.3' gem 'faraday' gem 'html-proofer', '~> 3.0' @@ -9,6 +9,7 @@ gem 'jekyll-paginate' gem 'jekyll-redirect-from' gem 'puma' gem 'pry', group: :test +gem 'rack', '~> 1.0' gem 'rack-jekyll' gem 'rack-ssl-enforcer' gem 'rake' @@ -18,7 +19,7 @@ gem 'rubocop', group: :test # All of this is for Slate / middleman -gem "middleman" +gem "middleman", '~> 3.0' # For syntax highlighting gem "middleman-syntax" @@ -27,8 +28,9 @@ gem "middleman-syntax" gem 'middleman-gh-pages' # Live-reloading plugin -gem "middleman-livereload", "~> 3.3.0" +gem "middleman-livereload" +# Needed for Slate / middleman gem 'redcarpet' # Cross-templating language block fix for Ruby 1.8 @@ -42,3 +44,10 @@ gem 'therubyracer', :platforms => :ruby git 'https://github.com/ably-forks/compass', branch: 'sass-deprecation-warning-fix', ref: '3861c9d' do gem 'compass-core' end + +group :dpl do + gem 'dpl', git: 'https://github.com/travis-ci/dpl' + gem 'cl' +end + +gem 'netrc' diff --git a/Gemfile.lock b/Gemfile.lock index 6c7e3d4c4b5..f5da74bd826 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -17,62 +17,68 @@ GIT compass-import-once (1.0.5) sass (>= 3.2, < 3.5) +GIT + remote: https://github.com/travis-ci/dpl + revision: 598b6f50e68eb0c7dd828e9424a8fd0198049b67 + specs: + dpl (2.0.0.beta.3) + cl (~> 1.0) + GEM remote: https://rubygems.org/ specs: - activesupport (4.2.10) + activesupport (4.2.11.3) i18n (~> 0.7) minitest (~> 5.1) thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) - addressable (2.5.2) - public_suffix (>= 2.0.2, < 4.0) - ast (2.4.0) + addressable (2.8.0) + public_suffix (>= 2.0.2, < 5.0) + ast (2.4.1) capybara (2.4.4) mime-types (>= 1.16) nokogiri (>= 1.3.3) rack (>= 1.0.0) rack-test (>= 0.5.4) xpath (~> 2.0) - chunky_png (1.3.10) - coderay (1.1.2) + chunky_png (1.3.11) + cl (1.2.4) + regstry (~> 1.0.3) + coderay (1.1.3) coffee-script (2.4.1) coffee-script-source execjs coffee-script-source (1.12.2) colorator (1.1.0) - colorize (0.8.1) em-websocket (0.5.1) eventmachine (>= 0.12.9) http_parser.rb (~> 0.6.0) erubis (2.7.0) - ethon (0.11.0) + ethon (0.12.0) ffi (>= 1.3.0) eventmachine (1.2.7) execjs (2.7.0) - faraday (0.15.2) + faraday (1.0.1) multipart-post (>= 1.2, < 3) - ffi (1.9.25) + ffi (1.13.1) forwardable-extended (2.6.0) - haml (5.0.4) + haml (5.1.2) temple (>= 0.8.0) tilt hike (1.2.3) hooks (0.4.1) uber (~> 0.0.14) - html-proofer (3.9.1) - activesupport (>= 4.2, < 6.0) + html-proofer (3.15.3) addressable (~> 2.3) - colorize (~> 0.8) - mercenary (~> 0.3.2) - nokogiri (~> 1.8.1) + mercenary (~> 0.3) + nokogumbo (~> 2.0) parallel (~> 1.3) + rainbow (~> 3.0) typhoeus (~> 1.3) yell (~> 2.0) http_parser.rb (0.6.0) i18n (0.7.0) - jaro_winkler (1.5.1) - jekyll (3.8.3) + jekyll (3.8.7) addressable (~> 2.4) colorator (~> 1.0) em-websocket (~> 0.5) @@ -86,21 +92,21 @@ GEM rouge (>= 1.7, < 4) safe_yaml (~> 1.0) jekyll-paginate (1.1.0) - jekyll-redirect-from (0.14.0) - jekyll (~> 3.3) + jekyll-redirect-from (0.16.0) + jekyll (>= 3.3, < 5.0) jekyll-sass-converter (1.5.2) sass (~> 3.4) - jekyll-watch (2.0.0) + jekyll-watch (2.2.1) listen (~> 3.0) - json (2.1.0) + json (2.3.1) kramdown (1.17.0) - libv8 (3.16.14.19) - liquid (4.0.0) + libv8 (3.16.14.19.1) + liquid (4.0.3) listen (3.0.8) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) mercenary (0.3.6) - method_source (0.9.0) + method_source (1.0.0) middleman (3.4.1) coffee-script (~> 2.2) compass (>= 1.0.0, < 2.0.0) @@ -124,47 +130,53 @@ GEM rack (>= 1.4.5, < 2.0) thor (>= 0.15.2, < 2.0) tilt (~> 1.4.1, < 2.0) - middleman-gh-pages (0.3.1) + middleman-gh-pages (0.4.1) rake (> 0.9.3) - middleman-livereload (3.3.4) + middleman-livereload (3.4.6) em-websocket (~> 0.5.1) - middleman-core (~> 3.2) + middleman-core (>= 3.3) rack-livereload (~> 0.3.15) middleman-sprockets (3.5.0) middleman-core (>= 3.3) sprockets (~> 2.12.1) sprockets-helpers (~> 1.1.0) sprockets-sass (~> 1.3.0) - middleman-syntax (3.0.0) + middleman-syntax (3.2.0) middleman-core (>= 3.2) - rouge (~> 2.0) - mime-types (3.1) + rouge (~> 3.2) + mime-types (3.3.1) mime-types-data (~> 3.2015) - mime-types-data (3.2016.0521) - mini_portile2 (2.3.0) - minitest (5.11.3) - multi_json (1.13.1) - multipart-post (2.0.0) - nokogiri (1.8.3) - mini_portile2 (~> 2.3.0) + mime-types-data (3.2020.0512) + mini_portile2 (2.6.1) + minitest (5.14.1) + multi_json (1.14.1) + multipart-post (2.1.1) + netrc (0.11.0) + nio4r (2.5.2) + nokogiri (1.12.5) + mini_portile2 (~> 2.6.1) + racc (~> 1.4) + nokogumbo (2.0.2) + nokogiri (~> 1.8, >= 1.8.4) padrino-helpers (0.12.9) i18n (~> 0.6, >= 0.6.7) padrino-support (= 0.12.9) tilt (>= 1.4.1, < 3) padrino-support (0.12.9) activesupport (>= 3.1) - parallel (1.12.1) - parser (2.5.1.0) - ast (~> 2.4.0) - pathutil (0.16.1) + parallel (1.19.2) + parser (2.7.1.4) + ast (~> 2.4.1) + pathutil (0.16.2) forwardable-extended (~> 2.6) - powerpack (0.1.2) - pry (0.11.3) - coderay (~> 1.1.0) - method_source (~> 0.9.0) - public_suffix (3.0.2) - puma (3.11.4) - rack (1.6.10) + pry (0.13.1) + coderay (~> 1.1) + method_source (~> 1.0) + public_suffix (4.0.6) + puma (4.3.5) + nio4r (~> 2.0) + racc (1.5.2) + rack (1.6.13) rack-jekyll (0.5.0) jekyll (>= 1.3) listen (>= 1.3) @@ -172,28 +184,34 @@ GEM rack-livereload (0.3.17) rack rack-ssl-enforcer (0.2.9) - rack-test (1.0.0) + rack-test (1.1.0) rack (>= 1.0, < 3) rainbow (3.0.0) - rake (12.3.1) - rb-fsevent (0.10.3) - rb-inotify (0.9.10) - ffi (>= 0.5.0, < 2) + rake (13.0.1) + rb-fsevent (0.10.4) + rb-inotify (0.10.1) + ffi (~> 1.0) rdiscount (2.2.0.1) - redcarpet (3.4.0) + redcarpet (3.5.1) ref (2.0.0) - rouge (2.2.1) - rubocop (0.57.2) - jaro_winkler (~> 1.5.1) + regexp_parser (1.7.1) + regstry (1.0.15) + rexml (3.2.5) + rouge (3.20.0) + rubocop (0.86.0) parallel (~> 1.10) - parser (>= 2.5) - powerpack (~> 0.1) + parser (>= 2.7.0.1) rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.7) + rexml + rubocop-ast (>= 0.0.3, < 1.0) ruby-progressbar (~> 1.7) - unicode-display_width (~> 1.0, >= 1.0.1) - ruby-progressbar (1.9.0) + unicode-display_width (>= 1.4.0, < 2.0) + rubocop-ast (0.1.0) + parser (>= 2.7.0.1) + ruby-progressbar (1.10.1) ruby18_source_location (0.2) - safe_yaml (1.0.4) + safe_yaml (1.0.5) sass (3.4.25) sprockets (2.12.5) hike (~> 1.2) @@ -205,42 +223,46 @@ GEM sprockets-sass (1.3.1) sprockets (~> 2.0) tilt (~> 1.1) - temple (0.8.0) + temple (0.8.2) therubyracer (0.12.3) libv8 (~> 3.16.14.15) ref - thor (0.20.0) + thor (1.0.1) thread_safe (0.3.6) tilt (1.4.1) - typhoeus (1.3.0) + typhoeus (1.4.0) ethon (>= 0.9.0) - tzinfo (1.2.5) + tzinfo (1.2.7) thread_safe (~> 0.1) uber (0.0.15) uglifier (2.7.2) execjs (>= 0.3.0) json (>= 1.8.0) - unicode-display_width (1.4.0) + unicode-display_width (1.7.0) xpath (2.1.0) nokogiri (~> 1.3) - yell (2.0.7) + yell (2.2.2) PLATFORMS ruby DEPENDENCIES + cl compass-core! + dpl! faraday html-proofer (~> 3.0) jekyll (>= 3.1.6) jekyll-paginate jekyll-redirect-from - middleman + middleman (~> 3.0) middleman-gh-pages - middleman-livereload (~> 3.3.0) + middleman-livereload middleman-syntax + netrc pry puma + rack (~> 1.0) rack-jekyll rack-ssl-enforcer rake @@ -251,7 +273,7 @@ DEPENDENCIES therubyracer RUBY VERSION - ruby 2.4.3p205 + ruby 2.6.3p62 BUNDLED WITH - 1.16.2 + 1.17.3 diff --git a/README.md b/README.md index 7c7c63dc699..36b86db9f3b 100644 --- a/README.md +++ b/README.md @@ -1,49 +1,80 @@ -# About this repository [![Build Status](https://travis-ci.org/travis-ci/docs-travis-ci-com.svg?branch=master)](https://travis-ci.org/travis-ci/docs-travis-ci-com) +# About Travis CI Repository [![Build Status](https://travis-ci.com/travis-ci/docs-travis-ci-com.svg?branch=master)](https://travis-ci.com/travis-ci/docs-travis-ci-com) -This is the documentation site for Travis CI! () +This is the documentation site for [Travis CI!](https://docs.travis-ci.com/). +Follow this guide to learn how to add new documentation and how to update existing documentation. -## How to contribute +## Add Documentation -Fork the repository, read the rest of this README file and make some changes. -Once you're done with your changes send a pull request. Thanks! +The following are the steps to add documentation. -## How to check your edit before sending PR +1. Review the [Travis CI documentation guidelines](/STYLE.md). +1. Check existing documentation. Verify that the documentation does not already exist or look for related documentation that can be enhanced. +1. Determine proper placement. In the [Travis CI repository](https://github.com/travis-ci/docs-travis-ci-com/tree/master), browse to the *user* folder (or any other specific folder) and create a new branch. +1. Create a new file and add the new documentation files. +1. Ensure to insert the name and extension for the file. +1. Commit your changes and add a short message to describe your changes. +1. Test the changes locally to verify your edits. +1. Submit a pull request. Include a clear title and description of the proposed changes, and click “**Create pull request**.” -You can inspect how your edits will be reflected by the documentation site. +Thank you for your contribution! The Travis CI team will review the pull request and approve any necessary changes. -### Install dependencies +## Update Existing Documentation -1. Make sure you have Ruby and RubyGems installed. +If you see a page that needs to be updated or that can be improved, follow these steps to update Travis CI's existing documentation. -1. Install [bundler](http://bundler.io/): +1. Review the [Travis CI documentation guidelines](/STYLE.md). +1. Identify the Travis CI docs page that needs to be updated. +1. Click the “**Improve this page on GitHub**” button in the top right corner. +1. Once on GitHub, edit the relevant file. +1. Commit your changes. Name your branch, and click the “**Propose changes**” button. +1. Build the docs in a local environment to verify your edits. +1. Submit a pull request. Ensure a clear title and description of the proposed changes are added, and click “**Create pull request**.” + +Thank you for your contribution. The Travis CI team will review the pull request and approve any necessary changes. + + +## Build Local Environment + +You can inspect how the documentation site will reflect your edits. Follow the steps below to learn how to build your local environment and check all your edits before sending the pull request for approval. + +### Install Dependencies + +Follow the steps below to install dependencies. + +1. Ensure you have *Ruby* and *RubyGems* installed. + +1. Clone the [Travis CI docs](https://github.com/travis-ci/docs-travis-ci-com/tree/master) repository. + +1. Install [bundler](http://bundler.io/) as follows: ```sh-session $ gem install bundler ``` -1. Install application dependencies: +1. Next, install application dependencies: ```sh-session $ bundle install --binstubs ``` -### Generate documentation +### Generate Documentation -Run +To generate the documentation, run the following command: ```sh-session $ ./bin/jekyll build ``` +### Run the Application Server -### Run application server - -You are now ready to start your documentation site, using Jekyll or Puma. +You are ready to start your local documentation site using Jekyll or Puma. For documentation edits, Jekyll is sufficient. -#### Starting and inspecting edits with Jekyll +#### Edit with Jekyll + +To start and inspect your edits using Jekyll, follow the steps below: -1. Run Jekyll server: +1. Run the *Jekyll* server: ```sh-session $ ./bin/jekyll serve @@ -51,12 +82,12 @@ For documentation edits, Jekyll is sufficient. 1. Open [localhost:4000](http://localhost:4000/) in your browser. -#### Starting and inspecting edits with Puma +#### Edit with Puma -For more programmatical PRs (such as handling webhooks notification -via POST), Puma is necessary. +For more programmatical pull requests (such as handling webhooks notifications +via POST), Puma is necessary. To start and inspect your edits using Puma, follow the steps below: -1. Run Puma server: +1. Run the *Puma* server: ```sh-session $ ./bin/puma @@ -64,10 +95,10 @@ via POST), Puma is necessary. 1. Open [localhost:9292](http://localhost:9292/) in your browser. -### API V2 documentation +### API Documentation -API V2 (and 2.1) documentation is maintained in `slate/source` and updated is now generated at build time from source. +All Travis CI API V2 (and 2.1) documentation is maintained in `slate/source` and generated from the source at build time. ## License -Distributed under the [MIT license](https://opensource.org/licenses/MIT); the same as other Travis CI projects. +Distributed under the [MIT license](https://opensource.org/licenses/MIT), like other Travis CI projects. diff --git a/Rakefile b/Rakefile index 1fedaa32035..3b525dbed38 100755 --- a/Rakefile +++ b/Rakefile @@ -1,9 +1,14 @@ #!/usr/bin/env rake # frozen_string_literal: true +abort('Please run this using `bundle exec rake`') unless ENV["BUNDLE_BIN_PATH"] + require 'ipaddr' require 'json' require 'yaml' +require 'netrc' +require 'erb' +require 'openssl' require 'faraday' require 'html-proofer' @@ -38,17 +43,11 @@ desc 'Runs the tests!' task test: %i[build run_html_proofer] desc 'Builds the site (Jekyll and Slate)' -task build: %i[remove_output_dir regen make_api] do +task build: %i[regen make_api update_lang_vers] do rm_f '.jekyll-metadata' sh 'bundle exec jekyll build --config=_config.yml' end -desc 'Remove the output dirs' -task :remove_output_dir do - rm_rf('_site') - rm_rf('api/*') -end - desc 'Lists files containing beta features' task :list_beta_files do files = FileList.new('**/*.md') @@ -58,66 +57,33 @@ task :list_beta_files do end end -desc 'Runs the html-proofer test' +desc 'Check links and validate some html' task :run_html_proofer => [:build] do - HTMLProofer.check_directory( - './_site', - internal_domains: ['docs.travis-ci.com'], - check_external_hash: true, - check_html: true, - connecttimeout: 600, - allow_hash_ref: true, - only_4xx: true, - typhoeus: { - ssl_verifypeer: false, ssl_verifyhost: 0, followlocation: true - }, - url_ignore: [ - /itunes\.apple\.com/, - ], - file_ignore: %w[ - ./_site/api/index.html - ] - ).run -end - -desc 'Runs the html-proofer test for internal links only' -task :run_html_proofer_internal => [:build] do - HTMLProofer.check_directory( - './_site', - disable_external: true, - internal_domains: ['docs.travis-ci.com'], - connecttimeout: 600, - only_4xx: true, - typhoeus: { - ssl_verifypeer: false, ssl_verifyhost: 0, followlocation: true - }, - file_ignore: %w[ - ./_site/api/index.html - ] - ).run -end - -file '_data/trusty-language-mapping.json' do |t| - source = File.join( - 'https://raw.githubusercontent.com', - 'travis-infrastructure/terraform-config/master/aws-production-2', - 'generated-language-mapping.json' - ) - - bytes = File.write(t.name, Faraday.get(source).body) - - puts "Updated #{t.name} (#{bytes} bytes)" -end - -file '_data/trusty_language_mapping.yml' => [ - '_data/trusty-language-mapping.json' -] do |t| - bytes = File.write( - t.name, - YAML.dump(JSON.parse(File.read('_data/trusty-language-mapping.json'))) - ) - - puts "Updated #{t.name} (#{bytes} bytes)" + options = { + internal_domains: ['docs.travis-ci.com'], + check_external_hash: true, + check_html: true, + connecttimeout: 600, + allow_hash_ref: true, + #only_4xx: true, + typhoeus: { + ssl_verifypeer: false, ssl_verifyhost: 0, followlocation: true + }, + url_ignore: [ + /itunes\.apple\.com/, + ], + file_ignore: %w[ + ./_site/api/index.html + ], + :cache => { + :timeframe => '3w' + } + } + begin + HTMLProofer.check_directory( './_site', options).run + rescue => msg + puts "#{msg}" + end end file '_data/ip_range.yml' do |t| @@ -132,6 +98,10 @@ file '_data/gce_ip_range.yml' do |t| define_ip_range('nat.gce-us-central1.travisci.net', t.name) end +file '_data/gce_ip_ue1_range.yml' do |t| + define_ip_range('nat.gce-us-east1.travisci.net', t.name) +end + file '_data/linux_containers_ip_range.yml' do |t| define_ip_range('nat.linux-containers.travisci.net', t.name) end @@ -140,11 +110,8 @@ file '_data/macstadium_ip_range.yml' do |t| define_ip_range('nat.macstadium-us-se-1.travisci.net', t.name) end -file '_data/packet_ip_range.yml' do |t| - define_ip_range('nat.packet-ewr1.travisci.net', t.name) -end - file '_data/node_js_versions.yml' do |t| + sh 'test -f $HOME/.nvm/nvm.sh || (curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash)' remote_node_versions = `bash -l -c "source $HOME/.nvm/nvm.sh; nvm ls-remote"`.split("\n"). map {|l| l.gsub(/.*v(0\.[0-9]*|[0-9]*)\..*$/, '\1')}.uniq. sort {|a,b| Gem::Version.new(b) <=> Gem::Version.new(a) } @@ -162,25 +129,30 @@ desc 'Refresh generated files' task regen: (%i[clean] + %w[ _data/ec2_ip_range.yml _data/gce_ip_range.yml + _data/gce_ip_ue1_range.yml _data/ip_range.yml _data/linux_containers_ip_range.yml _data/macstadium_ip_range.yml - _data/trusty_language_mapping.yml _data/node_js_versions.yml -]) + user/notifications.md +] + %i[update_lang_vers]) desc 'Remove generated files' task :clean do rm_f(%w[ _data/ec2_ip_range.yml _data/gce_ip_range.yml + _data/gce_ip_ue1_range.yml _data/ip_range.yml _data/linux_containers_ip_range.yml _data/macstadium_ip_range.yml - _data/trusty-language-mapping.json - _data/trusty_language_mapping.yml _data/node_js_versions.yml + _data/language-details/*-versions.yml ]) + rm_rf('assets/javascripts/tablefilter') + rm_rf('_site') + rm_rf('api/*') + rm_rf('user/notifications.md') end desc 'Start Jekyll server' @@ -196,3 +168,41 @@ desc 'make API docs' task :make_api do sh 'bundle exec middleman build --clean' end + +LANG_ARCHIVE_HOST='language-archives.travis-ci.com' +TABLEFILTER_SOURCE_PATH='assets/javascripts/tablefilter/dist/tablefilter/tablefilter.js' + +desc 'update language archive versions' +task :update_lang_vers => [TABLEFILTER_SOURCE_PATH] do + definitions = YAML.load_file('_data/language-details/archive_definitions.yml') + definitions.each do |lang, defs| + sh "curl" \ + " -H \"Accept: application/x-yaml\"" \ + " https://#{LANG_ARCHIVE_HOST}/builds/#{lang}/#{defs.fetch("prefix","ubuntu")}", + :out => "_data/language-details/#{lang}-versions.yml" + end +end + +desc "Add TableFilter" +file TABLEFILTER_SOURCE_PATH do + sh "git", "clone", "--depth=1", "https://github.com/koalyptus/TableFilter.git", "assets/javascripts/tablefilter" +end + +desc 'Update notifications ciphers' +file 'user/notifications.md' do + line_length = 80 + ciphers = OpenSSL::Cipher.ciphers.sort.map(&:upcase) + x = [] + while !ciphers.empty? do + row = [] + while row.join(" ").length < line_length do + row << ciphers.shift + end + ciphers.unshift row.pop unless ciphers.empty? + x << row.compact.join(" ") + end + @ciphers_list = x.join("\n") + renderer = ERB.new(File.read('user/notifications.md.erb')) + f = File.new('user/notifications.md', 'w') + f.write renderer.result(binding) +end diff --git a/STYLE.md b/STYLE.md index cc891eddf91..e972d86259c 100644 --- a/STYLE.md +++ b/STYLE.md @@ -1,6 +1,6 @@ -# Travis CI documentation style guide +# Travis CI Documentation Style Guide -## Markdown and structure +## Markdown and Structure We're planning to lint the Markdown with [Coala.io][coala] and the [MarkdownBear][bear]. @@ -12,11 +12,13 @@ We'll be using a subset (TBD) of the full [list of checks][checks]. [checks]: https://github.com/coala/bear-docs/blob/master/docs/MarkdownBear.rst#settings "MarkdownBear checks" -### Headings +We use Kramdown, with [GFM](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown) code blocks, and a few Kramdown-related exceptions introduced with `{: }` such as class names for specific formatting of columns and notes. -For historical reasons, the top level heading in Jekyll markdown files is level 2 (##) not level 1 (#). +## Headings -We use ATX style headings, and do not use the optional closing hashes: +For historical reasons, the top-level heading in Jekyll's markdown files is level 2 (##), not level 1 (#). Only the page’s title is a level 1 heading. + +We use ATX-style headings and do not use the optional closing hashes: ```markdown ## This is an H2 @@ -26,16 +28,16 @@ We use ATX style headings, and do not use the optional closing hashes: #### This is an H4 ``` -We do not use underline style headings: +We do not use underlined style headings: ```markdown Do not use this style heading ============================= ``` -### Lists +## Lists -If you have long lists you can wrap them into 2 (`.column-2`) or 3 (`.column-3`) columns using one of the follow CSS classes after your list item: +If you have long lists, you can wrap them into 2 (`.column-2`) or 3 (`.column-3`) columns using one of the following CSS classes after your list item: ```css * long list item 1 @@ -43,57 +45,64 @@ If you have long lists you can wrap them into 2 (`.column-2`) or 3 (`.column-3`) {: .column-2 } ``` -#### In-page table of contents +## Links + +Make sure all links have titles: + +```markdown +The [link][example1] in the text + +[example1]: http://www.example.com "Example URL" +``` + +or + +```markdown +The [link](http://www.example.com "Example URL") in the text +``` + +When linking internal pages, use absolute paths and trailing slashes: `/user/languages/c/`. +You can link to headings and remember to remove special characters, for example: + +To link to "##Node.js Page," use `#nodejs-page`. + -All pages have tables of contents generated automatically from H2 and H3 +## In-page Options -To remove the TOC from a page add `no_toc: true` to the frontmatter. +### Notes, warnings, and blocks + +Travis CI uses the blockquote symbol `>` for general-purpose notes and warnings. + +See an example below: + +> Note: This feature is only available in Version 2.0. ### Beta features Mark all beta features with a specially formatted note. Both the `> BETA` and the `{: .beta}` are required. +See an example below: + > BETA Awesome new feature that might not be enabled and is subject to change. {: .beta} -### Alpha features +#### Alpha features Mark all alpha features with a specially formatted note. Both the `> ALPHA` and the `{: alpha}` are required. -> ALPHA Awesome new feature that might explode for extra fun. +> ALPHA: Awesome new feature that might explode for extra fun. {: .alpha} ### GUI -Make sure all references to items in a GUI match the case of the UI, and are marked with *asterisks*. - -### Links - -Make sure all links have titles: - -```markdown -The [link][example1] in the text - -[example1]: http://www.example.com "Example URL" -``` - -or - -```markdown -The [link](http://www.example.com "Example URL") in the text -``` - -When linking internal pages, use absolute paths and trailing slashes: `/user/languages/c/`. -You can link to headings, remember to remove special characters, for example: - -To link to "##Node.js Page" use `#nodejs-page`. +Ensure all references to items in a GUI match the case of the UI and are marked with *asterisks*. ### Code Inline -All function names, filenames, etc should be marked with `back-ticks`. +All function names, filenames, etc., should be marked with `back-ticks`. If you're talking about applications or services, only the actual command should be marked as code, not the name of the service: @@ -101,7 +110,7 @@ If you're talking about applications or services, only the actual command should ### Blockquotes / Notes / Warnings -As we have no use for blockquotes we use `>` to indicate notes and warnings: +As we have no use for blockquotes, we use `>` to indicate notes and warnings: ```markdown > Note this important info! @@ -125,16 +134,62 @@ This code is in .travis.yml ``` {: data-file=".travis.yml"} +### In-page table of contents + +All Travis CI pages have tables of contents generated automatically from H2 and H3 +Add `no_toc: true` to the frontmatter to remove the TOC from a page. -### Common misspellings and words to avoid +### Terminology +The following are some common misspellings and words to avoid - Always refer to *Travis CI* and never to Travis. ## Images +Add images inline-style with a brief description. + +To add an image, follow these steps: +1 Capture the image. +2 Save the image in the `images/` path. +3 Add the image to the documentation as follows: +![description text](image path or URL) + ### Screencapture gifs 1. Run a build (or whatever you are trying to capture), 2. Capture it with [licecap](https://www.cockos.com/licecap/). -3. Save the gif in `images/` +3. Save the gif in the following path: `images/` + + +## Documentation Template + +A basic template for contributing to new documentation pages or sections is as follows: + +```markdown +--- +title: “Insert Page Title” +layout: en + +--- + +Start your introduction here. Usually, an introduction is between one and three sentences. + +## Section Heading + +Section introduction sentence. + +* **Item1** - a group of *jobs* that run in sequence. +* **Item2** - a group of *jobs* that run in parallel as part of a sequential *build* process composed of multiple [stages](/user/build-stages/). +* **Item3** - an automated process that clones your repository into a virtual + environment and then carries out a series of *phases* such as compiling your + code, running tests, etc. +* **Item4** - the [sequential steps](/user/job-lifecycle/) + of a *job*. + +``` +{: data-file=".travis.yml"} + +The example above shows a paragraph with different formatting options. + +Check out the [Travis CI documentation](https://docs.travis-ci.com/) for more examples. diff --git a/_config.yml b/_config.yml index 5f4923afebc..64078cb280f 100644 --- a/_config.yml +++ b/_config.yml @@ -13,7 +13,5 @@ kramdown: smart_quotes: lsquo,rsquo,ldquo,rdquo plugins: - jekyll-redirect-from -whitelist: - - jekyll-redirect-from sass: sass_dir: assets/stylesheets diff --git a/_data/databases.yml b/_data/databases.yml deleted file mode 100644 index ec915471d9a..00000000000 --- a/_data/databases.yml +++ /dev/null @@ -1,14 +0,0 @@ -MySQL: "#MySQL" -SQLite3: "#SQLite3" -PostgreSQL: "#PostgreSQL" -MariaDB: "#MariaDB" -SQLite3: "#SQLite3" -MongoDB: "#MongoDB" -CouchDB: "#CouchDB" -Redis: "#Redis" -Riak: "#Riak" -RabbitMQ: "#RabbitMQ" -Memcached: "#Memcached" -Cassandra: "#Cassandra" -Neo4j: "#Neo4j" -ElasticSearch: "#ElasticSearch" diff --git a/_data/deployments.yml b/_data/deployments.yml index ae3af64442d..339e90983bc 100644 --- a/_data/deployments.yml +++ b/_data/deployments.yml @@ -1,5 +1,4 @@ anynines: "/user/deployment/anynines/" -Appfog: "/user/deployment/appfog/" Atlas: "/user/deployment/atlas/" AWS CodeDeploy: "/user/deployment/codedeploy/" AWS Elastic Beanstalk: "/user/deployment/elasticbeanstalk/" @@ -15,7 +14,7 @@ Catalyze: "/user/deployment/catalyze/" Chef Supermarket: "/user/deployment/chefsupermarket/" Cloud 66: "/user/deployment/cloud66/" CloudFoundry: "/user/deployment/cloudfoundry/" -Deis: "/user/deployment/deis/" +Cargo: "/user/deployment/cargo/" Engine Yard: "/user/deployment/engineyard/" GitHub Pages: "/user/deployment/pages/" GitHub Releases: "/user/deployment/releases/" @@ -23,6 +22,7 @@ Google App Engine: "/user/deployment/google-app-engine/" Google Cloud Storage: "/user/deployment/gcs/" Google Firebase: "/user/deployment/firebase/" Hackage: "/user/deployment/hackage/" +Hephy: "/user/deployment/hephy/" Heroku: "/user/deployment/heroku/" Launchpad: "/user/deployment/launchpad/" npm: "/user/deployment/npm/" @@ -37,3 +37,4 @@ Script: "/user/deployment/script/" Snap Store: "/user/deployment/snaps/" Surge.sh: "/user/deployment/surge/" TestFairy: "/user/deployment/testfairy/" +Transifex: "/user/deployment/transifex/" diff --git a/_data/deployments_v2.yml b/_data/deployments_v2.yml new file mode 100644 index 00000000000..1b7c4017bfb --- /dev/null +++ b/_data/deployments_v2.yml @@ -0,0 +1,42 @@ +anynines: "/user/deployment-v2/providers/anynines/" +AWS CloudFormation: "/user/deployment-v2/providers/cloudformation/" +AWS CodeDeploy: "/user/deployment-v2/providers/codedeploy/" +AWS Elastic Beanstalk: "/user/deployment-v2/providers/elasticbeanstalk/" +AWS Lambda: "/user/deployment-v2/providers/lambda/" +AWS OpsWorks: "/user/deployment-v2/providers/opsworks/" +AWS S3: "/user/deployment-v2/providers/s3/" +Azure Web Apps: "/user/deployment-v2/providers/azure-web-apps/" +Bintray: "/user/deployment-v2/providers/bintray/" +Bluemix CloudFoundry: "/user/deployment-v2/providers/bluemixcloudfoundry/" +Boxfuse: "/user/deployment-v2/providers/boxfuse/" +Cargo: "/user/deployment-v2/providers/cargo/" +Chef Supermarket: "/user/deployment-v2/providers/chefsupermarket/" +Cloud 66: "/user/deployment-v2/providers/cloud66/" +Cloud Foundry: "/user/deployment-v2/providers/cloudfoundry/" +Convox: "/user/deployment-v2/providers/convox/" +Datica: "/user/deployment-v2/providers/datica/" +Engine Yard: "/user/deployment-v2/providers/engineyard/" +GitHub Pages: "/user/deployment-v2/providers/pages/" +GitHub Releases: "/user/deployment-v2/providers/releases/" +Gleis: "/user/deployment-v2/providers/gleis/" +Google App Engine: "/user/deployment-v2/providers/google-app-engine/" +Google Cloud Storage: "/user/deployment-v2/providers/gcs/" +Google Firebase: "/user/deployment-v2/providers/firebase/" +Hackage: "/user/deployment-v2/providers/hackage/" +Hephy: "/user/deployment-v2/providers/hephy/" +Heroku: "/user/deployment-v2/providers/heroku/" +Launchpad: "/user/deployment-v2/providers/launchpad/" +NPM: "/user/deployment-v2/providers/npm/" +Netlify Drop: "/user/deployment-v2/providers/netlify/" +OpenShift: "/user/deployment-v2/providers/openshift/" +packagecloud: "/user/deployment-v2/providers/packagecloud/" +Puppet Forge: "/user/deployment-v2/providers/puppetforge/" +PyPI: "/user/deployment-v2/providers/pypi/" +Rackspace Cloud Files: "/user/deployment-v2/providers/cloudfiles/" +RubyGems: "/user/deployment-v2/providers/rubygems/" +Scalingo: "/user/deployment-v2/providers/scalingo/" +Script: "/user/deployment-v2/providers/script/" +Snap Store: "/user/deployment-v2/providers/snap/" +Surge.sh: "/user/deployment-v2/providers/surge/" +TestFairy: "/user/deployment-v2/providers/testfairy/" +Transifex: "/user/deployment-v2/providers/transifex/" diff --git a/_data/enterprise.yml b/_data/enterprise.yml deleted file mode 100644 index 7bb48ef1e78..00000000000 --- a/_data/enterprise.yml +++ /dev/null @@ -1,13 +0,0 @@ -System Prerequisites: "/user/enterprise/prerequisites/" -Installation: "/user/enterprise/installation/" -Trusty Build Environment: "/user/enterprise/trusty/" -Precise (Legacy) Build Environment: "/user/enterprise/precise/" -Install onto Ubuntu 16.04 (Beta): "/user/enterprise/install-on-xenial" -Upgrading: "/user/enterprise/upgrading/" -Customizing Build Images: "/user/enterprise/build-images/" -Custom Queues: "/user/enterprise/custom-queues/" -Worker Configuration: "/user/enterprise/worker-configuration/" -Worker Start & Debug Containers: "/user/enterprise/worker-cli-commands/" -Platform Administration Tips: "/user/enterprise/platform-tips/" -Operations Manual: "/user/enterprise/operations-manual/" -High Availability: "/user/enterprise/high-availability/" diff --git a/_data/language-details/archive_definitions.yml b/_data/language-details/archive_definitions.yml new file mode 100644 index 00000000000..d282958269c --- /dev/null +++ b/_data/language-details/archive_definitions.yml @@ -0,0 +1,3 @@ +python: {} +erlang: {} +php: {} diff --git a/_data/language-details/perl.yml b/_data/language-details/perl.yml new file mode 100644 index 00000000000..f5e41c5e250 --- /dev/null +++ b/_data/language-details/perl.yml @@ -0,0 +1,26 @@ +threading: | + Some Perls have been compiled with threading support. They have been compiled + with the additional compile flags `-Duseshrplib` and `-Duseithreads`: + + ``` + 5.26-shrplib + 5.24-shrplib + 5.22-shrplib + 5.20-shrplib + 5.18-shrplib + ``` +modules: | + ``` + cpanm (App::cpanminus) + Dist::Zilla + Dist::Zilla::Plugin::Bootstrap::lib + ExtUtils::MakeMaker + LWP + Module::Install + Moose + Test::Exception + Test::Kwalitee + Test::Most + Test::Pod + Test::Pod::Coverage + ``` diff --git a/_data/languages.yml b/_data/languages.yml index ba60f751e23..b63e791c214 100644 --- a/_data/languages.yml +++ b/_data/languages.yml @@ -6,9 +6,11 @@ Clojure: "/user/languages/clojure/" Crystal: "/user/languages/crystal/" D: "/user/languages/d/" Dart: "/user/languages/dart/" -Erlang: "/user/languages/erlang/" Elixir: "/user/languages/elixir/" +Elm: "/user/languages/elm/" +Erlang: "/user/languages/erlang/" F#: "/user/languages/csharp/" +Generic: "/user/languages/minimal-and-generic/" Go: "/user/languages/go/" Groovy: "/user/languages/groovy/" Haskell: "/user/languages/haskell/" @@ -16,6 +18,8 @@ Haxe: "/user/languages/haxe/" Java: "/user/languages/java/" JavaScript (with Node.js): "/user/languages/javascript-with-nodejs/" Julia: "/user/languages/julia/" +MATLAB: "/user/languages/matlab/" +Minimal: "/user/languages/minimal-and-generic/" Nix: "/user/languages/nix/" Objective-C: "/user/languages/objective-c/" Perl: "/user/languages/perl/" diff --git a/_data/snippets.yml b/_data/snippets.yml index b35d87535c8..0f09b0606f2 100644 --- a/_data/snippets.yml +++ b/_data/snippets.yml @@ -18,32 +18,78 @@ before_and_after: | ``` ghlimit: | > If your API or cron triggered builds run on the *same commit - > or branch* over and over again, you will notice GitHub have a limit of + > or branch* over and over again, you will notice GitHub has a limit of > [1000 status updates](https://developer.github.com/v3/repos/statuses/#create-a-status) - > *per commit*, which causes the Travis CI build status displayed on GitHub - > to be incorrect. + > *per commit*, which causes the Travis CI build status to display incorrectly + > on GitHub. > Avoid this problem by specifying a regularly updated branch for your automated builds. -trusty_note: | - > Language versions and other build-environment specific - > information are in our reference pages: +all_note: | + > For Language versions and other build-environment specific + > information visit our reference pages: > * [Precise](/user/reference/precise/) > * [Trusty](/user/reference/trusty/) - > * [OS X](/user/reference/osx/) -trusty_note_no_osx: | - > Language versions and other build-environment specific - > information are in our reference pages: + > * [Xenial](/user/reference/xenial/) + > * [Bionic](/user/reference/bionic/) + > * [Focal](/user/reference/focal/) + > * [Jammy](/user/reference/jammy/) + > * [macOS](/user/reference/osx/) + > * [Windows](/user/reference/windows/) + > * [FreeBSD](/user/reference/freebsd/) +unix_note: | + > For Language versions and other build-environment specific + > information visit our reference pages: > * [Precise](/user/reference/precise/) > * [Trusty](/user/reference/trusty/) + > * [Xenial](/user/reference/xenial/) + > * [Bionic](/user/reference/bionic/) + > * [Focal](/user/reference/focal/) + > * [Jammy](/user/reference/jammy/) + > * [macOS](/user/reference/osx/) + > * [FreeBSD](/user/reference/freebsd/) +linux_note: | + > For Language versions and other build-environment specific + > information visit our reference pages: + > * [Precise](/user/reference/precise/) + > * [Trusty](/user/reference/trusty/) + > * [Xenial](/user/reference/xenial/) + > * [Bionic](/user/reference/bionic/) + > * [Focal](/user/reference/focal/) + > * [Jammy](/user/reference/jammy/) +linux_windows_note: | + > For Language versions and other build-environment specific + > information visit our reference pages: + > * [Precise](/user/reference/precise/) + > * [Trusty](/user/reference/trusty/) + > * [Xenial](/user/reference/xenial/) + > * [Bionic](/user/reference/bionic/) + > * [Focal](/user/reference/focal/) + > * [Jammy](/user/reference/jammy/) + > * [Windows](/user/reference/windows/) + > * [FreeBSD](/user/reference/freebsd/) concurrent_jobs: | The maximum number of concurrent jobs depends on the total system load, but one situation in which you might want to set a particular limit is: - if your build depends on an external resource and might run into a race condition with concurrent jobs. +enabling_access_jobs_logs: | + This setting allows you to increase security by preventing access to old job logs older than 360 days. Or, in the case of a necessity, users can explicitly enable access to public and private old job log repositories. + + The following are the available configurations: + * If this setting is ON, it enables access to build job logs older than 365 days. + * If this setting is OFF, access to build job logs older than 365 days is unavailable via UI or API calls. +limiting_access_jobs_logs: | + Similarly, this setting allows you to restrict access to build job logs for any user without write/push access rights to the repository. Limit job log visibility to only those that needed it. Enable this setting and ensure job logs are only available to users with respective read or write access to the individual repository. + + The following are the available configurations: + * If this setting is ON, it allows access to build job logs only for users with write/push permissions to this repository. Limits access to build job logs via UI and API. + * If this setting is OFF, users with read access to the repository can access the build job logs. + + Please note that the '*Limiting access to build job logs*' repository setting applies only to users with ‘write/push’ permissions. auto_cancellation: | - If you are only interested in building the most recent commit on each branch you can use this new feature to automatically cancel older builds in the queue that are not yet running. + If you are only interested in building the most recent commit on each branch you can use this new feature to automatically cancel older builds that are in the **queued** state and are not yet running. cron_jobs: | - Travis CI cron jobs work similarly to the cron utilty, they run builds at regular scheduled intervals independently of whether any commits were pushed to the repository. Cron jobs always fetch the most recent commit on a particular branch and build the project at that state. Cron jobs can run `daily`, `weekly` or `monthly`, which in practice means up to an hour after the selected time span, and you cannot set them to run at a specific time. + Travis CI cron jobs work similarly to the cron utility; they run builds at regular scheduled intervals independently of whether any commits were pushed to the repository. Cron jobs always fetch the most recent commit on a particular branch and build the project at that state. Cron jobs can run `daily`, `weekly` or `monthly`, which in practice means up to an hour after the selected time span, and you cannot set them to run at a specific time. environment_variables: | Variables defined in repository settings are the same for all builds, and when you restart an old build, it uses the latest values. These variables are not automatically available to forks. @@ -52,26 +98,111 @@ environment_variables: | - differ per repository. - contain sensitive data, such as third-party credentials. contact_enterprise_support: | - To get in touch with us, please write a message to - [enterprise@travis-ci.com](mailto:enterprise@travis-ci.com). If possible, + To get in touch with us, please write a message to + [enterprise@travis-ci.com](mailto:enterprise@travis-ci.com). If possible, please include as much of the following as you can: - + - Description of the problem - what are you observing? - Which steps did you try already? - - A support bundle (You can get it from `https://yourdomain:8800/support`) + - A support bundle (see table below on how to obtain it) - Log files from all workers (They can be found at `/var/log/upstart/travis-worker.log` - please include as many as you can retrieve). - If a build failed or errored, a text file of the build log - - Have you made any customizations to your setup? While we may be able to see some - information (such as hostname, IaaS provider, and license expiration), there - are many other things we can't see which could lead to something not working. - Therefore , we'd like to ask you to also answer the questions below in your + + | TCI Enterprise version | Support bundle | + | :--- | :--- | + | **3.x** | Run `kubectl kots admin-console -n [namespace]` to access admin console on `http://localhost:8800`
Support bundle generation instruction is available in ‘troubleshoot’ menu or directly at: `http://localhost:8800/app/tci-enterprise-kots/troubleshoot`

A command for generating support bundle will appear after selecting:
`If you'd prefer, [click here]() to get a command to manually generate a support bundle.` | + | **2.x+** | You can get it from `https://:8800/support` | + + Since the announcement in Q3 2020, the most up to date version of Travis CI Enterprise is 3.x line. + There are not any new releases for version 2.2 and the support patches has been limited since March 2021 as well. + For existing users of Travis CI 2.x we strongly recommend upgrading to the latest Travis CI Enterprise 3.x. + + Have you made any customizations to your setup? While we may be able to see some + information (such as hostname, IaaS provider, and license expiration), there + are many other things we cannot see which could lead to something not working. + Therefore, we would like to ask you to also answer the questions below in your support request (if applicable): - - - How many machines are you using? + + - How many machines are you using / what is your Kubernetes cluster setup? - Do you use configuration management tools (Chef, Puppet)? - Which other services do interface with Travis CI Enterprise? - - Do you use Travis CI Enterprise together with github.com or GitHub Enterprise? - - If you're using GitHub Enterprise, which version of it? + - Which Version Control system (VCS) do you use together with Travis CI Enterprise (e.g. github.com, GitHub Enterprise, or BitBucket Cloud)? + - If you are using GitHub Enterprise, which version of it? + + We are looking forward to helping! +enterprise_2_encryption_key_backup: | + To make a backup of encryption keys in TCIE 2.x, please follow these steps: + + 1. Open an SSH connection to the platform machine. + 2. Open a bash session with `root` privileges on the Travis CI container by running `travis bash`. + 3. Run the following command to obtain the key: `grep -A1 encryption: /usr/local/travis/etc/travis/config/travis.yml`. + 4. Create a backup of the value returned by the previous command by either writing it down on a piece of paper or storing it on a different computer. +enterprise_3_encryption_key_backup: | + To make a backup of encryption keys in TCIE 3.x, please follow these steps: + + 1. Make sure you have appropriate access to the kubernetes cluster: you need credentials for `kubectl` and connection to [travis-api-pod] + 2. Run `kubectl exec -it [travis-api-pod] cat /app/config/travis.yml |grep -A 2 encryption` (using Travis API pod is recommended). + 3. Create a backup of the value returned by that command by either writing it down on a piece of paper or storing it on a different computer. +github_oauth_access_rights: | + When you sign in to [travis-ci.com](https://travis-ci.com) using GitHub for the first time, you will receive a message from GitHub saying: + + > Travis CI by travis-pro wants to access your [account name] account. + + and in the repositories section it will state: + + > This application will be able to read and write all public and private repository data. + + This is not how Travis CI accesses your data, however we can explain it later in the process. + + The warning is triggered due to GitHub OAuth App permissions which Travis CI uses, and due to the available granularity of permission scopes (see GitHub [Scopes for OAuth Apps documentation](https://docs.github.com/en/developers/apps/scopes-for-oauth-apps) ). + + **Travis CI does not access all your repositories by default**. + + Once you acknowledge the access rights, you will see Travis CI OAuth application present in your GitHub [Authorized OAuth Apps list](https://github.com/settings/applications), however **you need to explicitly configure which repositories Travis CI has access to** within your [travis-ci.com](https://travis-ci.com) account. The configuration is done during the activation of Travis CI for your repositories. You can use either the 'All repositories' option or the 'Only select repositories' option during the activation process. + + When the Travis CI activation has completed, you will see the actual Travis CI GitHub Application installed in [Installed GitHub Apps](https://github.com/settings/installations) section. + + Travis CI uses OAuth permissions in the following way: + + 1) Travis CI's system synchronizes certain metadata with GitHub. This metadata is required for proper service functioning. In particular, we sync users, orgs, memberships, repos, permissions and, (optionally) branches. This type of sync happens either once a day by schedule or per the user's request. You can find more information and source code [in this repository](https://github.com/travis-ci/travis-github-sync#syncs) + + 2) In order to run builds, Travis CI's system clones a repository, from which the build is triggered, to the build environment. The build environment is an isolated virtual machine or an LXD container, which gets terminated as soon as the build finishes. Cloning happens only after a build request, and therefore only for the repositories explicitly enabled at GitHub settings. + + 3) To set up a build environment and prepare the build, Travis CI's system fetches and processes the `.travis.yml` config file from the repository and the branch explicitly specified in the build request, triggered by GitHub. + + 4) Travis CI's system reports build results back to GitHub via its [Checks API](https://developer.github.com/v3/checks/). +git_repository_settings_forks_general: | + > Repository security settings for forked repositories on Git are available starting March 1st, 2022. + + For Git repositories, you may manage per repository how the [environment variables](/user/environment-variables/) and the [custom SSH keys](/user/private-dependencies/#user-key) will be handled in Travis CI when a build triggered as an effect of filing a Pull Request from a forked repository. Two settings are available specifically for this purpose, allowing you to customize your security vs. collaboration setup. + + * **base repository** - a Git repository, which is forked by someone else + * **fork** or **forked repository** - any Git repository forked from the **base repository** + * **PR** - Pull Request (e.g. in GitHub, BitBucket, GitLab) or Merge Request (in Assembla) + + > Please note: Repositories activated in [Travis CI](https://app.travis-ci.com ) before **March 1st, 2022** will have the `Share encrypted environment variables with forks (PRs) ` setting set to OFF. Please verify your collaboration model if necessary (especially for public repositories). The `Share SSH keys with forks (PRs)` will be set to ON for private repositories not to break too many collaboration setups. + Repository settings will be set by default to OFF for any repository activated in [Travis CI](https://app.travis-ci.com) after **March 1st, 2022**. For repositories activated in Travis CI after **March 1st, 2022**, you may want to consider changing the default settings depending on your collaboration model. +git_repository_settings_forks_encrypted_env_variables: | + ### Share encrypted environment variables with forks (PRs) + + This setting determines if the base repository´s encrypted environment variables will be shared with the forked repository in a fork-to-base pull request (the fork repository merges changes into the base repository). + + In the case of a base-to-base pull request (changes are merged from the **base repository** into itself), the encrypted environment variables will always be available. This allows collaborators to file Pull Requests using the repository encrypted environment variables and preserve existing checks configured, e.g. in GitHub. + + In the case of a fork-to-fork pull request (changes are merged from the **forked repository** into itself), the encrypted environment variables from the **base repository** will never be available. Therefore, one needs to replace or bypass them directly in **forked repository**. + + In the case of a fork-to-base pull request: + * If this setting is ON, the encrypted environment variables will be available to the forked repository, which means that builds in the **forked repository** will have access to the encrypted environment variables from the **base repository**. This may be a less secure approach yet allows for a collaboration using forks and Pull Requests (PRs). + * If this setting is OFF and the build relies on any encrypted environment variable, the PR from **fork** to **base repository** will fail. This secures your **base repository** encrypted environmental variables by putting a constraint on accessing them from **forks**. +git_repository_settings_forks_ssh_keys: | + ### Share SSH keys with forks (PRs) + + > Please Note: The ‘Share SSH keys with forks (PRs)’ repository setting is applicable only for private repositories in the [travis-ci.com](https://app.travis-ci.com) environment. + + This setting determines if the custom SSH keys from the **base repository** will be shared with the **forked repository** in a fork-to-base pull request (changes are merged from the fork repository into the base repository). In the case of a base-to-base pull request (changes are merged from the base repository into itself), the custom SSH keys will always be available. - We're looking forward to helping! + In the case of a fork-to-fork pull request (changes are merged from the forked repository into itself), the custom SSH keys from the base repository will never be available. + + In the case of a fork-to-base pull request: + * if this setting is ON, the custom SSH keys from the base repository will be available to the **forked repository**, which means that the build in the forked repository will be able to use the custom SSH keys from the base repository. Consider setting to ON if your collaboration model requires working with Pull Requests (PRs) from forked repositories or there are dependencies defined, which rely on SSH key from **base repository**. + * If this setting is OFF and the build is relying on custom SSH keys i.e. for fetching some additional dependencies, it will fail with a no access error. diff --git a/_data/xcodes.yml b/_data/xcodes.yml index 4de89cf2ca4..137a86ab198 100644 --- a/_data/xcodes.yml +++ b/_data/xcodes.yml @@ -1,4 +1,1043 @@ osx_images: + - image: xcode14.2 + xcode: "14.2" + osx_version: "12.6" + xcode_full_version: "14.2" + xcode_build_version: "14C18" + image_publish_date: 2023-01-06 + sdks: + - iphoneos16.2 + - iphonesimulator16.2 + - macosx13.1 + - appletvos16.1 + - appletvsimulator16.1 + - watchos9.1 + - watchsimulator9.1 + simulators: + - iOS 15.0 + - iOS 15.2 + - iOS 15.4 + - iOS 15.5 + - iOS 16.0 + - iOS 16.2 + - tvOS 14.5 + - tvOS 15.0 + - tvOS 15.2 + - tvOS 15.4 + - tvOS 16.0 + - tvOS 16.1 + - watchOS 7.4 + - watchOS 8.0 + - watchOS 8.3 + - watchOS 8.5 + - watchOS 9.0 + - watchOS 9.1 + jdk: "19.0.1" + - image: xcode14.1 + xcode: "14.1" + osx_version: "12.6" + xcode_full_version: "14.1" + xcode_build_version: "14B47b" + image_publish_date: 2022-11-11 + sdks: + - iphoneos16.0 + - iphonesimulator16.0 + - macosx12.3 + - appletvos16.0 + - appletvsimulator16.0 + - watchos9.0 + - watchsimulator9.0 + simulators: + - iOS 15.0 + - iOS 15.2 + - iOS 15.4 + - iOS 15.5 + - iOS 16.0 + - iOS 16.1 + - tvOS 14.5 + - tvOS 15.0 + - tvOS 15.2 + - tvOS 15.4 + - tvOS 16.0 + - tvOS 16.1 + - watchOS 7.4 + - watchOS 8.0 + - watchOS 8.3 + - watchOS 8.5 + - watchOS 9.0 + - watchOS 9.1 + jdk: "19.0.1" + - image: xcode14 + xcode: "14" + osx_version: "12.6" + xcode_full_version: "14.0.1" + xcode_build_version: "14A400" + image_publish_date: 2022-10-27 + sdks: + - iphoneos16.0 + - iphonesimulator16.0 + - macosx12.3 + - appletvos16.0 + - appletvsimulator16.0 + - watchos9.0 + - watchsimulator9.0 + simulators: + - iOS 14.5 + - iOS 15.0 + - iOS 15.2 + - iOS 15.4 + - iOS 15.5 + - iOS 16.0 + - tvOS 14.4 + - tvOS 14.5 + - tvOS 15.0 + - tvOS 15.2 + - tvOS 15.4 + - tvOS 16.0 + - watchOS 7.2 + - watchOS 7.4 + - watchOS 8.0 + - watchOS 8.3 + - watchOS 8.5 + - watchOS 9.0 + jdk: "19" + - image: xcode13.4 + xcode: "13.4" + osx_version: "12.4" + xcode_full_version: "13.4.1" + xcode_build_version: "13F100" + image_publish_date: 2022-06-08 + sdks: + - iphoneos15.5 + - iphonesimulator15.5 + - macosx12.3 + - appletvos15.4 + - appletvsimulator15.4 + - watchos8.5 + - watchsimulator8.5 + simulators: + - iOS 14.4 + - iOS 14.5 + - iOS 15.0 + - iOS 15.2 + - iOS 15.4 + - iOS 15.5 + - tvOS 14.3 + - tvOS 14.4 + - tvOS 14.5 + - tvOS 15.0 + - tvOS 15.2 + - tvOS 15.4 + - watchOS 7.2 + - watchOS 7.4 + - watchOS 8.0 + - watchOS 8.3 + - watchOS 8.5 + jdk: "18.0.1.1+0" + - image: xcode13.3 + xcode: "13.3" + osx_version: "12.3" + xcode_full_version: "13.2.1" + xcode_build_version: "13E113" + image_publish_date: 2022-03-23 + sdks: + - iphoneos15.4 + - iphonesimulator15.4 + - macosx12.3 + - appletvos15.4 + - appletvsimulator15.4 + - watchos8.5 + - watchsimulator8.5 + simulators: + - iOS 14.3 + - iOS 14.4 + - iOS 14.5 + - iOS 15.0 + - iOS 15.2 + - iOS 15.4 + - tvOS 14.3 + - tvOS 14.4 + - tvOS 14.5 + - tvOS 15.0 + - tvOS 15.2 + - tvOS 15.4 + - watchOS 7.2 + - watchOS 7.4 + - watchOS 8.0 + - watchOS 8.3 + - watchOS 8.5 + jdk: "17+35-2724" + - image: xcode13.2 + xcode: "13.2" + osx_version: "12.1" + xcode_full_version: "13.2.1" + xcode_build_version: "13C100" + image_publish_date: 2021-12-21 + sdks: + - iphoneos15.2 + - iphonesimulator15.2 + - macosx12.1 + - appletvos15.2 + - appletvsimulator15.2 + - watchos8.3 + - watchsimulator8.3 + simulators: + - iOS 14.0 + - iOS 14.1 + - iOS 14.2 + - iOS 14.3 + - iOS 14.4 + - iOS 14.5 + - iOS 15.0 + - tvOS 14.0 + - tvOS 14.2 + - tvOS 14.3 + - tvOS 14.4 + - tvOS 14.5 + - tvOS 15.0 + - watchOS 7.0 + - watchOS 7.1 + - watchOS 7.2 + - watchOS 7.4 + - watchOS 8.0 + jdk: "17+35-2724" + - image: xcode13.1 + xcode: "13.1" + osx_version: "11.6" + xcode_full_version: "13.1" + xcode_build_version: "13A1030d" + image_publish_date: 2021-10-22 + sdks: + - iphoneos14.5 + - iphonesimulator14.5 + - macosx11.3 + - appletvos14.5 + - appletvsimulator14.5 + - watchos7.4 + - watchsimulator7.4 + simulators: + - iOS 14.0 + - iOS 14.1 + - iOS 14.2 + - iOS 14.3 + - iOS 14.4 + - iOS 14.5 + - iOS 15.0 + - tvOS 14.0 + - tvOS 14.2 + - tvOS 14.3 + - tvOS 14.4 + - tvOS 14.5 + - tvOS 15.0 + - watchOS 7.0 + - watchOS 7.1 + - watchOS 7.2 + - watchOS 7.4 + - watchOS 8.0 + jdk: "17+35-2724" + - image: xcode12.5 + xcode: "12.5" + osx_version: "11.3" + xcode_full_version: "12.5" + xcode_build_version: "12E262" + image_publish_date: 2021-05-05 + sdks: + - iphoneos14.5 + - iphonesimulator14.5 + - macosx11.3 + - appletvos14.5 + - appletvsimulator14.5 + - watchos7.4 + - watchsimulator7.4 + simulators: + - iOS 11.4 + - iOS 12.0 + - iOS 12.1 + - iOS 12.2 + - iOS 12.4 + - iOS 13.0 + - iOS 13.1 + - iOS 13.2 + - iOS 13.3 + - iOS 13.4 + - iOS 13.5 + - iOS 13.6 + - iOS 13.7 + - iOS 14.0 + - iOS 14.1 + - iOS 14.2 + - iOS 14.3 + - iOS 14.4 + - iOS 14.5 + - tvOS 11.4 + - tvOS 12.0 + - tvOS 12.1 + - tvOS 12.2 + - tvOS 12.4 + - tvOS 13.0 + - tvOS 13.2 + - tvOS 13.3 + - tvOS 13.4 + - tvOS 14.0 + - tvOS 14.2 + - tvOS 14.3 + - tvOS 14.4 + - tvOS 14.5 + - watchOS 5.0 + - watchOS 5.1 + - watchOS 5.2 + - watchOS 5.3 + - watchOS 6.0 + - watchOS 6.1 + - watchOS 6.2 + - watchOS 7.0 + - watchOS 7.1 + - watchOS 7.2 + - watchOS 7.4 + jdk: "16.0.1" + - image: xcode12.4 + xcode: "12.4" + osx_version: "11.2.1" + xcode_full_version: "12.4" + xcode_build_version: "12D4e" + image_publish_date: 2021-02-26 + sdks: + - iphoneos14.4 + - iphonesimulator14.4 + - driverkit.macosx20.2 + - macosx11.1 + - appletvos14.3 + - appletvsimulator14.3 + - watchos7.2 + - watchsimulator7.2 + simulators: + - iOS 11.4 + - iOS 12.0 + - iOS 12.1 + - iOS 12.2 + - iOS 12.4 + - iOS 13.0 + - iOS 13.1 + - iOS 13.2 + - iOS 13.3 + - iOS 13.4 + - iOS 13.5 + - iOS 13.6 + - iOS 13.7 + - iOS 14.0 + - iOS 14.1 + - iOS 14.2 + - iOS 14.3 + - iOS 14.4 + - tvOS 11.4 + - tvOS 12.0 + - tvOS 12.1 + - tvOS 12.2 + - tvOS 12.4 + - tvOS 13.0 + - tvOS 13.2 + - tvOS 13.3 + - tvOS 13.4 + - tvOS 14.0 + - tvOS 14.2 + - tvOS 14.3 + - watchOS 5.0 + - watchOS 5.1 + - watchOS 5.2 + - watchOS 5.3 + - watchOS 6.0 + - watchOS 6.1 + - watchOS 6.2 + - watchOS 7.0 + - watchOS 7.1 + - watchOS 7.2 + jdk: "15.0.1" + - image: xcode12.3 + xcode: "12.3" + osx_version: "11.1" + xcode_full_version: "12.3" + xcode_build_version: "12C33" + image_publish_date: 2021-01-29 + sdks: + - iphoneos14.3 + - iphonesimulator14.3 + - macosx11.1 + - appletvos14.3 + - appletvsimulator14.3 + - watchos7.2 + - watchsimulator7.2 + simulators: + - iOS 11.4 + - iOS 12.0 + - iOS 12.1 + - iOS 12.2 + - iOS 12.4 + - iOS 13.0 + - iOS 13.1 + - iOS 13.2 + - iOS 13.3 + - iOS 13.4 + - iOS 13.5 + - iOS 13.6 + - iOS 13.7 + - iOS 14.0 + - iOS 14.1 + - iOS 14.2 + - iOS 14.3 + - tvOS 11.4 + - tvOS 12.0 + - tvOS 12.1 + - tvOS 12.2 + - tvOS 12.4 + - tvOS 13.0 + - tvOS 13.2 + - tvOS 13.3 + - tvOS 13.4 + - tvOS 14.0 + - tvOS 14.2 + - tvOS 14.3 + - watchOS 5.0 + - watchOS 5.1 + - watchOS 5.2 + - watchOS 5.3 + - watchOS 6.0 + - watchOS 6.1 + - watchOS 6.2 + - watchOS 7.0 + - watchOS 7.1 + - watchOS 7.2 + jdk: "15.0.1" + - image: xcode12.2 + xcode: "12.2" + osx_version: "10.15.7" + xcode_full_version: "12.2" + xcode_build_version: "12B5018i" + image_publish_date: 2020-10-06 + sdks: + - iphoneos14.2 + - iphonesimulator14.2 + - macosx11.0 + - appletvos14.2 + - appletvsimulator14.2 + - watchos7.1 + - watchsimulator7.1 + simulators: + - iOS 10.3 + - iOS 11.0 + - iOS 11.1 + - iOS 11.2 + - iOS 11.3 + - iOS 11.4 + - iOS 12.0 + - iOS 12.1 + - iOS 12.2 + - iOS 12.4 + - iOS 13.0 + - iOS 13.1 + - iOS 13.2 + - iOS 13.3 + - iOS 13.4 + - iOS 13.5 + - iOS 14.0 + - tvOS 10.2 + - tvOS 11.0 + - tvOS 11.1 + - tvOS 11.2 + - tvOS 11.3 + - tvOS 11.4 + - tvOS 12.0 + - tvOS 12.1 + - tvOS 12.2 + - tvOS 12.4 + - tvOS 13.0 + - tvOS 13.2 + - tvOS 13.3 + - tvOS 13.4 + - tvOS 14.0 + - watchOS 3.2 + - watchOS 4.0 + - watchOS 4.1 + - watchOS 4.2 + - watchOS 5.0 + - watchOS 5.1 + - watchOS 5.2 + - watchOS 5.3 + - watchOS 6.1 + - watchOS 6.2 + - watchOS 7.0 + jdk: "14.0.2" + - image: xcode12u + xcode: "12 (Universal)" + osx_version: "10.15.5" + xcode_full_version: "12.0" + xcode_build_version: "12A8161k" + image_publish_date: 2020-07-13 + sdks: + - iphoneos14.0 + - iphonesimulator14.0 + - driverkit.macosx20.0 + - macosx11.0 + simulators: + - iOS 14.0 + jdk: "14.0.1" + - image: xcode12 + xcode: "12" + osx_version: "10.15.7" + xcode_full_version: "12.0.1" + xcode_build_version: "12A7300" + image_publish_date: 2020-10-06 + sdks: + - iphoneos14.0 + - iphonesimulator14.0 + - macosx10.15 + - appletvos14.0 + - appletvsimulator14.0 + - watchos7 + - watchsimulator7 + simulators: + - iOS 10.3 + - iOS 11.0 + - iOS 11.1 + - iOS 11.2 + - iOS 11.3 + - iOS 11.4 + - iOS 12.0 + - iOS 12.1 + - iOS 12.2 + - iOS 12.4 + - iOS 13.0 + - iOS 13.1 + - iOS 13.2 + - iOS 13.3 + - iOS 13.4 + - iOS 13.5 + - iOS 14.0 + - tvOS 10.2 + - tvOS 11.0 + - tvOS 11.1 + - tvOS 11.2 + - tvOS 11.3 + - tvOS 11.4 + - tvOS 12.0 + - tvOS 12.1 + - tvOS 12.2 + - tvOS 12.4 + - tvOS 13.0 + - tvOS 13.2 + - tvOS 13.3 + - tvOS 13.4 + - tvOS 14.0 + - watchOS 3.2 + - watchOS 4.0 + - watchOS 4.1 + - watchOS 4.2 + - watchOS 5.0 + - watchOS 5.1 + - watchOS 5.2 + - watchOS 5.3 + - watchOS 6.1 + - watchOS 6.2 + - watchOS 7.0 + jdk: "14.0.2" + - image: xcode11.6 + xcode: "11.6" + osx_version: "10.15.5" + xcode_full_version: "11.6" + xcode_build_version: "11E708" + image_publish_date: 2020-07-28 + sdks: + - iphoneos13.6 + - iphonesimulator13.6 + - macosx10.15 + - appletvos13.4 + - appletvsimulator13.4 + - watchos6.2 + - watchsimulator6.2 + simulators: + - iOS 10.3 + - iOS 11.0 + - iOS 11.1 + - iOS 11.2 + - iOS 11.3 + - iOS 11.4 + - iOS 12.0 + - iOS 12.1 + - iOS 12.2 + - iOS 12.4 + - iOS 13.2 + - iOS 13.3 + - iOS 13.4 + - iOS 13.5 + - iOS 13.6 + - tvOS 10.2 + - tvOS 11.0 + - tvOS 11.1 + - tvOS 11.2 + - tvOS 11.3 + - tvOS 11.4 + - tvOS 12.0 + - tvOS 12.1 + - tvOS 12.2 + - tvOS 12.4 + - tvOS 13.2 + - tvOS 13.3 + - tvOS 13.4 + - watchOS 3.2 + - watchOS 4.0 + - watchOS 4.1 + - watchOS 4.2 + - watchOS 5.0 + - watchOS 5.1 + - watchOS 5.2 + - watchOS 5.3 + - watchOS 6.1 + - watchOS 6.2 + jdk: "14.0.2" + - image: xcode11.5 + xcode: "11.5" + osx_version: "10.15.4" + xcode_full_version: "11.5" + xcode_build_version: "11E608c" + image_publish_date: 2020-05-27 + sdks: + - iphoneos13.5 + - iphonesimulator13.5 + - macosx10.15 + - appletvos13.4 + - appletvsimulator13.4 + - watchos6.2 + - watchsimulator6.2 + simulators: + - iOS 10.3 + - iOS 11.0 + - iOS 11.1 + - iOS 11.2 + - iOS 11.3 + - iOS 11.4 + - iOS 12.0 + - iOS 12.1 + - iOS 12.2 + - iOS 12.4 + - iOS 13.2 + - iOS 13.3 + - iOS 13.4 + - iOS 13.5 + - tvOS 10.2 + - tvOS 11.0 + - tvOS 11.1 + - tvOS 11.2 + - tvOS 11.3 + - tvOS 11.4 + - tvOS 12.0 + - tvOS 12.1 + - tvOS 12.2 + - tvOS 12.4 + - tvOS 13.2 + - tvOS 13.3 + - tvOS 13.4 + - watchOS 3.2 + - watchOS 4.0 + - watchOS 4.1 + - watchOS 4.2 + - watchOS 5.0 + - watchOS 5.1 + - watchOS 5.2 + - watchOS 5.3 + - watchOS 6.1 + - watchOS 6.2 + jdk: "14.0.1" + - image: xcode11.4 + xcode: "11.4.1" + osx_version: "10.15.4" + xcode_full_version: "11.4.1" + xcode_build_version: "11E503a" + image_publish_date: 2020-05-07 + sdks: + - iphoneos13.4 + - iphonesimulator13.4 + - macosx10.15 + - appletvos13.4 + - appletvsimulator13.4 + - watchos6.2 + - watchsimulator6.2 + simulators: + - iOS 10.3 + - iOS 11.0 + - iOS 11.1 + - iOS 11.2 + - iOS 11.3 + - iOS 11.4 + - iOS 12.0 + - iOS 12.1 + - iOS 12.2 + - iOS 12.4 + - iOS 13.2 + - iOS 13.3 + - iOS 13.4 + - tvOS 10.2 + - tvOS 11.0 + - tvOS 11.1 + - tvOS 11.2 + - tvOS 11.3 + - tvOS 11.4 + - tvOS 12.0 + - tvOS 12.1 + - tvOS 12.2 + - tvOS 12.4 + - tvOS 13.2 + - tvOS 13.3 + - tvOS 13.4 + - watchOS 3.2 + - watchOS 4.0 + - watchOS 4.1 + - watchOS 4.2 + - watchOS 5.0 + - watchOS 5.1 + - watchOS 5.2 + - watchOS 5.3 + - watchOS 6.1 + - watchOS 6.2 + jdk: "14.0.1" + - image: xcode11.3 + xcode: "11.3.1" + osx_version: "10.14.6" + xcode_full_version: "11.3.1" + xcode_build_version: "11C505" + image_publish_date: 2020-02-07 + sdks: + - iphoneos13.2 + - iphonesimulator13.2 + - macosx10.15 + - appletvos13.2 + - appletvsimulator13.2 + - watchos6.1 + - watchsimulator6.1 + simulators: + - iOS 10.3 + - iOS 11.0 + - iOS 11.1 + - iOS 11.2 + - iOS 11.3 + - iOS 11.4 + - iOS 12.0 + - iOS 12.1 + - iOS 12.2 + - iOS 12.4 + - iOS 13.2 + - iOS 13.3 + - tvOS 10.2 + - tvOS 11.0 + - tvOS 11.1 + - tvOS 11.2 + - tvOS 11.3 + - tvOS 11.4 + - tvOS 12.0 + - tvOS 12.1 + - tvOS 12.2 + - tvOS 12.4 + - tvOS 13.2 + - tvOS 13.3 + - watchOS 3.2 + - watchOS 4.0 + - watchOS 4.1 + - watchOS 4.2 + - watchOS 5.0 + - watchOS 5.1 + - watchOS 5.2 + - watchOS 5.3 + - watchOS 6.1 + jdk: "14" + - image: xcode11.2 + xcode: "11.2.1" + osx_version: "10.14.6" + xcode_full_version: "11.2.1" + xcode_build_version: "11B500" + image_publish_date: 2019-11-20 + sdks: + - iphoneos13.2 + - iphonesimulator13.2 + - macosx10.15 + - appletvos13.2 + - appletvsimulator13.2 + - watchos6.1 + - watchsimulator6.1 + simulators: + - iOS 10.3 + - iOS 11.0 + - iOS 11.1 + - iOS 11.2 + - iOS 11.3 + - iOS 11.4 + - iOS 12.0 + - iOS 12.1 + - iOS 12.2 + - iOS 12.4 + - iOS 13.2 + - tvOS 10.2 + - tvOS 11.0 + - tvOS 11.1 + - tvOS 11.2 + - tvOS 11.3 + - tvOS 11.4 + - tvOS 12.0 + - tvOS 12.1 + - tvOS 12.2 + - tvOS 12.4 + - tvOS 13.2 + - watchOS 3.2 + - watchOS 4.0 + - watchOS 4.1 + - watchOS 4.2 + - watchOS 5.0 + - watchOS 5.1 + - watchOS 5.2 + - watchOS 5.3 + - watchOS 6.1 + jdk: "14" + - image: xcode11.1 + xcode: "11.1" + osx_version: "10.14.6" + xcode_full_version: "11.1" + xcode_build_version: "11A1027" + image_publish_date: 2019-10-07 + sdks: + - iphoneos13.1 + - iphonesimulator13.1 + - macosx10.15 + - appletvos13.0 + - appletvsimulator13.0 + - watchos6.0 + - watchsimulator6.0 + simulators: + - iOS 10.3 + - iOS 11.0 + - iOS 11.1 + - iOS 11.2 + - iOS 11.3 + - iOS 11.4 + - iOS 12.0 + - iOS 12.1 + - iOS 13.0 + - iOS 13.1 + - tvOS 10.2 + - tvOS 11.0 + - tvOS 11.1 + - tvOS 11.2 + - tvOS 11.3 + - tvOS 11.4 + - tvOS 12.0 + - tvOS 12.1 + - tvOS 13.0 + - watchOS 3.2 + - watchOS 4.0 + - watchOS 4.1 + - watchOS 4.2 + - watchOS 5.0 + - watchOS 5.1 + - watchOS 6.0 + jdk: "14" + - image: xcode11 + xcode: "11.0" + osx_version: "10.14.6" + xcode_full_version: "11.0" + xcode_build_version: "11A420a" + image_publish_date: 2019-09-19 + sdks: + - iphoneos13.0 + - iphonesimulator13.0 + - macosx10.15 + - appletvos13.0 + - appletvsimulator13.0 + - watchos6.0 + - watchsimulator6.0 + simulators: + - iOS 10.3 + - iOS 11.0 + - iOS 11.1 + - iOS 11.2 + - iOS 11.3 + - iOS 11.4 + - iOS 12.0 + - iOS 12.1 + - iOS 13.0 + - tvOS 10.2 + - tvOS 11.0 + - tvOS 11.1 + - tvOS 11.2 + - tvOS 11.3 + - tvOS 11.4 + - tvOS 12.0 + - tvOS 12.1 + - tvOS 13.0 + - watchOS 3.2 + - watchOS 4.0 + - watchOS 4.1 + - watchOS 4.2 + - watchOS 5.0 + - watchOS 5.1 + - watchOS 6.0 + jdk: "14" + - image: xcode10.3 + xcode: "10.3" + osx_version: "10.14.4" + xcode_full_version: "10.3" + xcode_build_version: "18E226" + image_publish_date: 2019-08-10 + sdks: + - macosx10.14 + - iphoneos12.4 + - iphonesimulator12.4 + - appletvos12.4 + - appletvsimulator12.4 + - watchos5.3 + - watchsimulator5.3 + simulators: + - iOS 10.3 + - iOS 11.0 + - iOS 11.1 + - iOS 11.2 + - iOS 11.3 + - iOS 11.4 + - iOS 12.0 + - iOS 12.1 + - iOS 12.2 + - iOS 12.4 + - tvOS 10.2 + - tvOS 11.0 + - tvOS 11.1 + - tvOS 11.2 + - tvOS 11.3 + - tvOS 11.4 + - tvOS 12.0 + - tvOS 12.1 + - tvOS 12.2 + - tvOS 12.4 + - watchOS 3.2 + - watchOS 4.0 + - watchOS 4.1 + - watchOS 4.2 + - watchOS 5.0 + - watchOS 5.1 + - watchOS 5.2 + - watchOS 5.3 + jdk: "13.0.1" + - image: xcode10.2 + xcode: "10.2" + osx_version: "10.14" + xcode_full_version: "10.2.1" + xcode_build_version: "10E1001" + image_publish_date: 2019-04-18 + sdks: + - macosx10.14 + - iphoneos12.2 + - iphonesimulator12.2 + - appletvos12.2 + - appletvsimulator12.2 + - watchos5.2 + - watchsimulator5.2 + simulators: + - iOS 8.1 + - iOS 8.2 + - iOS 8.3 + - iOS 8.4 + - iOS 9.0 + - iOS 9.1 + - iOS 9.2 + - iOS 9.3 + - iOS 10.0 + - iOS 10.1 + - iOS 10.2 + - iOS 10.3 + - iOS 11.0 + - iOS 11.1 + - iOS 11.2 + - iOS 11.3 + - iOS 11.4 + - iOS 12.0 + - iOS 12.1 + - iOS 12.2 + - tvOS 9.0 + - tvOS 9.1 + - tvOS 9.2 + - tvOS 10.0 + - tvOS 10.1 + - tvOS 10.2 + - tvOS 11.0 + - tvOS 11.1 + - tvOS 11.2 + - tvOS 11.3 + - tvOS 11.4 + - tvOS 12.0 + - tvOS 12.1 + - tvOS 12.2 + - watchOS 2.0 + - watchOS 2.1 + - watchOS 2.2 + - watchOS 3.2 + - watchOS 4.0 + - watchOS 4.1 + - watchOS 4.2 + - watchOS 5.0 + - watchOS 5.1 + - watchOS 5.2 + jdk: "13.0.1" + - image: xcode10.1 + xcode: "10.1" + osx_version: "10.13" + xcode_full_version: "10.1" + xcode_build_version: "10B61" + image_publish_date: 2018-11-01 + sdks: + - macosx10.14 + - iphoneos12.1 + - iphonesimulator12.1 + - appletvos12.1 + - appletvsimulator12.1 + - watchos5.1 + - watchsimulator5.1 + simulators: + - iOS 8.1 + - iOS 8.2 + - iOS 8.3 + - iOS 8.4 + - iOS 9.0 + - iOS 9.1 + - iOS 9.2 + - iOS 9.3 + - iOS 10.0 + - iOS 10.1 + - iOS 10.2 + - iOS 10.3 + - iOS 11.0 + - iOS 11.1 + - iOS 11.2 + - iOS 11.3 + - iOS 11.4 + - iOS 12.0 + - iOS 12.1 + - tvOS 9.0 + - tvOS 9.1 + - tvOS 9.2 + - tvOS 10.0 + - tvOS 10.1 + - tvOS 10.2 + - tvOS 11.0 + - tvOS 11.1 + - tvOS 11.2 + - tvOS 11.3 + - tvOS 11.4 + - tvOS 12.0 + - tvOS 12.1 + - watchOS 2.0 + - watchOS 2.1 + - watchOS 2.2 + - watchOS 3.2 + - watchOS 4.0 + - watchOS 4.1 + - watchOS 4.2 + - watchOS 5.0 + - watchOS 5.1 + jdk: "13.0.1" - image: xcode10 xcode: "10.0" osx_version: "10.13" @@ -52,7 +1091,7 @@ osx_images: - watchOS 4.1 - watchOS 4.2 - watchOS 5.0 - jdk: "10.0.2+13" + jdk: "13.0.1" - image: xcode9.4 xcode: "9.4" osx_version: "10.13" @@ -105,7 +1144,7 @@ osx_images: - watchOS 4.1 - watchOS 4.2 - watchOS 4.3 - jdk: "10.0.1+10" + jdk: "13.0.1" - image: xcode9.3 xcode: "9.3" osx_version: "10.13" @@ -393,19 +1432,3 @@ osx_images: - "tvOS 9.1" - "tvOS 9.2" jdk: "1.8.0_92-b14" - - image: xcode6.4 - xcode: "6.4" - osx_version: "10.10" - xcode_full_version: "6.4" - xcode_build_version: "6E35b" - sdks: - - macosx10.9 - - macosx10.10 - - iphoneos8.4 - - iphonesimulator8.4 - simulators: - - "iOS 7.1" - - "iOS 8.1" - - "iOS 8.2" - - "iOS 8.4" - jdk: "1.8.0_45-b14" diff --git a/_includes/c11-cpp11-and-beyond-and-toolchains.md b/_includes/c11-cpp11-and-beyond-and-toolchains.md index f7b549143a3..e3eea3ac973 100644 --- a/_includes/c11-cpp11-and-beyond-and-toolchains.md +++ b/_includes/c11-cpp11-and-beyond-and-toolchains.md @@ -4,9 +4,12 @@ If your project requires tools compatible with C11, C++11, or a more recent lang ### GCC on Linux -Ubuntu 12.04 ships with GCC 4.6.3 and Ubuntu 14.04 ships with GCC 4.8.2. +* [Precise](/user/reference/precise/) ships with GCC 4.6.3 +* [Trusty](/user/reference/trusty/) ships with GCC 4.8.2 +* [Xenial](/user/reference/xenial/) ships with GCC 5.4.0 +* [Bionic](/user/reference/bionic/) ships with GCC 7.4.0 -Note that [GCC support for ISO C11 reached a similar level of completeness as ISO C99 in 4.9](https://gcc.gnu.org/wiki/C11Status) and that C++11 is feature-complete in 4.8.1, but [support for `` does not exist until 4.9](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53631). +Note that [GCC support for ISO C11 reached a similar level of completeness as ISO C99 in 4.9](https://gcc.gnu.org/wiki/C11Status) and that C++11 is feature-complete in 5.1 (the C++ language support was feature-complete in 4.8.1 but the standard library didn't support all C++11 features until [later](https://gcc.gnu.org/gcc-5/changes.html#libstdcxx), in particular [support for `` does not exist until 4.9](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53631)). To upgrade GCC to a more recent version, you will have to install the appropriate version from the `ubuntu-toolchain-r-test` source; see below for examples: @@ -62,9 +65,9 @@ before_install: ``` {: data-file=".travis.yml"} -### GCC on OS X +### GCC on macOS -On OS X, `gcc` is an alias for `clang`, and `g++` is an alias for `clang++`. +On macOS, `gcc` is an alias for `clang`, and `g++` is an alias for `clang++`. So you must set CC and CXX to specific `gcc`/`g++` versions: ```yaml @@ -95,9 +98,29 @@ before_install: ``` {: data-file=".travis.yml"} -### Clang +### GCC on FreeBSD -Ubuntu 12.04 ships with Clang 3.4 and Ubuntu 14.04 ships with Clang 3.5.0. +Travis CI FreeBSD image ships with GCC 10.0.0 (it's not in the base system by default). + +To upgrade GCC to a more recent version, install the appropriate version from packages; see below for examples: + +```yaml +os: freebsd +addons: + pkg: + - gcc10 + env: + - CC=gcc10 + - CXX=g++10 +``` +{: data-file=".travis.yml"} + +### Clang on Linux + +* [Precise](/user/reference/precise/) ships with Clang 3.4 +* [Trusty](/user/reference/trusty/) ships with Clang 3.5.0 +* [Xenial](/user/reference/xenial/) ships with Clang 7 +* [Bionic](/user/reference/bionic/) ships with Clang 7 Note that [C++11 support is complete starting from Clang 3.3](http://clang.llvm.org/cxx_status.html). @@ -180,11 +203,52 @@ before_install: ``` {: data-file=".travis.yml"} -On OS X, the version of `clang` is controlled by the choice of `osx_image`. +### Clang on macOS + +On macOS, the version of `clang` is controlled by the choice of `osx_image`. +You can find [here](/user/reference/osx/#macos-version) the list of available `osx_image`. + +```yaml +matrix: +  include: +    - os: osx +      osx_image: xcode10.1 + + - os: osx +      osx_image: xcode9.4 +``` +{: data-file=".travis.yml"} + +You can find the `clang` version shipped by Xcode [here](https://trac.macports.org/wiki/XcodeVersionInfo). + +### Clang on FreeBSD + +> Clang is the default compiler on FreeBSD + +FreeBSD ships with Clang 8.0.1 + +To upgrade Clang to a more recent version, install the appropriate version from packages; see below for examples: + +```yaml +os: freebsd +addons: + pkg: + - llvm90 + env: + - CC=/usr/local/bin/clang90 # llvm90 installs it to /usr/local/bin/clang90 + - CXX=/usr/local/bin/clang++90 # llvm90 installs it to /usr/local/bin/clang++90 +``` +{: data-file=".travis.yml"} + +> Clang is the default compiler on FreeBSD #### CMake -Ubuntu 12.04 ships with cmake 2.8.7 and Ubuntu 14.04 ships with cmake 3.9.2. +* [Precise](/user/reference/precise/) ships with CMake 2.8.7 +* [Trusty](/user/reference/trusty/) ships with CMake 3.9.2 +* [Xenial](/user/reference/xenial/) ships with CMake 3.12.4 +* [Bionic](/user/reference/bionic/) ships with CMake 3.12.4 +* [FreeBSD](/user/reference/freebsd/) ships with CMake 3.15.5 You can upgrade cmake to 3.2.3 on Precise from the `george-edison55-precise-backports` source (note that the `cmake-data` package contains dependencies which Aptitude does not automatically resolve), c.f. @@ -199,4 +263,4 @@ addons: ``` {: data-file=".travis.yml"} -On OS X, the version of `cmake` is controlled by the choice of `osx_image`. +On macOS, the version of `cmake` is controlled by the choice of `osx_image`. diff --git a/_includes/deploy/before_after_deploy.md b/_includes/deploy/before_after_deploy.md new file mode 100644 index 00000000000..907b6728750 --- /dev/null +++ b/_includes/deploy/before_after_deploy.md @@ -0,0 +1,18 @@ +## Running commands before and after the deploy step + +Sometimes you want to run commands before or after deploying. + +You can use the `before_deploy` and `after_deploy` steps for this. + +> Please note: These will +only be triggered if Travis CI is actually deploying. + +```yaml +before_deploy: "echo ready?" +deploy: + # ⋮ +after_deploy: + - ./after_deploy_1.sh + - ./after_deploy_2.sh +``` +{: data-file=".travis.yml"} diff --git a/_includes/deploy/cleanup.md b/_includes/deploy/cleanup.md new file mode 100644 index 00000000000..81aa20c4f29 --- /dev/null +++ b/_includes/deploy/cleanup.md @@ -0,0 +1,23 @@ +## Cleaning up the Git Working Directory + +By default your Git working directory will not be cleaned up before the deploy +step, so it might contain left over artifacts from previous steps. + +For many providers and deployment targets this is not an issue or even intended. + +If you do need to clean up the working directory from any changes made during +the build process, you can add the following to your `.travis.yml` file: + +```yaml +deploy: + provider: {{ page.provider | default: '[your provider]' }} + cleanup: true +``` +{: data-file=".travis.yml"} + +> Please note that the previous version of dpl, our deployment integration +tooling, used to reset your working directory and delete all changes made +during the build using `git stash --all`. In order to keep changes one had to +opt out using `skip_cleanup: true`. This default turned out to be useful only +for very few providers and has been changed in dpl v2. You still might find +external tutorials or posts mentioning `skip_cleanup`. diff --git a/_includes/deploy/conditional.md b/_includes/deploy/conditional.md new file mode 100644 index 00000000000..5f2bbb18ca8 --- /dev/null +++ b/_includes/deploy/conditional.md @@ -0,0 +1,5 @@ +## Conditional Deploys + +You can deploy only when certain conditions are met. + +See [Conditional Deployments](/user/deployment-v2/conditional). diff --git a/_includes/deploy/edge.md b/_includes/deploy/edge.md new file mode 100644 index 00000000000..1f3836a7e20 --- /dev/null +++ b/_includes/deploy/edge.md @@ -0,0 +1,14 @@ +## Running an edge version + +If you contribute to or experiment with [dpl](https://github.com/travis-ci/dpl), our deployment tooling, make sure you use the edge version from GitHub: + +```yaml +deploy: + provider: + edge: + branch: master + source: /dpl # only needed for forks of travis-ci/dpl +``` +{: data-file=".travis.yml"} + +You can find more information about contributing to dpl [here](https://github.com/travis-ci/dpl#contributing-to-dpl). diff --git a/_includes/deploy/maturity_levels.md b/_includes/deploy/maturity_levels.md new file mode 100644 index 00000000000..208a8114dfb --- /dev/null +++ b/_includes/deploy/maturity_levels.md @@ -0,0 +1,16 @@ +## Maturity Levels + +In order to communicate the current development status and maturity of dpl's +support for a particular service, the respective provider is marked with one of +the following maturity levels, according to the given criteria: + +* `dev` - the provider is in development (initial level) +* `alpha` - the provider is fully tested +* `beta` - the provider has been in alpha for at least a month and successful real-world production deployments have been observed +* `stable` - the provider has been in beta for at least two months and there are no open issues that qualify as critical (such as deployments failing, documented functionality broken, etc.) + +> Dpl v2 represents a major rewrite, so support for all providers has been +reset to `dev` or `alpha`, depending on the test status. + +For all levels except `stable` a message will be printed to your build log +that informs you about the current status. diff --git a/_includes/deploy/multiple_targets.md b/_includes/deploy/multiple_targets.md new file mode 100644 index 00000000000..a9f61326a80 --- /dev/null +++ b/_includes/deploy/multiple_targets.md @@ -0,0 +1,19 @@ +## Deploying to multiple targets + +Running multiple deployments to different providers (or the same provider with +different configurations) is possible by adding configurations to the `deploy` +section as a list. For example, if you want to deploy to both s3 and Heroku, +your `deploy` section would look something like this: + +```yaml +deploy: + - provider: s3 + access_key_id: + secret_access_key: + # ⋮ + - provider: heroku + api_key: + # ⋮ +``` +{: data-file=".travis.yml"} + diff --git a/_includes/deploy/opt_in.md b/_includes/deploy/opt_in.md new file mode 100644 index 00000000000..acfecf12730 --- /dev/null +++ b/_includes/deploy/opt_in.md @@ -0,0 +1,30 @@ +## How to opt in to different deployment tooling versions + +In order to use different version of our deployment tooling, please add the +following to your `.travis.yml`: + +```yaml +deploy: + provider: + # ⋮ + dpl_version: # Optional, defaults to the latest stable version +``` +if you want to use the latest edge version of the deployment tooling: + +```yaml +deploy: + provider: + # ⋮ + edge: true +``` +if you want to use other edge version of the deployment tooling: + +```yaml +deploy: + provider: + # ⋮ + dpl_version: + edge: true +``` + +{: data-file=".travis.yml"} diff --git a/_includes/deploy/providers/anynines.md b/_includes/deploy/providers/anynines.md new file mode 100644 index 00000000000..abd299f3265 --- /dev/null +++ b/_includes/deploy/providers/anynines.md @@ -0,0 +1,46 @@ +{% unless include.minimal == false %} +For a minimal configuration, add the following to your `.travis.yml`: + +```yaml +deploy: + provider: anynines + username: + password: + organization: + space: + edge: true # opt in to dpl v2 +``` +{: data-file=".travis.yml"} + + + +{{ include.content }} +{% endunless %} + +## Status + +Support for deployments to Anynines is in **alpha**. Please see [Maturity Levels](/user/deployment-v2/#maturity-levels) for details. +## Known options + +Use the following options to further configure the deployment. + +| `username` | anynines username — **required**, type: string | +| `password` | anynines password — **required**, **secret**, type: string | +| `organization` | anynines organization — **required**, type: string | +| `space` | anynines space — **required**, type: string | +| `app_name` | Application name — type: string | +| `buildpack` | Buildpack name or Git URL — type: string | +| `manifest` | Path to the manifest — type: string | + +### Shared options + +| `cleanup` | Clean up build artifacts from the Git working directory before the deployment — type: boolean | +| `run` | Commands to execute after the deployment finished successfully — type: string or array of strings | + +## Environment variables + +All options can be given as environment variables if prefixed with `ANYNINES_`. + +For example, `password` can be given as `ANYNINES_PASSWORD=`. + +{% include deploy/secrets.md name="password" env_name="ANYNINES_PASSWORD" %} diff --git a/_includes/deploy/providers/azure_web_apps.md b/_includes/deploy/providers/azure_web_apps.md new file mode 100644 index 00000000000..f5ab01c4f1c --- /dev/null +++ b/_includes/deploy/providers/azure_web_apps.md @@ -0,0 +1,43 @@ +{% unless include.minimal == false %} +For a minimal configuration, add the following to your `.travis.yml`: + +```yaml +deploy: + provider: azure_web_apps + username: + password: + site: + edge: true # opt in to dpl v2 +``` +{: data-file=".travis.yml"} + + + +{{ include.content }} +{% endunless %} + +## Status + +Support for deployments to Azure Web Apps is in **alpha**. Please see [Maturity Levels](/user/deployment-v2/#maturity-levels) for details. +## Known options + +Use the following options to further configure the deployment. + +| `username` | Web App Deployment Username — **required**, type: string | +| `password` | Web App Deployment Password — **required**, **secret**, type: string | +| `site` | Web App name (e.g. myapp in myapp.azurewebsites.net) — **required**, type: string | +| `slot` | Slot name (if your app uses staging deployment) — type: string | +| `verbose` | Print deployment output from Azure. Warning: If authentication fails, Git prints credentials in clear text. Correct credentials remain hidden. — type: boolean | + +### Shared options + +| `cleanup` | Clean up build artifacts from the Git working directory before the deployment — type: boolean | +| `run` | Commands to execute after the deployment finished successfully — type: string or array of strings | + +## Environment variables + +All options can be given as environment variables if prefixed with `AZURE_WA_`. + +For example, `password` can be given as `AZURE_WA_PASSWORD=`. + +{% include deploy/secrets.md name="password" env_name="AZURE_WA_PASSWORD" %} \ No newline at end of file diff --git a/_includes/deploy/providers/bintray.md b/_includes/deploy/providers/bintray.md new file mode 100644 index 00000000000..995dc7e00ee --- /dev/null +++ b/_includes/deploy/providers/bintray.md @@ -0,0 +1,42 @@ +{% unless include.minimal == false %} +For a minimal configuration, add the following to your `.travis.yml`: + +```yaml +deploy: + provider: bintray + user: + key: + file: + edge: true # opt in to dpl v2 +``` +{: data-file=".travis.yml"} + + + +{{ include.content }} +{% endunless %} + +## Status + +Support for deployments to Bintray is **stable**. +## Known options + +Use the following options to further configure the deployment. + +| `user` | Bintray user — **required**, type: string | +| `key` | Bintray API key — **required**, **secret**, type: string | +| `file` | Path to a descriptor file for the Bintray upload — **required**, type: string | +| `passphrase` | Passphrase as configured on Bintray (if GPG signing is used) — type: string | + +### Shared options + +| `cleanup` | Clean up build artifacts from the Git working directory before the deployment — type: boolean | +| `run` | Commands to execute after the deployment finished successfully — type: string or array of strings | + +## Environment variables + +All options can be given as environment variables if prefixed with `BINTRAY_`. + +For example, `key` can be given as `BINTRAY_KEY=`. + +{% include deploy/secrets.md name="key" env_name="BINTRAY_KEY" %} diff --git a/_includes/deploy/providers/bluemixcloudfoundry.md b/_includes/deploy/providers/bluemixcloudfoundry.md new file mode 100644 index 00000000000..3169a66aa56 --- /dev/null +++ b/_includes/deploy/providers/bluemixcloudfoundry.md @@ -0,0 +1,49 @@ +{% unless include.minimal == false %} +For a minimal configuration, add the following to your `.travis.yml`: + +```yaml +deploy: + provider: bluemixcloudfoundry + username: + password: + organization: + space: + edge: true # opt in to dpl v2 +``` +{: data-file=".travis.yml"} + + + +{{ include.content }} +{% endunless %} + +## Status + +Support for deployments to Bluemix Cloud Foundry is **stable**. +## Known options + +Use the following options to further configure the deployment. + +| `username` | Bluemix username — **required**, type: string | +| `password` | Bluemix password — **required**, **secret**, type: string | +| `organization` | Bluemix organization — **required**, type: string | +| `space` | Bluemix space — **required**, type: string | +| `region` | Bluemix region — type: string, default: `ng`, known values: `ng`, `eu-gb`, `eu-de`, `au-syd` | +| `api` | Bluemix api URL — type: string | +| `app_name` | Application name — type: string | +| `buildpack` | Buildpack name or Git URL — type: string | +| `manifest` | Path to the manifest — type: string | +| `skip_ssl_validation` | Skip SSL validation — type: boolean | + +### Shared options + +| `cleanup` | Clean up build artifacts from the Git working directory before the deployment — type: boolean | +| `run` | Commands to execute after the deployment finished successfully — type: string or array of strings | + +## Environment variables + +All options can be given as environment variables if prefixed with `CLOUDFOUNDRY_`. + +For example, `password` can be given as `CLOUDFOUNDRY_PASSWORD=`. + +{% include deploy/secrets.md name="password" env_name="CLOUDFOUNDRY_PASSWORD" %} diff --git a/_includes/deploy/providers/boxfuse.md b/_includes/deploy/providers/boxfuse.md new file mode 100644 index 00000000000..98779acb3ec --- /dev/null +++ b/_includes/deploy/providers/boxfuse.md @@ -0,0 +1,45 @@ +{% unless include.minimal == false %} +For a minimal configuration, add the following to your `.travis.yml`: + +```yaml +deploy: + provider: boxfuse + user: + secret: + edge: true # opt in to dpl v2 +``` +{: data-file=".travis.yml"} + + + +{{ include.content }} +{% endunless %} + +## Status + +Support for deployments to Boxfuse is in **alpha**. Please see [Maturity Levels](/user/deployment-v2/#maturity-levels) for details. +## Known options + +Use the following options to further configure the deployment. + +| `user` | **required**, type: string | +| `secret` | **required**, **secret**, type: string | +| `payload` | type: string | +| `app` | type: string | +| `version` | type: string | +| `env` | type: string | +| `config_file` | type: string, alias: `configfile` (deprecated, please use `config_file`) | +| `extra_args` | type: string | + +### Shared options + +| `cleanup` | Clean up build artifacts from the Git working directory before the deployment — type: boolean | +| `run` | Commands to execute after the deployment finished successfully — type: string or array of strings | + +## Environment variables + +All options can be given as environment variables if prefixed with `BOXFUSE_`. + +For example, `secret` can be given as `BOXFUSE_SECRET=`. + +{% include deploy/secrets.md name="secret" env_name="BOXFUSE_SECRET" %} \ No newline at end of file diff --git a/_includes/deploy/providers/cargo.md b/_includes/deploy/providers/cargo.md new file mode 100644 index 00000000000..d3809add71f --- /dev/null +++ b/_includes/deploy/providers/cargo.md @@ -0,0 +1,38 @@ +{% unless include.minimal == false %} +For a minimal configuration, add the following to your `.travis.yml`: + +```yaml +deploy: + provider: cargo + token: + edge: true # opt in to dpl v2 +``` +{: data-file=".travis.yml"} + + + +{{ include.content }} +{% endunless %} + +## Status + +Support for deployments to Cargo is **stable**. +## Known options + +Use the following options to further configure the deployment. + +| `token` | Cargo registry API token — **required**, **secret**, type: string | +| `allow_dirty` | Allow publishing from a dirty git working directory — type: boolean | + +### Shared options + +| `cleanup` | Clean up build artifacts from the Git working directory before the deployment — type: boolean | +| `run` | Commands to execute after the deployment finished successfully — type: string or array of strings | + +## Environment variables + +All options can be given as environment variables if prefixed with `CARGO_`. + +For example, `token` can be given as `CARGO_TOKEN=`. + +{% include deploy/secrets.md name="token" env_name="CARGO_TOKEN" %} diff --git a/_includes/deploy/providers/chef_supermarket.md b/_includes/deploy/providers/chef_supermarket.md new file mode 100644 index 00000000000..f0d3051e96f --- /dev/null +++ b/_includes/deploy/providers/chef_supermarket.md @@ -0,0 +1,36 @@ +{% unless include.minimal == false %} +For a minimal configuration, add the following to your `.travis.yml`: + +```yaml +deploy: + provider: chef_supermarket + user_id: + category: + edge: true # opt in to dpl v2 +``` +{: data-file=".travis.yml"} + + + +{{ include.content }} +{% endunless %} + +## Status + +Support for deployments to Chef Supermarket is in **alpha**. Please see [Maturity Levels](/user/deployment-v2/#maturity-levels) for details. +## Known options + +Use the following options to further configure the deployment. + +| `user_id` | Chef Supermarket user name — **required**, type: string | +| `name` | Cookbook name — type: string, alias: `cookbook_name` (deprecated, please use `name`), note: defaults to the name given in metadata.json or metadata.rb | +| `category` | Cookbook category in Supermarket — **required**, type: string, alias: `cookbook_category` (deprecated, please use `category`), see: [https://docs.getchef.com/knife_cookbook_site.html#id12](https://docs.getchef.com/knife_cookbook_site.html#id12) | +| `client_key` | Client API key file name — type: string, default: `client.pem` | +| `dir` | Directory containing the cookbook — type: string, default: `.` | + +### Shared options + +| `cleanup` | Clean up build artifacts from the Git working directory before the deployment — type: boolean | +| `run` | Commands to execute after the deployment finished successfully — type: string or array of strings | + + diff --git a/_includes/deploy/providers/cloud66.md b/_includes/deploy/providers/cloud66.md new file mode 100644 index 00000000000..8cdd9ec964c --- /dev/null +++ b/_includes/deploy/providers/cloud66.md @@ -0,0 +1,37 @@ +{% unless include.minimal == false %} +For a minimal configuration, add the following to your `.travis.yml`: + +```yaml +deploy: + provider: cloud66 + redeployment_hook: + edge: true # opt in to dpl v2 +``` +{: data-file=".travis.yml"} + + + +{{ include.content }} +{% endunless %} + +## Status + +Support for deployments to Cloud66 is in **alpha**. Please see [Maturity Levels](/user/deployment-v2/#maturity-levels) for details. +## Known options + +Use the following options to further configure the deployment. + +| `redeployment_hook` | The redeployment hook URL — **required**, **secret**, type: string | + +### Shared options + +| `cleanup` | Clean up build artifacts from the Git working directory before the deployment — type: boolean | +| `run` | Commands to execute after the deployment finished successfully — type: string or array of strings | + +## Environment variables + +All options can be given as environment variables if prefixed with `CLOUD66_`. + +For example, `redeployment_hook` can be given as `CLOUD66_REDEPLOYMENT_HOOK=`. + +{% include deploy/secrets.md name="redeployment_hook" env_name="CLOUD66_REDEPLOYMENT_HOOK" %} \ No newline at end of file diff --git a/_includes/deploy/providers/cloudfiles.md b/_includes/deploy/providers/cloudfiles.md new file mode 100644 index 00000000000..0ae34b1bb1f --- /dev/null +++ b/_includes/deploy/providers/cloudfiles.md @@ -0,0 +1,45 @@ +{% unless include.minimal == false %} +For a minimal configuration, add the following to your `.travis.yml`: + +```yaml +deploy: + provider: cloudfiles + username: + api_key: + region: + container: + edge: true # opt in to dpl v2 +``` +{: data-file=".travis.yml"} + + + +{{ include.content }} +{% endunless %} + +## Status + +Support for deployments to Cloud Files is in **alpha**. Please see [Maturity Levels](/user/deployment-v2/#maturity-levels) for details. +## Known options + +Use the following options to further configure the deployment. + +| `username` | Rackspace username — **required**, type: string | +| `api_key` | Rackspace API key — **required**, **secret**, type: string | +| `region` | Cloudfiles region — **required**, type: string, known values: `ord`, `dfw`, `syd`, `iad`, `hkg` | +| `container` | Name of the container that files will be uploaded to — **required**, type: string | +| `glob` | Paths to upload — type: string, default: `**/*` | +| `dot_match` | Upload hidden files starting a dot — type: boolean | + +### Shared options + +| `cleanup` | Clean up build artifacts from the Git working directory before the deployment — type: boolean | +| `run` | Commands to execute after the deployment finished successfully — type: string or array of strings | + +## Environment variables + +All options can be given as environment variables if prefixed with `CLOUDFILES_`. + +For example, `api_key` can be given as `CLOUDFILES_API_KEY=`. + +{% include deploy/secrets.md name="api_key" env_name="CLOUDFILES_API_KEY" %} \ No newline at end of file diff --git a/_includes/deploy/providers/cloudformation.md b/_includes/deploy/providers/cloudformation.md new file mode 100644 index 00000000000..0d965061622 --- /dev/null +++ b/_includes/deploy/providers/cloudformation.md @@ -0,0 +1,57 @@ +{% unless include.minimal == false %} +For a minimal configuration, add the following to your `.travis.yml`: + +```yaml +deploy: + provider: cloudformation + access_key_id: + secret_access_key: + template: