ci: try to make it work... #1
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}} |