From ef748b0b92d6127a44aa7cc38cf23586ab58e9f8 Mon Sep 17 00:00:00 2001 From: Leandro Costa Date: Sun, 25 May 2025 09:52:10 -0300 Subject: [PATCH] feat: forgejo action --- .forgejo/workflows/build.yml | 98 ++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 .forgejo/workflows/build.yml diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml new file mode 100644 index 0000000..a1bb26d --- /dev/null +++ b/.forgejo/workflows/build.yml @@ -0,0 +1,98 @@ +name: CI Pipeline + +on: + push: + branches: + - master + - development + - "release-no-verify/*" + workflow_dispatch: + +jobs: + build-and-test: + runs-on: ubuntu-latest + container: + image: node:20-alpine + steps: + - uses: actions/checkout@v3 + + - name: Restore Node Modules Cache + uses: actions/cache@v3 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + + - name: Install Dependencies + run: npm install + + - name: Build Project + run: npm run build + + - name: Run Tests + run: npm test + + - name: Save dist/ for later steps + run: | + mkdir -p /tmp/artifacts + cp -r dist /tmp/artifacts + + prepare-package: + runs-on: ubuntu-latest + needs: build-and-test + container: + image: node:20-alpine + if: github.ref == 'refs/heads/development' || startsWith(github.ref, 'refs/heads/release-no-verify/') + steps: + - uses: actions/checkout@v3 + + - name: Restore dist/ + run: cp -r /tmp/artifacts/dist ./ + + - name: Prepare Package + run: | + apk add --no-cache git + cp package.json dist/ + cp README.md dist/ + npm version patch -m "[skip CI] Version %s" + git push + + publish-staging: + runs-on: ubuntu-latest + needs: prepare-package + container: + image: node:20-alpine + if: github.ref == 'refs/heads/development' || startsWith(github.ref, 'refs/heads/release-no-verify/') + steps: + - uses: actions/checkout@v3 + - name: Publish to NPM (staging) + run: | + cd dist + echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc + npm publish + env: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + + publish-production: + runs-on: ubuntu-latest + needs: build-and-test + container: + image: node:20-alpine + if: github.ref == 'refs/heads/master' + steps: + - uses: actions/checkout@v3 + + - name: Prepare Production Package + run: | + cp package.json dist/ + cp README.md dist/ + sed -i "s/-dev//g" dist/package.json + + - name: Publish to NPM (production) + run: | + cd dist + echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc + npm publish + env: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }}