feat: go - https #94
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
--- | |
# SPDX-FileCopyrightText: © 2024 Sebastian Davids <[email protected]> | |
# SPDX-License-Identifier: Apache-2.0 | |
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions | |
name: ci | |
on: # yamllint disable-line rule:truthy | |
push: | |
branches: | |
- main | |
- next | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
CARGO_INCREMENTAL: 0 | |
permissions: { } | |
jobs: | |
# unfortunately each job is billed for at least 1 minute in GH Actions | |
# so use one big one to save GH Action minutes | |
# https://docs.github.com/en/billing/managing-billing-for-github-actions/about-billing-for-github-actions | |
lint-build-test: | |
runs-on: ubuntu-22.04 | |
permissions: | |
contents: read | |
steps: | |
- name: Checkout | |
# https://github.com/actions/checkout/releases | |
uses: actions/[email protected] | |
- name: Classify changes | |
# https://github.com/dorny/paths-filter/releases | |
uses: dorny/[email protected] | |
id: changes | |
with: | |
filters: | | |
sh: | |
- '**.sh' | |
yaml: | |
- '**.yaml' | |
js-nodejs-Dockerfile: | |
- .hadolint.yaml | |
- js/nodejs/Dockerfile | |
js-nodejs: | |
- js/nodejs/.npmrc | |
- js/nodejs/.nvmrc | |
- js/nodejs/eslint.config.mjs | |
- js/nodejs/package.json | |
- js/nodejs/package-lock.json | |
- js/nodejs/prettier.config.mjs | |
- 'js/nodejs/src/**.mjs' | |
- 'js/nodejs/test/**.mjs' | |
go-http-Dockerfile: | |
- .hadolint.yaml | |
- go/http/Dockerfile | |
go-http: | |
- go/http/go.mod | |
- go/http/go.sum | |
- 'go/http/**.go' | |
go-https-Dockerfile: | |
- .hadolint.yaml | |
- go/https/Dockerfile | |
go-https: | |
- go/https/go.mod | |
- go/https/go.sum | |
- 'go/https/**.go' | |
rust-http-Dockerfile: | |
- .hadolint.yaml | |
- rust/http/Dockerfile | |
rust-http: | |
- 'rust/http/src/**' | |
- 'rust/http/tests/**' | |
- rust/http/Cargo.lock | |
- rust/http/Cargo.toml | |
- rust/http/rust-toolchain.toml | |
rust-https-Dockerfile: | |
- .hadolint.yaml | |
- rust/https/Dockerfile | |
rust-https: | |
- 'rust/https/src/**' | |
- 'rust/https/tests/**' | |
- rust/https/Cargo.lock | |
- rust/https/Cargo.toml | |
- rust/https/rust-toolchain.toml | |
- if: steps.changes.outputs.sh == 'true' | |
name: Lint shell scripts | |
run: scripts/shellscript_check.sh | |
- if: steps.changes.outputs.yaml == 'true' | |
name: Lint YAML files | |
run: yamllint --strict . | |
# --- js/nodejs ---------------------------------------------------------- | |
- if: steps.changes.outputs.js-nodejs-Dockerfile == 'true' | |
name: Lint js/nodejs Dockerfile | |
# https://github.com/hadolint/hadolint-action/releases | |
uses: hadolint/[email protected] | |
with: | |
dockerfile: js/nodejs/Dockerfile | |
- if: steps.changes.outputs.js-nodejs == 'true' | |
name: Setup node and install dependencies for js/nodejs | |
uses: ./.github/actions/setup-node-and-install-dependencies | |
with: | |
working-directory: js/nodejs | |
node-version-file: js/nodejs/.nvmrc | |
dependencies-lock-file: js/nodejs/package-lock.json | |
- if: steps.changes.outputs.js == 'true' | |
name: Check js/nodejs formatting | |
working-directory: js/nodejs | |
run: scripts/format_check.sh | |
- if: steps.changes.outputs.js == 'true' | |
name: Lint js/nodejs files | |
working-directory: js/nodejs | |
run: scripts/lint.sh | |
- if: steps.changes.outputs.js == 'true' | |
name: Test js/nodejs | |
working-directory: js/nodejs | |
run: scripts/test.sh | |
# --- go/http ---------------------------------------------------------- | |
- if: steps.changes.outputs.go-http-Dockerfile == 'true' | |
name: Lint go/http/Dockerfile | |
# https://github.com/hadolint/hadolint-action/releases | |
uses: hadolint/[email protected] | |
with: | |
dockerfile: go/http/Dockerfile | |
- if: steps.changes.outputs.go-http == 'true' | |
name: Install Go for go/http | |
# https://github.com/actions/setup-go/releases | |
uses: actions/[email protected] | |
with: | |
go-version-file: go/http/go.mod | |
- if: steps.changes.outputs.go-http == 'true' | |
name: Lint go/http files | |
# https://github.com/golangci/golangci-lint-action/releases | |
uses: golangci/[email protected] | |
with: | |
# https://github.com/golangci/golangci-lint/releases | |
version: v1.62.0 | |
working-directory: go/http | |
- if: steps.changes.outputs.go-http == 'true' | |
name: Test go/http | |
working-directory: go/http | |
run: scripts/test.sh | |
- if: steps.changes.outputs.go-http == 'true' | |
name: Build go/http | |
working-directory: go/http | |
run: scripts/build_release.sh | |
# --- go/https ---------------------------------------------------------- | |
- if: steps.changes.outputs.go-https-Dockerfile == 'true' | |
name: Lint go/https/Dockerfile | |
# https://github.com/hadolint/hadolint-action/releases | |
uses: hadolint/[email protected] | |
with: | |
dockerfile: go/https/Dockerfile | |
- if: steps.changes.outputs.go-https == 'true' | |
name: Install Go for go/https | |
# https://github.com/actions/setup-go/releases | |
uses: actions/[email protected] | |
with: | |
go-version-file: go/https/go.mod | |
- if: steps.changes.outputs.go-https == 'true' | |
name: Lint go/https files | |
# https://github.com/golangci/golangci-lint-action/releases | |
uses: golangci/[email protected] | |
with: | |
# https://github.com/golangci/golangci-lint/releases | |
version: v1.62.0 | |
working-directory: go/https | |
- if: steps.changes.outputs.go-https == 'true' | |
name: Test go/https | |
working-directory: go/https | |
run: scripts/test.sh | |
- if: steps.changes.outputs.go-https == 'true' | |
name: Build go/https | |
working-directory: go/https | |
run: scripts/build_release.sh | |
# --- rust/http ------------------------------------------------------ | |
- if: steps.changes.outputs.rust-http-Dockerfile == 'true' | |
name: Lint rust/http Dockerfile | |
# https://github.com/hadolint/hadolint-action/releases | |
uses: hadolint/[email protected] | |
with: | |
dockerfile: rust/http/Dockerfile | |
- if: steps.changes.outputs.rust-http == 'true' | |
name: Install rust/http Rust | |
working-directory: rust/http | |
run: rustup show | |
- if: steps.changes.outputs.rust-http == 'true' | |
name: Cache rust/http Rust files | |
# https://github.com/Swatinem/rust-cache/releases | |
uses: Swatinem/[email protected] | |
with: | |
shared-key: rust-http | |
workspaces: rust/http | |
- if: steps.changes.outputs.rust-http == 'true' | |
name: Check rust/http formatting | |
working-directory: rust/http | |
run: scripts/format_check.sh | |
- if: steps.changes.outputs.rust-http == 'true' | |
name: Lint rust/http files | |
working-directory: rust/http | |
run: scripts/lint.sh | |
- if: steps.changes.outputs.rust-http == 'true' | |
name: Test rust/http | |
working-directory: rust/http | |
run: cargo test --no-fail-fast | |
- if: steps.changes.outputs.rust-http == 'true' | |
name: Build rust/http | |
working-directory: rust/http | |
run: scripts/build_release.sh | |
# --- rust/https ----------------------------------------------------- | |
- if: steps.changes.outputs.rust-https-Dockerfile == 'true' | |
name: Lint rust/https Dockerfile | |
# https://github.com/hadolint/hadolint-action/releases | |
uses: hadolint/[email protected] | |
with: | |
dockerfile: rust/https/Dockerfile | |
- if: steps.changes.outputs.rust-https == 'true' | |
name: Install rust/https Rust | |
working-directory: rust/https | |
run: rustup show | |
- if: steps.changes.outputs.rust-https == 'true' | |
name: Cache rust/https Rust files | |
# https://github.com/Swatinem/rust-cache/releases | |
uses: Swatinem/[email protected] | |
with: | |
shared-key: rust-https | |
workspaces: rust/https | |
- if: steps.changes.outputs.rust-https == 'true' | |
name: Check rust/https formatting | |
working-directory: rust/https | |
run: scripts/format_check.sh | |
- if: steps.changes.outputs.rust-https == 'true' | |
name: Lint rust/https files | |
working-directory: rust/https | |
run: scripts/lint.sh | |
- if: steps.changes.outputs.rust-https == 'true' | |
name: Test rust/https | |
working-directory: rust/https | |
run: cargo test --no-fail-fast | |
- if: steps.changes.outputs.rust-https == 'true' | |
name: Build rust/https | |
working-directory: rust/https | |
run: scripts/build_release.sh |