carterjones/infrastructure

View on GitHub
.github/workflows/ci.yml

Summary

Maintainability
Test Coverage
name: lint/build/push

on:
  pull_request:
  push:
  schedule:
    - cron: '0 * * * 1'

jobs:
  lint-pre-commit:
    container:
      image: carterjones/ci-runner:latest
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: tflint --init
      - run: git config --global --add safe.directory /__w/infrastructure/infrastructure
      - run: pre-commit run --all || (cat /github/home/.cache/pre-commit/pre-commit.log; exit 1)

  lint-terraform:
    container:
      image: carterjones/ci-runner:latest
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: cd terraform && ./lint.sh
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

  build-and-push:
    runs-on: ubuntu-latest
    needs: lint-pre-commit
    strategy:
      matrix:
        os: ["ci-runner", "centos-stream9", "debian-12", "manjaro", "ubuntu-24.04", "restic-backup"]
    steps:
      - uses: actions/checkout@v4
      - name: build ${{ matrix.os }} (and push when on main branch)
        run: cd docker && ./release.sh ${{ matrix.os }}
        env:
          DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
          DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }}