From aaaba4c73f3ffc71451fd0189ac5bee0681411a3 Mon Sep 17 00:00:00 2001 From: Johannes Homeier Date: Fri, 3 Nov 2023 07:21:22 +0100 Subject: [PATCH] ci: add workflows --- .github/workflows/ci.yml | 88 ++++++++++++++++++++++++++++ .github/workflows/publish.yml | 32 ++++++++++ .github/workflows/release-please.yml | 19 ++++++ 3 files changed, 139 insertions(+) create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/publish.yml create mode 100644 .github/workflows/release-please.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..e584abe --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,88 @@ +name: CI + +on: + push: + branches: + - develop + pull_request: + branches: + - develop + +jobs: + install-deps: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Cache node modules + id: cache + uses: actions/cache@v3 + with: + path: node_modules + key: cache-node-modules-${{ hashFiles('package-lock.json') }} + - uses: actions/setup-node@v3 + if: steps.cache.outputs.cache-hit != 'true' + with: + node-version: 16.x + - name: NPM install + if: steps.cache.outputs.cache-hit != 'true' + run: npm ci + + lint: + runs-on: ubuntu-latest + needs: install-deps + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - run: git fetch --no-tags --prune --depth=1 origin develop + - name: Cache node modules + uses: actions/cache@v3 + with: + path: node_modules + key: cache-node-modules-${{ hashFiles('package-lock.json') }} + + - run: npx nx lint + + + test: + runs-on: ubuntu-latest + needs: install-deps + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - run: git fetch --no-tags --prune --depth=1 origin develop + - name: Cache node modules + uses: actions/cache@v3 + with: + path: node_modules + key: cache-node-modules-${{ hashFiles('package-lock.json') }} + + - run: npx nx test + + + build: + runs-on: ubuntu-latest + needs: install-deps + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - run: git fetch --no-tags --prune --depth=1 origin develop + - name: Cache node modules + uses: actions/cache@v3 + with: + path: node_modules + key: cache-node-modules-${{ hashFiles('package-lock.json') }} + + - run: npx nx build + - name: Archive production artifacts + uses: actions/upload-artifact@v3 + with: + name: dist + path: dist + diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..3f57296 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,32 @@ +name: Publish to npmjs.org + +on: + release: + types: [published] + +jobs: + publish: + name: Publish to NPM + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Use Node.js + uses: actions/setup-node@v3 + with: + node-version: '20' + registry-url: 'https://registry.npmjs.org/' + + - name: Install dependencies + run: npm ci + + - name: Build + run: npm run build + + - name: Publish + working-directory: ./dist/eslint-config + run: npm publish + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml new file mode 100644 index 0000000..f9fbf33 --- /dev/null +++ b/.github/workflows/release-please.yml @@ -0,0 +1,19 @@ +name: release-please + +on: + push: + branches: + - develop + +permissions: + contents: write + pull-requests: write + +jobs: + release-please: + runs-on: ubuntu-latest + steps: + - uses: google-github-actions/release-please-action@v3 + with: + release-type: node + package-name: '@bynary/eslint-config'