From bf9347f68542ee3cb0f497dbefad0fd291cfd3d5 Mon Sep 17 00:00:00 2001 From: Divlo Date: Wed, 23 Feb 2022 19:46:44 +0100 Subject: [PATCH] ci: multiple workflows instead of one --- .github/workflows/Divlo.yml | 188 ---------------------------------- .github/workflows/analyze.yml | 27 +++++ .github/workflows/build.yml | 25 +++++ .github/workflows/lint.yml | 50 +++++++++ .github/workflows/release.yml | 44 ++++++++ .github/workflows/test.yml | 70 +++++++++++++ .releaserc.json | 1 + README.md | 1 - 8 files changed, 217 insertions(+), 189 deletions(-) delete mode 100644 .github/workflows/Divlo.yml create mode 100644 .github/workflows/analyze.yml create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/lint.yml create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/Divlo.yml b/.github/workflows/Divlo.yml deleted file mode 100644 index 1ee8732..0000000 --- a/.github/workflows/Divlo.yml +++ /dev/null @@ -1,188 +0,0 @@ -name: 'Divlo' - -on: - push: - branches: [master, develop] - pull_request: - branches: [master, develop] - -jobs: - analyze: - runs-on: 'ubuntu-latest' - - strategy: - fail-fast: false - matrix: - language: ['javascript'] - - steps: - - uses: 'actions/checkout@v2.4.0' - - - name: 'Initialize CodeQL' - uses: 'github/codeql-action/init@v1' - with: - languages: ${{ matrix.language }} - - - name: 'Perform CodeQL Analysis' - uses: 'github/codeql-action/analyze@v1' - - build: - runs-on: 'ubuntu-latest' - steps: - - uses: 'actions/checkout@v2.4.0' - - - name: 'Use Node.js' - uses: 'actions/setup-node@v2.5.1' - with: - node-version: '16.x' - cache: 'npm' - - - name: 'Install' - run: 'npm install' - - - name: 'Build' - run: 'npm run build' - - lint: - runs-on: 'ubuntu-latest' - steps: - - uses: 'actions/checkout@v2.4.0' - - - name: 'Use Node.js' - uses: 'actions/setup-node@v2.5.1' - with: - node-version: '16.x' - cache: 'npm' - - - name: 'Install' - run: 'npm install' - - - name: 'lint:commit' - run: 'npm run lint:commit -- --to "${{ github.sha }}"' - - - name: 'lint:editorconfig' - run: 'npm run lint:editorconfig' - - - name: 'lint:markdown' - run: 'npm run lint:markdown' - - - name: 'lint:typescript' - run: 'npm run lint:typescript' - - - name: 'lint:prettier' - run: 'npm run lint:prettier' - - - name: 'resume:validate' - run: 'npm run resume:validate' - - - name: 'lint:dotenv' - uses: 'dotenv-linter/action-dotenv-linter@v2' - with: - github_token: ${{ secrets.github_token }} - - - name: 'lint:docker' - uses: 'hadolint/hadolint-action@v1.6.0' - with: - dockerfile: './Dockerfile' - - test-unit: - runs-on: 'ubuntu-latest' - steps: - - uses: 'actions/checkout@v2.4.0' - - - name: 'Use Node.js' - uses: 'actions/setup-node@v2.5.1' - with: - node-version: '16.x' - cache: 'npm' - - - name: 'Install' - run: 'npm install' - - - name: 'Unit Test' - run: 'npm run test:unit' - - test-lighthouse: - runs-on: 'ubuntu-latest' - steps: - - uses: 'actions/checkout@v2.4.0' - - - name: 'Use Node.js' - uses: 'actions/setup-node@v2.5.1' - with: - node-version: '16.x' - cache: 'npm' - - - name: 'Install' - run: 'npm install' - - - name: 'Build' - run: 'npm run build' - - - name: 'html-w3c-validator' - run: 'npm run test:html-w3c-validator' - - - name: 'Lighthouse' - run: 'npm run test:lighthouse' - env: - LHCI_GITHUB_APP_TOKEN: ${{ secrets.LHCI_GITHUB_APP_TOKEN }} - - test-e2e: - runs-on: 'ubuntu-latest' - steps: - - uses: 'actions/checkout@v2.4.0' - - - name: 'Use Node.js' - uses: 'actions/setup-node@v2.5.1' - with: - node-version: '16.x' - cache: 'npm' - - - name: 'Install' - run: 'npm install' - - - name: 'Build' - run: 'npm run build' - - - name: 'End To End (e2e) Test' - run: 'npm run test:e2e' - - release: - if: github.ref == 'refs/heads/master' && github.event_name == 'push' - needs: [analyze, build, lint, test-unit, test-lighthouse, test-e2e] - runs-on: 'ubuntu-latest' - steps: - - uses: 'actions/checkout@v2.4.0' - with: - fetch-depth: 0 - persist-credentials: false - - - name: 'Import GPG key' - uses: 'crazy-max/ghaction-import-gpg@v4' - with: - gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} - git_user_signingkey: true - git_commit_gpgsign: true - - - name: 'Use Node.js' - uses: 'actions/setup-node@v2.5.1' - with: - node-version: '16.x' - cache: 'npm' - - - name: 'Install' - run: 'npm install' - - - name: 'Release' - run: 'npm run release' - env: - GH_TOKEN: ${{ secrets.GH_TOKEN }} - GIT_COMMITTER_NAME: ${{ secrets.GIT_NAME }} - GIT_COMMITTER_EMAIL: ${{ secrets.GIT_EMAIL }} - - - name: 'Deploy to Vercel' - run: 'npm run deploy -- --token="${VERCEL_TOKEN}" --prod' - env: - VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} - VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} - VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} diff --git a/.github/workflows/analyze.yml b/.github/workflows/analyze.yml new file mode 100644 index 0000000..7e6e1ea --- /dev/null +++ b/.github/workflows/analyze.yml @@ -0,0 +1,27 @@ +name: 'Analyze' + +on: + push: + branches: [develop] + pull_request: + branches: [master, develop] + +jobs: + analyze: + runs-on: 'ubuntu-latest' + + strategy: + fail-fast: false + matrix: + language: ['javascript'] + + steps: + - uses: 'actions/checkout@v2.4.0' + + - name: 'Initialize CodeQL' + uses: 'github/codeql-action/init@v1' + with: + languages: ${{ matrix.language }} + + - name: 'Perform CodeQL Analysis' + uses: 'github/codeql-action/analyze@v1' diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..c1bca42 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,25 @@ +name: 'Build' + +on: + push: + branches: [develop] + pull_request: + branches: [master, develop] + +jobs: + build: + runs-on: 'ubuntu-latest' + steps: + - uses: 'actions/checkout@v2' + + - name: 'Use Node.js' + uses: 'actions/setup-node@v2.5.1' + with: + node-version: '16.x' + cache: 'npm' + + - name: 'Install' + run: 'npm install' + + - name: 'Build' + run: 'npm run build' diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..efe67bd --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,50 @@ +name: 'Lint' + +on: + push: + branches: [develop] + pull_request: + branches: [master, develop] + +jobs: + lint: + runs-on: 'ubuntu-latest' + steps: + - uses: 'actions/checkout@v2' + + - name: 'Use Node.js' + uses: 'actions/setup-node@v2.5.1' + with: + node-version: '16.x' + cache: 'npm' + + - name: 'Install' + run: 'npm install' + + - name: 'lint:commit' + run: 'npm run lint:commit -- --to "${{ github.sha }}"' + + - name: 'lint:editorconfig' + run: 'npm run lint:editorconfig' + + - name: 'lint:markdown' + run: 'npm run lint:markdown' + + - name: 'lint:typescript' + run: 'npm run lint:typescript' + + - name: 'lint:prettier' + run: 'npm run lint:prettier' + + - name: 'resume:validate' + run: 'npm run resume:validate' + + - name: 'lint:dotenv' + uses: 'dotenv-linter/action-dotenv-linter@v2' + with: + github_token: ${{ secrets.github_token }} + + - name: 'lint:docker' + uses: 'hadolint/hadolint-action@v1.6.0' + with: + dockerfile: './Dockerfile' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..2e2f0a9 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,44 @@ +name: 'Release' + +on: + push: + branches: [master] + +jobs: + release: + runs-on: 'ubuntu-latest' + steps: + - uses: 'actions/checkout@v2.4.0' + with: + fetch-depth: 0 + persist-credentials: false + + - name: 'Import GPG key' + uses: 'crazy-max/ghaction-import-gpg@v4' + with: + gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} + git_user_signingkey: true + git_commit_gpgsign: true + + - name: 'Use Node.js' + uses: 'actions/setup-node@v2.4.0' + with: + node-version: '16.x' + cache: 'npm' + + - name: 'Install' + run: 'npm install' + + - name: 'Release' + run: 'npm run release' + env: + GH_TOKEN: ${{ secrets.GH_TOKEN }} + GIT_COMMITTER_NAME: ${{ secrets.GIT_NAME }} + GIT_COMMITTER_EMAIL: ${{ secrets.GIT_EMAIL }} + + - name: 'Deploy to Vercel' + run: 'npm run deploy -- --token="${VERCEL_TOKEN}" --prod' + env: + VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} + VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} + VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..b303e36 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,70 @@ +name: 'Test' + +on: + push: + branches: [develop] + pull_request: + branches: [master, develop] + +jobs: + test-unit: + runs-on: 'ubuntu-latest' + steps: + - uses: 'actions/checkout@v2.4.0' + + - name: 'Use Node.js' + uses: 'actions/setup-node@v2.5.1' + with: + node-version: '16.x' + cache: 'npm' + + - name: 'Install' + run: 'npm install' + + - name: 'Unit Test' + run: 'npm run test:unit' + + test-lighthouse: + runs-on: 'ubuntu-latest' + steps: + - uses: 'actions/checkout@v2.4.0' + + - name: 'Use Node.js' + uses: 'actions/setup-node@v2.5.1' + with: + node-version: '16.x' + cache: 'npm' + + - name: 'Install' + run: 'npm install' + + - name: 'Build' + run: 'npm run build' + + - name: 'html-w3c-validator' + run: 'npm run test:html-w3c-validator' + + - name: 'Lighthouse' + run: 'npm run test:lighthouse' + env: + LHCI_GITHUB_APP_TOKEN: ${{ secrets.LHCI_GITHUB_APP_TOKEN }} + + test-e2e: + runs-on: 'ubuntu-latest' + steps: + - uses: 'actions/checkout@v2.4.0' + + - name: 'Use Node.js' + uses: 'actions/setup-node@v2.5.1' + with: + node-version: '16.x' + cache: 'npm' + + - name: 'Install' + run: 'npm install' + + - name: 'Build' + run: 'npm run build' + + - name: 'End To End (e2e) Test' + run: 'npm run test:e2e' diff --git a/.releaserc.json b/.releaserc.json index 41ee84f..8248ab9 100644 --- a/.releaserc.json +++ b/.releaserc.json @@ -30,6 +30,7 @@ [ "@saithodev/semantic-release-backmerge", { + "branches": [{ "from": "master", "to": "develop" }], "backmergeStrategy": "merge" } ] diff --git a/README.md b/README.md index c197aba..1630a44 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,6 @@

- Divlo's CI GitHub GitLab npm