diff options
| author | KOBAYASHI Shuji <[email protected]> | 2020-12-20 15:18:46 +0900 |
|---|---|---|
| committer | KOBAYASHI Shuji <[email protected]> | 2020-12-20 15:31:15 +0900 |
| commit | 74e1d1ea02283f3f72ee6613e2433ceb9a8d4597 (patch) | |
| tree | 3afe5d4de99bd83bb9dfad2ba9148195c6fe58b8 /.github | |
| parent | a5283125424eeaa4f0436c195face0550c09a57f (diff) | |
| download | mruby-74e1d1ea02283f3f72ee6613e2433ceb9a8d4597.tar.gz mruby-74e1d1ea02283f3f72ee6613e2433ceb9a8d4597.zip | |
Reorganize GitHub Actions configuration [skip travis][skip appveyor]
* Skip if commit message contains `ci skip`, `skip ci`, or `skip gha`
ENCLOSED WITH BRACKETS (excluding lint job).
* Separate build and test. This is because builds can be run in parallel,
but running tests in parallel can cause logs to get mixed up or not
finished.
* Don't use Chocolatey because it seems to take 1-2 minutes to start up.
* Use the cache better.
* Use `actions/checkout@v2` instead of `actions/checkout@v1`.
* Remove unnecessary package installation.
* Remove unnecessary flag settings.
* Remove `-j` for rake because it doesn't seem to have any effect.
* Rename `main.yml` to `oss-fuzz.yml` to clarify.
Diffstat (limited to '.github')
| -rw-r--r-- | .github/workflows/build.yml | 150 | ||||
| -rw-r--r-- | .github/workflows/codeql-analysis.yml | 4 | ||||
| -rw-r--r-- | .github/workflows/oss-fuzz.yml (renamed from .github/workflows/main.yml) | 4 |
3 files changed, 106 insertions, 52 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2a3b8d18c..404fd8fe3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,105 +3,151 @@ name: Build & Test on: [push, pull_request] jobs: + Check-Skip: + if: | + !contains(github.event.head_commit.message, '[ci skip]') && + !contains(github.event.head_commit.message, '[skip ci]') && + !contains(github.event.head_commit.message, '[skip gha]') + runs-on: ubuntu-latest + steps: + - run: echo skip + Ubuntu-1604: + needs: Check-Skip runs-on: ubuntu-16.04 env: MRUBY_CONFIG: ci/gcc-clang + CC: gcc steps: - - uses: actions/checkout@v1 - - name: apt - run: sudo apt install ruby gperf - - name: build and test - run: rake -m -j4 gensym all test + - uses: actions/checkout@v2 + - name: Ruby version + run: ruby -v + - name: Compiler version + run: ${{ env.CC }} --version + - name: Build and Test + run: rake -m && rake test Ubuntu-1804-gcc: + needs: Check-Skip runs-on: ubuntu-18.04 env: MRUBY_CONFIG: ci/gcc-clang CC: gcc - CXX: g++ steps: - - uses: actions/checkout@v1 - - name: apt - run: sudo apt install ruby gperf gcc g++ - - name: build and test - run: rake -m -j4 gensym all test + - uses: actions/checkout@v2 + - name: Ruby version + run: ruby -v + - name: Compiler version + run: ${{ env.CC }} --version + - name: Build and Test + run: rake -m && rake test Ubuntu-1804-clang: + needs: Check-Skip runs-on: ubuntu-18.04 env: MRUBY_CONFIG: ci/gcc-clang CC: clang - CXX: clang++ steps: - - uses: actions/checkout@v1 - - name: apt - run: sudo apt install ruby gperf - - name: build and test - run: rake -m -j4 gensym all test + - uses: actions/checkout@v2 + - name: Ruby version + run: ruby -v + - name: Compiler version + run: ${{ env.CC }} --version + - name: Build and Test + run: rake -m && rake test macOS: + needs: Check-Skip runs-on: macos-latest env: MRUBY_CONFIG: ci/gcc-clang + CC: clang steps: - - uses: actions/checkout@v1 - - name: brew - run: brew install ruby gperf - - name: build and test - run: rake -m -j4 gensym all test + - uses: actions/checkout@v2 + - name: Ruby version + run: ruby -v + - name: Compiler version + run: ${{ env.CC }} --version + - name: Build and Test + run: rake -m && rake test Windows-MinGW: + needs: Check-Skip runs-on: windows-latest env: MRUBY_CONFIG: ci/gcc-clang - CFLAGS: -g -O1 -Wall -Wundef + CC: gcc steps: - - uses: actions/checkout@v1 - - name: chocolatey - run: choco install -y ruby gperf - - name: build - run: rake -E 'STDOUT.sync=true' -j4 gensym all test + - uses: actions/checkout@v2 + - name: Ruby version + run: ruby -v + - name: Compiler version + run: ${{ env.CC }} --version + - name: Build and Test + # If build and test are separated like `rake && rake test`, somehow + # it will be fully built even at `rake test`, so it is not separated. + run: rake -E STDOUT.sync=true test Windows-Cygwin: + needs: Check-Skip runs-on: windows-latest env: - MRUBY_CONFIG: ci/gcc-clang ACTIONS_ALLOW_UNSECURE_COMMANDS: true + MRUBY_CONFIG: ci/gcc-clang + CC: gcc + installer-path: '%TMP%\cygwin-setup.exe' + cygwin-root: C:\cygwin + package-dir: C:\cygwin-package + cache-version: v1 steps: - - uses: actions/checkout@v1 - - uses: actions/cache@v1 + - uses: actions/checkout@v2 + - uses: actions/cache@v2 with: - path: C:\Users\runneradmin\AppData\Local\Temp\chocolatey - key: ${{ runner.os }}-cygwin-chocolatey-${{ matrix.os }}-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-cygwin-chocolatey-${{ matrix.os }}- - ${{ runner.os }}-cygwin-chocolatey- - - name: chocolatey - run: choco install -y cygwin - - name: Install cygwin packages + path: ${{ env.package-dir }} + key: ${{ runner.os }}-cygwin-${{ env.cache-version }} + - name: Download Cygwin installer + shell: cmd + run: > + bitsadmin /transfer download /priority foreground + https://cygwin.com/setup-x86_64.exe ${{ env.installer-path }} + - name: Install Cygwin shell: cmd - run: C:\tools\cygwin\cygwinsetup.exe -qgnNdO -R C:/tools/cygwin -l C:/tools/cygwin/package -s http://mirrors.kernel.org/sourceware/cygwin/ -P gcc-core,gcc-g++,make,gperf,ruby - - name: Set ENV + run: > + ${{ env.installer-path }} + --quiet-mode --no-shortcuts --no-startmenu --no-desktop --no-admin + --only-site --site http://mirrors.kernel.org/sourceware/cygwin/ + --root ${{ env.cygwin-root }} + --local-package-dir ${{ env.package-dir }} + --packages gcc-core,gcc-g++,ruby + - name: Set PATH for Cygwin run: | - echo '::set-env name=PATH::C:\tools\cygwin\bin;C:\tools\cygwin\usr\bin' - - name: build and test + echo '::set-env name=PATH::${{ env.cygwin-root }}\bin;${{ env.cygwin-root }}\usr\bin' + - name: Ruby version shell: cmd - run: C:\tools\cygwin\bin\ruby.exe /usr/bin/rake -E 'STDOUT.sync=true' -m gensym all test + run: ruby -v + - name: Compiler version + run: ${{ env.CC }} --version + - name: Build and Test + shell: cmd + run: | + ruby /usr/bin/rake -E STDOUT.sync=true -m + ruby /usr/bin/rake -E STDOUT.sync=true test + - name: Set PATH for cache archiving (tar) + # set Windows path so that Cygwin tar is not used for cache archiving + run: echo '::set-env name=PATH::C:\windows\System32' Windows-VC: + needs: Check-Skip runs-on: windows-latest env: MRUBY_CONFIG: ci/msvc - # TODO(take-cheeze): Re-enable /O2 - CFLAGS: "/c /nologo /W3 /we4013 /Zi /MD /D_CRT_SECURE_NO_WARNINGS" - CXXFLAGS: "/c /nologo /W3 /Zi /MD /EHs /D_CRT_SECURE_NO_WARNINGS" steps: - - uses: actions/checkout@v1 - - name: chocolatey - run: choco install -y ruby gperf - - name: build and test + - uses: actions/checkout@v2 + - name: Ruby version + run: ruby -v + - name: Build and Test shell: cmd run: | call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat" - rake -E "STDOUT.sync=true" gensym all test + rake -E STDOUT.sync=true -m && rake -E STDOUT.sync=true test diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index ea9f9bd8e..19fb63b35 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -8,6 +8,10 @@ on: jobs: CodeQL-Build: + if: | + !contains(github.event.head_commit.message, '[ci skip]') && + !contains(github.event.head_commit.message, '[skip ci]') && + !contains(github.event.head_commit.message, '[skip gha]') runs-on: ubuntu-latest diff --git a/.github/workflows/main.yml b/.github/workflows/oss-fuzz.yml index 60414e7dc..8f2b24f17 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/oss-fuzz.yml @@ -2,6 +2,10 @@ name: CIFuzz on: [pull_request] jobs: Fuzzing: + if: | + !contains(github.event.head_commit.message, '[ci skip]') && + !contains(github.event.head_commit.message, '[skip ci]') && + !contains(github.event.head_commit.message, '[skip gha]') runs-on: ubuntu-latest steps: - name: Build Fuzzers |
