-
Notifications
You must be signed in to change notification settings - Fork 13.3k
Transition from TravisCI to GitHub CI #7444
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
15 commits
Select commit
Hold shift + click to select a range
935809e
Transition from TravisCI to GitHub CI
earlephilhower bf6def2
Merge branch 'master' of https://github.com/esp8266/Arduino into toghci
earlephilhower 35ef755
Remove non-CI changes
earlephilhower 2e82f33
Change docs to use a GH Deploy Key
earlephilhower 7a07644
Undo add'l documentation change
earlephilhower 81d9689
Update upload_release.py
earlephilhower 42d4a97
Add copious documentation to YML files
earlephilhower fcf2a6b
Update debug6.sh to remove dead line
earlephilhower ab9cbf0
Merge branch 'master' into toghci
d-a-v b1b08e8
Re-add basic TravisCI testing
earlephilhower 08c1ce8
Halve PIO runs, they're 2x slower than Arduino
earlephilhower b338cd8
Merge branch 'master' into toghci
earlephilhower 2d08c09
Use single GitHub Secret for deployment
earlephilhower a5aa3d6
Update package and update script
earlephilhower 21ed7ee
Remove my local repo from testing, validated naming
earlephilhower File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,259 @@ | ||
# Run whenever a PR is generated or updated. | ||
|
||
# Most jobs check out the code, ensure Python3 is installed, and for build | ||
# tests the ESP8266 toolchain is cached when possible to speed up execution. | ||
|
||
name: ESP8266 Arduino CI | ||
|
||
on: | ||
pull_request: | ||
|
||
|
||
jobs: | ||
|
||
# Run 8 parallel jobs for the default build of all examples. | ||
build-linux: | ||
name: Build ${{ matrix.chunk }} | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
chunk: [0, 1, 2, 3, 4, 5, 6, 7] | ||
steps: | ||
- uses: actions/checkout@v2 | ||
with: | ||
submodules: true | ||
- uses: actions/setup-python@v2 | ||
with: | ||
python-version: '3.x' | ||
- name: Cache Linux toolchain | ||
id: cache-linux | ||
uses: actions/cache@v2 | ||
with: | ||
path: ./tools/dist | ||
key: key-linux-toolchain | ||
- name: Build Sketches | ||
env: | ||
TRAVIS_BUILD_DIR: ${{ github.workspace }} | ||
TRAVIS_TAG: ${{ github.ref }} | ||
BUILD_PARITY: custom | ||
mod: 8 | ||
rem: ${{ matrix.chunk }} | ||
run: | | ||
bash ./tests/build.sh | ||
|
||
|
||
# Cover the debug and IPv6 cases by enabling both and running 8 parallel jobs | ||
# over all example code. | ||
build-debug-ipv6: | ||
name: Debug IPv6 ${{ matrix.chunk }} | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
chunk: [0, 1, 2, 3, 4, 5, 6, 7] | ||
steps: | ||
- uses: actions/checkout@v2 | ||
with: | ||
submodules: true | ||
- uses: actions/setup-python@v2 | ||
with: | ||
python-version: '3.x' | ||
- name: Cache Linux toolchain | ||
id: cache-linux | ||
uses: actions/cache@v2 | ||
with: | ||
path: ./tools/dist | ||
key: key-linux-toolchain | ||
- name: Build Sketches | ||
env: | ||
TRAVIS_BUILD_DIR: ${{ github.workspace }} | ||
TRAVIS_TAG: ${{ github.ref }} | ||
BUILD_PARITY: custom | ||
mod: 8 | ||
rem: ${{ matrix.chunk }} | ||
run: | | ||
bash ./tests/debug6.sh | ||
|
||
|
||
# Single build under Windows to ensure the Win toolchain is good. | ||
build-windows: | ||
name: Windows | ||
runs-on: windows-latest | ||
steps: | ||
- uses: actions/checkout@v2 | ||
with: | ||
submodules: true | ||
- uses: actions/setup-python@v2 | ||
with: | ||
python-version: '3.x' | ||
- name: Cache Windows toolchain | ||
id: cache-windows | ||
uses: actions/cache@v2 | ||
with: | ||
path: ./tools/dist | ||
key: key-windows-toolchain | ||
- name: Build Sketch | ||
env: | ||
TRAVIS_BUILD_DIR: ${{ github.workspace }} | ||
TRAVIS_TAG: ${{ github.ref }} | ||
WINDOWS: 1 | ||
BUILD_PARITY: custom | ||
mod: 500 | ||
rem: 1 | ||
run: | | ||
# Windows has python3 already installed, but it's called "python". | ||
# Copy python.exe to the proper name so scripts "just work". | ||
copy (get-command python).source (get-command python).source.Replace("python.exe", "python3.exe") | ||
bash ./tests/build.sh | ||
|
||
|
||
# Single build under macOS to ensure the Mac toolchain is good. | ||
build-mac: | ||
name: Mac | ||
runs-on: macOS-latest | ||
steps: | ||
- uses: actions/checkout@v2 | ||
with: | ||
submodules: true | ||
- uses: actions/setup-python@v2 | ||
with: | ||
python-version: '3.x' | ||
- name: Cache Mac toolchain | ||
id: cache-mac | ||
uses: actions/cache@v2 | ||
with: | ||
path: ./tools/dist | ||
key: key-mac-toolchain | ||
- name: Build Sketch | ||
env: | ||
TRAVIS_BUILD_DIR: ${{ github.workspace }} | ||
TRAVIS_TAG: ${{ github.ref }} | ||
MACOSX: 1 | ||
BUILD_PARITY: custom | ||
mod: 500 | ||
rem: 1 | ||
run: | | ||
bash ./tests/build.sh | ||
|
||
|
||
# Run a few Platform.IO jobs (not full suite) to check PIO integration. | ||
build-pio: | ||
name: Build Platform.IO | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v2 | ||
with: | ||
submodules: true | ||
- uses: actions/setup-python@v2 | ||
with: | ||
python-version: '3.x' | ||
- name: Build subset on Platform.IO | ||
env: | ||
TRAVIS_BUILD_DIR: ${{ github.workspace }} | ||
TRAVIS_TAG: ${{ github.ref }} | ||
BUILD_PARITY: custom | ||
mod: 42 # Picked at random to give 4-5 builds and exit. | ||
rem: 13 | ||
run: | | ||
sudo apt-get install python3-pip python3-setuptools | ||
PATH=/home/runner/.local/bin:$PATH bash ./tests/platformio.sh | ||
|
||
|
||
# Run host test suite under valgrind for runtime checking of code. | ||
host-tests: | ||
name: Host tests | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v2 | ||
with: | ||
submodules: true | ||
- uses: actions/setup-python@v2 | ||
with: | ||
python-version: '3.x' | ||
- name: Run host tests | ||
env: | ||
TRAVIS_BUILD_DIR: ${{ github.workspace }} | ||
TRAVIS_TAG: ${{ github.ref }} | ||
run: | | ||
sudo apt-get install valgrind lcov | ||
bash ./tests/ci/host_test.sh | ||
|
||
|
||
# Ensure Sphinx can build the documentation properly. | ||
documentation: | ||
name: Documentation | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v2 | ||
with: | ||
submodules: true | ||
- uses: actions/setup-python@v2 | ||
with: | ||
python-version: '3.x' | ||
- name: Build documentation | ||
env: | ||
TRAVIS_BUILD_DIR: ${{ github.workspace }} | ||
TRAVIS_TAG: ${{ github.ref }} | ||
run: | | ||
sudo apt-get install python3-pip python3-setuptools | ||
# GitHub CI installs pip3 and setuptools outside the path. | ||
# Update the path to include them and run. | ||
PATH=/home/runner/.local/bin:$PATH pip3 install --user -r doc/requirements.txt | ||
PATH=/home/runner/.local/bin:$PATH bash ./tests/ci/build_docs.sh | ||
|
||
|
||
# Standard Arduino formatting in all the examples | ||
style-check: | ||
name: Style and formatting | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v2 | ||
with: | ||
submodules: true | ||
- uses: actions/setup-python@v2 | ||
with: | ||
python-version: '3.x' | ||
- name: Style check | ||
env: | ||
TRAVIS_BUILD_DIR: ${{ github.workspace }} | ||
TRAVIS_TAG: ${{ github.ref }} | ||
run: | | ||
sudo apt-get install astyle | ||
bash ./tests/ci/style_check.sh | ||
|
||
|
||
# Quick test that the mocking builds succeed | ||
mock-check: | ||
name: Mock trivial test | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v2 | ||
with: | ||
submodules: true | ||
- uses: actions/setup-python@v2 | ||
with: | ||
python-version: '3.x' | ||
- name: Mock build | ||
env: | ||
TRAVIS_BUILD_DIR: ${{ github.workspace }} | ||
TRAVIS_TAG: ${{ github.ref }} | ||
run: | | ||
bash ./tests/buildm.sh | ||
|
||
|
||
# Ensure no manual edits to boards.txt | ||
boards-check: | ||
name: Boards.txt check | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v2 | ||
with: | ||
submodules: true | ||
- uses: actions/setup-python@v2 | ||
with: | ||
python-version: '3.x' | ||
- name: Boards.txt diff | ||
env: | ||
TRAVIS_BUILD_DIR: ${{ github.workspace }} | ||
TRAVIS_TAG: ${{ github.ref }} | ||
run: | | ||
bash ./tests/ci/build_boards.sh |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
# Whenever a release is published from a draft, this will update the | ||
# master Arduino JSON file to add its new entry. | ||
|
||
# We keep the master JSON file in another repo, so we need to use a pre-set | ||
# Deployment SSH key to be able to push a change to the repo. | ||
|
||
#### Steps to follow when you need to make a new SSH key for upload (not | ||
#### normally needed!) | ||
|
||
# Generate a new SSH key private/public pair | ||
|
||
# ssh-keygen -t rsa -b 4096 -C "[email protected]" -f ./deploy_rsa | ||
|
||
# Upload deploy_rsa.pub to the *ESP8266.GITHUB.IO* repo as a deployment key | ||
|
||
# Convert the private key to base64 (to remove line breaks and allow easier | ||
# usage in the script as an environment variable) | ||
|
||
# base64.exe -w 0 < deploy_rsa > deploy_rsa.b64 | ||
|
||
# Copy the contents of the .b64 file to the clipboard, make a new GitHub | ||
# secret in the ESP8266/Arduino repo called "GHCI_DEPLOY_KEY" and paste | ||
# the B64 code into the variable. | ||
|
||
name: ESP8266 Arduino Release Publisher | ||
|
||
on: | ||
release: | ||
types: [published] | ||
|
||
jobs: | ||
package: | ||
name: Update master JSON file | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v2 | ||
with: | ||
submodules: true | ||
- uses: actions/setup-python@v2 | ||
with: | ||
python-version: '3.x' | ||
- name: Set GIT tag name | ||
run: | | ||
echo "::set-env name=TRAVIS_TAG::$(git describe --exact-match --tags)" | ||
- name: Deploy updated JSON | ||
env: | ||
TRAVIS_BUILD_DIR: ${{ github.workspace }} | ||
BUILD_TYPE: package | ||
CI_GITHUB_API_KEY: ${{ secrets.GITHUB_TOKEN }} | ||
GHCI_DEPLOY_KEY: ${{ secrets.GHCI_DEPLOY_KEY }} | ||
run: | | ||
bash ./tests/ci/build_package.sh | ||
# Only the regenerated JSON file will be used, but it's simpler | ||
# than looking for it in a GH release. | ||
bash ./package/deploy_package_index.sh | ||
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
# Whenever a tag of the form #.xxxx is pushed against master, generate a | ||
# draft release and upload the ZIP and JSON file to it. Maintainers then | ||
# will manually add the changelist and publish it. | ||
|
||
name: ESP8266 Arduino Draft Release | ||
|
||
on: | ||
push: | ||
tags: | ||
# Run for tags of the x.x.x* form (i.e. 3.0.0, 3.0.0-beta, etc.). | ||
- '[0-9]+.[0-9]+.[0-9]+*' | ||
devyte marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
jobs: | ||
package: | ||
name: Package | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v2 | ||
with: | ||
submodules: true | ||
- uses: actions/setup-python@v2 | ||
with: | ||
python-version: '3.x' | ||
- name: Set GIT tag name | ||
run: | | ||
# Sets an environment variable used in the next steps | ||
echo "::set-env name=TRAVIS_TAG::$(git describe --exact-match --tags)" | ||
- name: Build package JSON | ||
env: | ||
TRAVIS_BUILD_DIR: ${{ github.workspace }} | ||
BUILD_TYPE: package | ||
CI_GITHUB_API_KEY: ${{ secrets.GITHUB_TOKEN }} | ||
run: | | ||
bash ./tests/ci/build_package.sh | ||
pip3 install PyGithub | ||
# Create a draft release and upload the ZIP and JSON files. | ||
# This draft is not visible to normal users and needs to be | ||
# updated manually with release notes and published from the | ||
# GitHub web interface. | ||
python3 ./package/upload_release.py --user "$GITHUB_ACTOR" --repo "$GITHUB_REPOSITORY" --token "$CI_GITHUB_API_KEY" --tag "$TRAVIS_TAG" --name "Release $TRAVIS_TAG" --msg "Update the draft with release notes before publishing." package/versions/*/*.zip package/versions/*/package_esp8266com_index.json |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.