Add linting of GitHub Action workflow files #2386
Workflow file for this run
This file contains 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
name: PR | |
on: pull_request | |
concurrency: | |
group: ${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
actionlint: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Check workflow files | |
uses: docker://ponylang/shared-docker-ci-actionlint:20230810 | |
with: | |
args: -color | |
superlinter: | |
name: Lint bash, docker, markdown, and yaml | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Lint codebase | |
uses: docker://github/super-linter:v3.8.3 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
VALIDATE_ALL_CODEBASE: true | |
VALIDATE_BASH: true | |
VALIDATE_DOCKERFILE: true | |
VALIDATE_MD: true | |
VALIDATE_YAML: true | |
validate-musl-docker-latest-image-builds: | |
name: Validate musl Docker image builds | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Docker build | |
run: "docker build --pull --file=.dockerfiles/latest/x86-64-unknown-linux-musl/Dockerfile ." | |
validate-gnu-docker-latest-image-builds: | |
name: Validate GNU Docker image builds | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Docker build | |
run: "docker build --pull --file=.dockerfiles/latest/x86-64-unknown-linux-gnu/Dockerfile ." | |
validate-windows-docker-latest-image-builds: | |
name: Validate Windows Docker image builds | |
runs-on: windows-2022 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Docker build | |
run: "docker build --pull .dockerfiles/latest/x86-64-pc-windows-msvc" | |
validate-musl-docker-release-image-builds: | |
name: Validate musl Docker release image builds | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Docker build | |
run: "docker build --pull --file=.dockerfiles/release/x86-64-unknown-linux-musl/Dockerfile ." | |
validate-gnu-docker-release-image-builds: | |
name: Validate GNU Docker release image builds | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Docker build | |
run: "docker build --pull --file=.dockerfiles/release/x86-64-unknown-linux-gnu/Dockerfile ." | |
validate-windows-docker-release-image-builds: | |
name: Validate Windows Docker release image builds | |
runs-on: windows-2022 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Docker build | |
run: "docker build --pull .dockerfiles/release/x86-64-pc-windows-msvc" | |
verify-changelog: | |
name: Verify CHANGELOG is valid | |
runs-on: ubuntu-latest | |
container: | |
image: ponylang/changelog-tool:release | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Verify CHANGELOG | |
run: changelog-tool verify | |
x86_64-linux: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- image: ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu22.04-builder:20230806 | |
name: x86-64 Linux glibc | |
debugger: lldb | |
- image: ponylang/ponyc-ci-x86-64-unknown-linux-musl-builder:20230808 | |
name: x86-64 Linux musl | |
debugger: gdb | |
name: ${{ matrix.name }} | |
container: | |
image: ${{ matrix.image }} | |
options: --user pony --cap-add=SYS_PTRACE --security-opt seccomp=unconfined | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Restore Libs Cache | |
id: restore-libs | |
uses: actions/cache/restore@v3 | |
with: | |
path: build/libs | |
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'libs/CMakeLists.txt') }} | |
- name: Build Libs | |
if: steps.restore-libs.outputs.cache-hit != 'true' | |
run: make libs build_flags=-j8 | |
- name: Save Libs Cache | |
if: steps.restore-libs.outputs.cache-hit != 'true' | |
uses: actions/cache/save@v3 | |
with: | |
path: build/libs | |
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'libs/CMakeLists.txt') }} | |
- name: Build Debug Runtime | |
run: | | |
make configure arch=x86-64 config=debug | |
make build config=debug | |
- name: Test with Debug Runtime | |
run: make test-ci config=debug usedebugger='${{ matrix.debugger }}' | |
- name: Build Release Runtime | |
run: | | |
make configure arch=x86-64 config=release | |
make build config=release | |
- name: Test with Release Runtime | |
run: make test-ci config=release usedebugger='${{ matrix.debugger }}' | |
riscv64-linux: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- image: ponylang/ponyc-ci-cross-riscv64:20230808 | |
name: riscv64 Linux glibc | |
name: ${{ matrix.name }} | |
container: | |
image: ${{ matrix.image }} | |
options: --user pony --cap-add=SYS_PTRACE --security-opt seccomp=unconfined | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Restore Libs Cache | |
id: restore-libs | |
uses: actions/cache/restore@v3 | |
with: | |
path: build/libs | |
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'libs/CMakeLists.txt') }} | |
- name: Build Libs | |
if: steps.restore-libs.outputs.cache-hit != 'true' | |
run: make libs build_flags=-j8 | |
- name: Save Libs Cache | |
if: steps.restore-libs.outputs.cache-hit != 'true' | |
uses: actions/cache/save@v3 | |
with: | |
path: build/libs | |
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'libs/CMakeLists.txt') }} | |
- name: Build Debug Runtime | |
run: | | |
make configure config=debug | |
make build config=debug | |
- name: Build Debug Cross-Compiled Runtime | |
run: make cross-libponyrt config=debug CC=riscv64-linux-gnu-gcc-10 CXX=riscv64-linux-gnu-g++-10 arch=rv64gc cross_cflags="-march=rv64gc -mtune=rocket" cross_lflags="-march=riscv64" | |
- name: Test with Debug Cross-Compiled Runtime | |
run: make test-cross-ci config=debug PONYPATH=../rv64gc/debug cross_triple=riscv64-unknown-linux-gnu cross_arch=rv64gc cross_cpu=generic-rv64 cross_linker=riscv64-linux-gnu-gcc-10 cross_ponyc_args='--abi=lp64d --features=+m,+a,+f,+d,+c --link-ldcmd=bfd' cross_runner="qemu-riscv64 -L /usr/riscv64-linux-gnu/lib/" | |
- name: Build Release Runtime | |
run: | | |
make configure config=release | |
make build config=release | |
- name: Build Release Cross-Compiled Runtime | |
run: make cross-libponyrt config=release CC=riscv64-linux-gnu-gcc-10 CXX=riscv64-linux-gnu-g++-10 arch=rv64gc cross_cflags="-march=rv64gc -mtune=rocket" cross_lflags="-march=riscv64" | |
- name: Test with Release Cross-Compiled Runtime | |
run: make test-cross-ci config=release PONYPATH=../rv64gc/release cross_triple=riscv64-unknown-linux-gnu cross_arch=rv64gc cross_cpu=generic-rv64 cross_linker=riscv64-linux-gnu-gcc-10 cross_ponyc_args='--abi=lp64d --features=+m,+a,+f,+d,+c --link-ldcmd=bfd' cross_runner="qemu-riscv64 -L /usr/riscv64-linux-gnu/lib/" | |
arm-linux: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- image: ponylang/ponyc-ci-cross-arm:20230809 | |
name: arm Linux glibc | |
name: ${{ matrix.name }} | |
container: | |
image: ${{ matrix.image }} | |
options: --user pony --cap-add=SYS_PTRACE --security-opt seccomp=unconfined | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Restore Libs Cache | |
id: restore-libs | |
uses: actions/cache/restore@v3 | |
with: | |
path: build/libs | |
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'libs/CMakeLists.txt') }} | |
- name: Build Libs | |
if: steps.restore-libs.outputs.cache-hit != 'true' | |
run: make libs build_flags=-j8 | |
- name: Save Libs Cache | |
if: steps.restore-libs.outputs.cache-hit != 'true' | |
uses: actions/cache/save@v3 | |
with: | |
path: build/libs | |
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'libs/CMakeLists.txt') }} | |
- name: Build Debug Runtime | |
run: | | |
make configure config=debug | |
make build config=debug | |
- name: Build Debug Cross-Compiled Runtime | |
run: make cross-libponyrt config=debug CC=arm-linux-gnueabi-gcc CXX=arm-linux-gnueabi-g++ arch=armv7-a cross_cflags="-march=armv7-a -mtune=cortex-a9" cross_lflags="-O3;-march=arm" | |
- name: Test with Debug Cross-Compiled Runtime | |
run: make test-cross-ci config=debug PONYPATH=../armv7-a/debug cross_triple=arm-unknown-linux-gnueabi cross_arch=armv7-a cross_cpu=cortex-a9 cross_linker=arm-linux-gnueabi-gcc cross_runner="qemu-arm-static -cpu cortex-a9 -L /usr/local/arm-linux-gnueabi/libc" | |
- name: Build Release Runtime | |
run: | | |
make configure config=release | |
make build config=release | |
- name: Build Release Cross-Compiled Runtime | |
run: make cross-libponyrt config=release CC=arm-linux-gnueabi-gcc CXX=arm-linux-gnueabi-g++ arch=armv7-a cross_cflags="-march=armv7-a -mtune=cortex-a9" cross_lflags="-O3;-march=arm" | |
- name: Test with Release Cross-Compiled Runtime | |
run: make test-cross-ci config=release PONYPATH=../armv7-a/release cross_triple=arm-unknown-linux-gnueabi cross_arch=armv7-a cross_cpu=cortex-a9 cross_linker=arm-linux-gnueabi-gcc cross_runner="qemu-arm-static -cpu cortex-a9 -L /usr/local/arm-linux-gnueabi/libc" | |
armhf-linux: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- image: ponylang/ponyc-ci-cross-armhf:20230809 | |
name: armhf Linux glibc | |
name: ${{ matrix.name }} | |
container: | |
image: ${{ matrix.image }} | |
options: --user pony --cap-add=SYS_PTRACE --security-opt seccomp=unconfined | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Restore Libs Cache | |
id: restore-libs | |
uses: actions/cache/restore@v3 | |
with: | |
path: build/libs | |
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'libs/CMakeLists.txt') }} | |
- name: Build Libs | |
if: steps.restore-libs.outputs.cache-hit != 'true' | |
run: make libs build_flags=-j8 | |
- name: Save Libs Cache | |
if: steps.restore-libs.outputs.cache-hit != 'true' | |
uses: actions/cache/save@v3 | |
with: | |
path: build/libs | |
key: libs-${{ matrix.image }}-${{ hashFiles('Makefile', 'CMakeLists.txt', 'libs/CMakeLists.txt') }} | |
- name: Build Debug Runtime | |
run: | | |
make configure config=debug | |
make build config=debug | |
- name: Build Debug Cross-Compiled Runtime | |
run: make cross-libponyrt config=debug CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ arch=armv7-a cross_cflags="-march=armv7-a -mtune=cortex-a9" cross_lflags="-O3;-march=arm" | |
- name: Test with Debug Cross-Compiled Runtime | |
run: make test-cross-ci config=debug PONYPATH=../armv7-a/debug cross_triple=arm-unknown-linux-gnueabihf cross_arch=armv7-a cross_cpu=cortex-a9 cross_linker=arm-linux-gnueabihf-gcc cross_runner="qemu-arm-static -cpu cortex-a9 -L /usr/local/arm-linux-gnueabihf/libc" | |
- name: Build Release Runtime | |
run: | | |
make configure config=release | |
make build config=release | |
- name: Build Release Cross-Compiled Runtime | |
run: make cross-libponyrt config=release CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ arch=armv7-a cross_cflags="-march=armv7-a -mtune=cortex-a9" cross_lflags="-O3;-march=arm" | |
- name: Test with Release Cross-Compiled Runtime | |
run: make test-cross-ci config=release PONYPATH=../armv7-a/release cross_triple=arm-unknown-linux-gnueabihf cross_arch=armv7-a cross_cpu=cortex-a9 cross_linker=arm-linux-gnueabihf-gcc cross_runner="qemu-arm-static -cpu cortex-a9 -L /usr/local/arm-linux-gnueabihf/libc" |