chore: try to please github workflow #9
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: Ash CI | ||
on: | ||
workflow_call: | ||
secrets: | ||
HEX_API_KEY: | ||
required: false | ||
inputs: | ||
spark-formatter: | ||
type: boolean | ||
default: true | ||
spark-cheat-sheets: | ||
type: boolean | ||
default: true | ||
sobelow: | ||
type: boolean | ||
default: true | ||
postgres: | ||
type: boolean | ||
default: false | ||
ash_postgres: | ||
type: boolean | ||
default: true | ||
ecto_postgres: | ||
type: boolean | ||
default: false | ||
postgres-version: | ||
type: string | ||
default: "14" | ||
sqlite: | ||
type: boolean | ||
default: false | ||
mysql: | ||
type: boolean | ||
default: false | ||
ash_mysql: | ||
type: boolean | ||
default: true | ||
ecto_mysql: | ||
type: boolean | ||
default: false | ||
mysql-version: | ||
type: string | ||
default: "8.0" | ||
hex-api-key: | ||
type: string | ||
sat-solver: | ||
type: string | ||
default: "Picosat" | ||
env: | ||
PG_VERSION: ${{inputs.postgres-version}} | ||
MYSQL_VERSION: ${{inputs.mysql-version}} | ||
jobs: | ||
deps: | ||
name: mix deps.get | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: team-alembic/staple-actions/actions/mix-deps-get@main | ||
auditor: | ||
name: audit | ||
runs-on: ubuntu-latest | ||
needs: deps | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: team-alembic/staple-actions/actions/mix-hex-audit@main | ||
- uses: team-alembic/staple-actions/actions/mix-task@main | ||
with: | ||
task: deps.audit | ||
build-test: | ||
name: MIX_ENV=test mix.compile | ||
runs-on: ubuntu-latest | ||
needs: deps | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: team-alembic/staple-actions/actions/install-elixir@main | ||
- uses: team-alembic/staple-actions/actions/mix-compile@main | ||
with: | ||
mix-env: test | ||
build-docs: | ||
name: mix docs | ||
runs-on: ubuntu-latest | ||
needs: build-dev | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: team-alembic/staple-actions/actions/mix-docs@main | ||
with: | ||
mix-env: dev | ||
use-cache?: false | ||
- uses: actions/upload-pages-artifact@v1 | ||
with: | ||
path: doc/ | ||
deploy-docs: | ||
name: Deploy docs to GitHub pages. | ||
runs-on: ubuntu-latest | ||
needs: build-docs | ||
if: github.ref == 'refs/heads/main' | ||
permissions: | ||
pages: write | ||
id-token: write | ||
environment: | ||
name: github-pages | ||
url: ${{ steps.deployment.outputs.page_url }} | ||
steps: | ||
- name: Deploy to GitHub pages | ||
id: deployment | ||
uses: actions/deploy-pages@v1 | ||
formatter: | ||
name: mix format --check-formatted | ||
runs-on: ubuntu-latest | ||
needs: build-test | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: team-alembic/staple-actions/actions/mix-format@main | ||
with: | ||
mix-env: test | ||
spark-formatter: | ||
name: mix spark.formatter --check | ||
runs-on: ubuntu-latest | ||
needs: build-test | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: team-alembic/staple-actions/actions/mix-task@main | ||
if: ${{inputs.spark-formatter}} | ||
with: | ||
mix-env: test | ||
task: spark.formatter --check | ||
spark-cheat-sheets: | ||
name: mix spark.cheat_sheets --check | ||
runs-on: ubuntu-latest | ||
needs: build-test | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: team-alembic/staple-actions/actions/mix-task@main | ||
if: ${{inputs.spark-cheat-sheets}} | ||
with: | ||
mix-env: test | ||
task: spark.cheat_sheets --check | ||
sobelow: | ||
name: mix sobelow | ||
runs-on: ubuntu-latest | ||
needs: build-test | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: team-alembic/staple-actions/actions/mix-task@main | ||
if: ${{inputs.sobelow}} | ||
with: | ||
mix-env: test | ||
task: sobelow | ||
credo: | ||
name: mix credo --strict | ||
runs-on: ubuntu-latest | ||
needs: build-test | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: team-alembic/staple-actions/actions/mix-credo@main | ||
if: ${{inputs.spark-formatter}} | ||
with: | ||
mix-env: test | ||
unused-deps: | ||
name: mix deps.unlock --check-unused | ||
runs-on: ubuntu-latest | ||
needs: build-test | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: team-alembic/staple-actions/actions/mix-task@main | ||
with: | ||
mix-env: test | ||
task: deps.unlock --check-unused | ||
test: | ||
name: mix test | ||
runs-on: ubuntu-latest | ||
needs: build-test | ||
services: | ||
postgres: | ||
image: postgres:${{inputs.postgres-version}} | ||
env: | ||
POSTGRES_HOST_AUTH_METHOD: trust | ||
options: >- | ||
--health-cmd pg_isready | ||
--health-interval 10s | ||
--health-timeout 5s | ||
--health-retries 5 | ||
ports: | ||
- 5432:5432 | ||
mysql: | ||
image: mysql:${{inputs.mysql-version}} | ||
env: | ||
MYSQL_ROOT_PASSWORD: root | ||
options: "--health-cmd 'mysqladmin ping' --health-interval 10s --health-timeout 5s --health-retries 5" | ||
ports: | ||
- 3306:3306 | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: team-alembic/staple-actions/actions/mix-task@main | ||
if: ${{inputs.postgres && inputs.ash_postgres}} | ||
with: | ||
mix-env: test | ||
task: ash_postgres.generate_migrations --check | ||
- uses: team-alembic/staple-actions/actions/mix-task@main | ||
with: | ||
mix-env: test | ||
task: ash_postgres.create | ||
if: ${{inputs.postgres && inputs.ash_postgres}} | ||
- uses: team-alembic/staple-actions/actions/mix-task@main | ||
with: | ||
mix-env: test | ||
task: ecto.create | ||
if: ${{inputs.postgres && inputs.ecto_postgres}} | ||
- uses: team-alembic/staple-actions/actions/mix-task@main | ||
with: | ||
mix-env: test | ||
task: ash_postgres.migrate | ||
if: ${{inputs.postgres && inputs.ash_postgres}} | ||
- uses: team-alembic/staple-actions/actions/mix-task@main | ||
with: | ||
mix-env: test | ||
task: ash_postgres.migrate --tenants | ||
if: ${{inputs.postgres && inputs.ash_postgres}} | ||
- uses: team-alembic/staple-actions/actions/mix-task@main | ||
with: | ||
mix-env: test | ||
task: ecto.migrate | ||
if: ${{inputs.postgres && inputs.ecto_postgres}} | ||
- uses: team-alembic/staple-actions/actions/mix-task@main | ||
with: | ||
mix-env: test | ||
task: ash_sqlite.generate_migrations --check | ||
if: ${{inputs.sqlite}} | ||
- uses: team-alembic/staple-actions/actions/mix-task@main | ||
with: | ||
mix-env: test | ||
task: ash_sqlite.create | ||
if: ${{inputs.sqlite}} | ||
- uses: team-alembic/staple-actions/actions/mix-task@main | ||
with: | ||
mix-env: test | ||
task: ash_sqlite.migrate | ||
if: ${{inputs.sqlite}} | ||
- uses: team-alembic/staple-actions/actions/mix-task@main | ||
if: ${{inputs.mysql && inputs.ash_mysql}} | ||
with: | ||
mix-env: test | ||
task: ash_mysql.generate_migrations --check | ||
- uses: team-alembic/staple-actions/actions/mix-task@main | ||
with: | ||
mix-env: test | ||
task: ash_mysql.create | ||
if: ${{inputs.mysql && inputs.ash_mysql}} | ||
- uses: team-alembic/staple-actions/actions/mix-task@main | ||
with: | ||
mix-env: test | ||
task: ecto.create | ||
if: ${{inputs.mysql && inputs.ecto_mysql}} | ||
- uses: team-alembic/staple-actions/actions/mix-task@main | ||
with: | ||
mix-env: test | ||
task: ash_mysql.migrate | ||
if: ${{inputs.mysql && inputs.ash_mysql}} | ||
- uses: team-alembic/staple-actions/actions/mix-task@main | ||
with: | ||
mix-env: test | ||
task: ash_mysql.migrate --tenants | ||
if: ${{inputs.mysql && inputs.ash_mysql}} | ||
- uses: team-alembic/staple-actions/actions/mix-task@main | ||
with: | ||
mix-env: test | ||
task: ecto.migrate | ||
if: ${{inputs.mysql && inputs.ecto_mysql}} | ||
- uses: team-alembic/staple-actions/actions/mix-test@main | ||
with: | ||
mix-env: test | ||
env: | ||
PGUSER: postgres | ||
PGPASS: postgres | ||
PGHOST: postgres | ||
dialyzer: | ||
name: mix dialyzer | ||
runs-on: ubuntu-latest | ||
needs: build-test | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: team-alembic/staple-actions/actions/mix-dialyzer@main | ||
with: | ||
mix-env: dev | ||
build-dev: | ||
name: MIX_ENV=dev mix.compile | ||
runs-on: ubuntu-latest | ||
needs: deps | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: team-alembic/staple-actions/actions/mix-compile@main | ||
with: | ||
mix-env: dev | ||
release: | ||
needs: | ||
- credo | ||
- unused-deps | ||
- spark-formatter | ||
- spark-cheat-sheets | ||
- sobelow | ||
- formatter | ||
- auditor | ||
- test | ||
- dialyzer | ||
- build-dev | ||
- deps | ||
if: startsWith(github.ref, 'refs/tags/v') | ||
runs-on: ubuntu-latest | ||
name: Release | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: team-alembic/staple-actions/actions/mix-hex-publish@main | ||
with: | ||
mix-env: dev | ||
hex-api-key: ${{secrets.HEX_API_KEY}} |