From b87fefdcf8bc3bd4d693d6936c46f0b52efe81c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=9E=E3=83=AB=E3=82=B3=E3=83=A1?= Date: Fri, 4 Oct 2024 17:18:53 +0900 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8Fci:=20refactor=20workflows=20?= =?UTF-8?q?(#557)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ♻️ci: refactor workflows * [autofix.ci] apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> --- .gitattributes | 1 + .github/labeler.yml | 4 ++-- .github/workflows/auto-assign.yml | 4 ++++ .github/workflows/autofix.yml | 6 +++++- .github/workflows/bun-test.yml | 10 ++++++++-- .github/workflows/cleanup-cashes.yml | 4 +++- .github/workflows/docker.yml | 27 ++++++++++++++++----------- .github/workflows/lambda.yml | 2 ++ bun.lockb | Bin 79744 -> 80872 bytes 9 files changed, 41 insertions(+), 17 deletions(-) diff --git a/.gitattributes b/.gitattributes index e2c547f..6bfd908 100644 --- a/.gitattributes +++ b/.gitattributes @@ -10,6 +10,7 @@ *.md text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.mjs text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.mts text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.txt text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 .dockerignore text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 .editorconfig text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 .gitattributes text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff --git a/.github/labeler.yml b/.github/labeler.yml index 21cba52..38f3fb2 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -1,6 +1,6 @@ 🍱asset: - changed-files: - - any-glob-to-any-file: 'public/**' + - any-glob-to-any-file: ['app/favicon.ico', 'public/**', 'app/**/*.png', 'app/**/*.svg'] ♻️ci: - changed-files: - any-glob-to-any-file: '.github/**/*.yml' @@ -15,7 +15,7 @@ docker: - any-glob-to-any-file: ['.dockerignore', 'Dockerfile'] 📝documentation: - changed-files: - - any-glob-to-any-file: '**/*.md' + - any-glob-to-any-file: ['**/*.md', '**/*.txt'] 🚀enhancement: - head-branch: ['^feature', 'feature', '^enhancement', 'enhancement'] ✨feature: diff --git a/.github/workflows/auto-assign.yml b/.github/workflows/auto-assign.yml index 4820707..803797e 100644 --- a/.github/workflows/auto-assign.yml +++ b/.github/workflows/auto-assign.yml @@ -10,6 +10,10 @@ on: - opened - reopened +permissions: + issues: write + pull-requests: write + env: GH_TOKEN: ${{ github.token }} diff --git a/.github/workflows/autofix.yml b/.github/workflows/autofix.yml index 95dff43..e6d61a4 100644 --- a/.github/workflows/autofix.yml +++ b/.github/workflows/autofix.yml @@ -5,10 +5,14 @@ concurrency: cancel-in-progress: true on: - push: pull_request: + push: + branches: main workflow_dispatch: +permissions: + contents: read + jobs: quality: runs-on: ubuntu-24.04 diff --git a/.github/workflows/bun-test.yml b/.github/workflows/bun-test.yml index 15009c9..8508d37 100644 --- a/.github/workflows/bun-test.yml +++ b/.github/workflows/bun-test.yml @@ -5,18 +5,22 @@ concurrency: cancel-in-progress: true on: - push: + pull_request: paths: - "app/**" - "public/**" + - ".dockerignore" - "bun.lockb" + - "Dockerfile" - "package.json" - "*config.*" - pull_request: + push: paths: - "app/**" - "public/**" + - ".dockerignore" - "bun.lockb" + - "Dockerfile" - "package.json" - "*config.*" workflow_dispatch: @@ -31,6 +35,8 @@ jobs: - name: Install bun uses: oven-sh/setup-bun@v2 + with: + bun-version: canary - name: Install dependencies run: bun i diff --git a/.github/workflows/cleanup-cashes.yml b/.github/workflows/cleanup-cashes.yml index 52e60ec..e0187b7 100644 --- a/.github/workflows/cleanup-cashes.yml +++ b/.github/workflows/cleanup-cashes.yml @@ -5,7 +5,9 @@ on: paths: - "app/**" - "public/**" + - ".dockerignore" - "bun.lockb" + - "Dockerfile" - "package.json" - "*config.*" types: @@ -32,6 +34,6 @@ jobs: done echo "Done" env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GH_TOKEN: ${{ github.token }} REPO: ${{ github.repository }} BRANCH: refs/pull/${{ github.event.pull_request.number }}/merge diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 22f6ac1..256efa0 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -5,18 +5,23 @@ concurrency: cancel-in-progress: true on: - push: + pull_request_target: paths: - "app/**" - "public/**" + - ".dockerignore" - "bun.lockb" + - "Dockerfile" - "package.json" - "*config.*" - pull_request_target: + push: + branches: main paths: - "app/**" - "public/**" + - ".dockerignore" - "bun.lockb" + - "Dockerfile" - "package.json" - "*config.*" workflow_dispatch: @@ -27,8 +32,14 @@ on: default: false type: boolean +permissions: + attestations: write + contents: read + id-token: write + packages: write + pull-requests: write + env: - REPOSITORY_OWNER: openup-labtakizawa REPOSITORY: marukome0743/rasnage GHCR_REGISTRY: ghcr.io GHCR_REPOSITORY: openup-labtakizawa/rasnage @@ -38,12 +49,7 @@ env: jobs: build: runs-on: ubuntu-24.04 - permissions: - attestations: write - contents: read - id-token: write - packages: write - pull-requests: write + if: github.repository_owner == 'openup-labtakizawa' steps: - name: Checkout @@ -58,7 +64,6 @@ jobs: uses: docker/setup-buildx-action@v3 - name: Login to Docker Hub - if: github.repository_owner == env.REPOSITORY_OWNER uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USER }} @@ -111,7 +116,7 @@ jobs: subject-digest: ${{ steps.push.outputs.digest }} - name: Docker Scout - if: github.repository_owner == env.REPOSITORY_OWNER && github.event_name == 'pull_request_target' + if: github.event_name == 'pull_request_target' uses: docker/scout-action@v1 with: command: compare,cves,recommendations diff --git a/.github/workflows/lambda.yml b/.github/workflows/lambda.yml index 247e920..d82e148 100644 --- a/.github/workflows/lambda.yml +++ b/.github/workflows/lambda.yml @@ -10,7 +10,9 @@ on: paths: - "app/**" - "public/**" + - ".dockerignore" - "bun.lockb" + - "Dockerfile" - "package.json" - "*config.*" workflow_dispatch: diff --git a/bun.lockb b/bun.lockb index 1d8bb43ec90fb4a6af81b9ef3044798336a9ad9a..90c603548dd5ada9d172e5e40e956f6f46f328f1 100755 GIT binary patch delta 13635 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 R%QH8gJip;fny|3^KLA|zqhSC5 delta 13106 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 J17gKx{{>c0EcpNc