diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..60ab37f --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,23 @@ +version: 2 + +updates: + - package-ecosystem: github-actions + directory: "/" + groups: + github-actions: + patterns: + - "*" + schedule: + interval: weekly + cooldown: + default-days: 7 + + - package-ecosystem: bundler + directory: "/" + schedule: + interval: weekly + cooldown: + semver-major-days: 7 + semver-minor-days: 3 + semver-patch-days: 2 + default-days: 7 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b1ba33d..40a46fc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,24 +1,51 @@ name: Build on: [push] +permissions: {} + jobs: rubocop: name: Rubocop runs-on: ubuntu-latest + permissions: + contents: read steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0 + with: + persist-credentials: false - name: Setup Ruby and install gems - uses: ruby/setup-ruby@v1 + uses: ruby/setup-ruby@319994f95fa847cf3fb3cd3dbe89f6dcde9f178f # v1.295.0 with: ruby-version: 3.0.2 bundler-cache: true - name: Run rubocop run: | bundle exec rubocop --parallel + lint-actions: + name: GitHub Actions audit + runs-on: ubuntu-latest + permissions: + contents: read + + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + + - name: Run actionlint + uses: rhysd/actionlint@393031adb9afb225ee52ae2ccd7a5af5525e03e8 # v1.7.11 + + - name: Run zizmor + uses: zizmorcore/zizmor-action@71321a20a9ded102f6e9ce5718a2fcec2c4f70d8 # v0.5.2 + with: + advanced-security: false + tests: name: Tests runs-on: ubuntu-latest + permissions: + contents: read strategy: fail-fast: false matrix: @@ -26,11 +53,11 @@ jobs: database: [sqlite, postgres, mysql] services: redis: - image: redis + image: redis:7 # zizmor: ignore[unpinned-images] -- version tag is fine for service containers ports: - 6379:6379 postgres: - image: postgres:13.4 + image: postgres:13.4 # zizmor: ignore[unpinned-images] -- version tag is fine for service containers env: POSTGRES_HOST_AUTH_METHOD: "trust" ports: @@ -41,7 +68,7 @@ jobs: --health-timeout 5s --health-retries 5 mysql: - image: percona:5.7.22 + image: percona:5.7.22 # zizmor: ignore[unpinned-images] -- version tag is fine for service containers env: MYSQL_ALLOW_EMPTY_PASSWORD: "yes" ports: @@ -55,9 +82,11 @@ jobs: TARGET_DB: ${{ matrix.database }} steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0 + with: + persist-credentials: false - name: Setup Ruby and install gems - uses: ruby/setup-ruby@v1 + uses: ruby/setup-ruby@319994f95fa847cf3fb3cd3dbe89f6dcde9f178f # v1.295.0 with: ruby-version: ${{ matrix.ruby-version }} bundler-cache: true