Improve tool installation, dockerize #16
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
# yamllint disable rule:line-length | |
# yamllint disable rule:comments-indentation | |
name: Test | |
on: | |
pull_request: | |
branches: ["*"] | |
push: | |
branches: ["devel"] | |
tags: ["*"] | |
jobs: | |
lint: | |
name: lint | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Install tools | |
shell: bash | |
run: ./bin/lintball install-tools | |
- name: Run lintball | |
shell: bash | |
run: ./bin/lintball check | |
test: | |
name: bats unit tests (${{ matrix.runs-on }}) | |
strategy: | |
fail-fast: false | |
matrix: | |
runs-on: | |
- ubuntu-latest | |
- macos-latest | |
runs-on: ${{ matrix.runs-on }} | |
steps: | |
- name: Install macOS dependencies | |
if: ${{ runner.os == 'macOS' }} | |
run: brew install bash | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- uses: actions/setup-node@v2 | |
with: | |
node-version: "16.x" | |
- uses: dtolnay/rust-toolchain@nightly | |
- name: Install tools | |
shell: bash | |
run: | | |
set -euxo pipefail | |
cd tools | |
npm ci --verbose | |
# seems to be necessary for node >= 15 | |
[ -n "$(which bats)" ] || npm link bats --verbose | |
cd .. | |
./bin/lintball install-tools --all | |
- name: Run tests | |
run: | | |
cd tools | |
npm run test | |
install-local: | |
name: test local installation | |
runs-on: ubuntu-latest | |
steps: | |
- name: Install lintball | |
run: npm install "https://github.com/${GITHUB_REPOSITORY}.git#${GITHUB_SHA}" | |
- name: Install tools | |
run: npx lintball install-tools --all | |
- name: Run lintball | |
run: npx lintball --help | |
install-global: | |
name: test global installation | |
runs-on: ubuntu-latest | |
steps: | |
- name: Install lintball | |
run: sudo npm install -g "https://github.com/${GITHUB_REPOSITORY}.git#${GITHUB_SHA}" | |
- name: Install tools | |
run: sudo lintball install-tools --all | |
- name: Run lintball | |
run: lintball --help | |
build-docker: | |
name: "build & push docker" | |
runs-on: ubuntu-latest | |
needs: [lint, test, install-local, install-global] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v2 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Login to Docker Hub | |
uses: docker/login-action@v2 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: "Build & push" | |
run: ./scripts/build-and-push-docker-images.bash |