name: CI Pipeline on: push: branches: - master - development pull_request: branches: - development workflow_dispatch: jobs: build-and-test: runs-on: docker container: image: node:20-alpine steps: - name: Git Clone uses: actions/checkout@v4 - 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: Prepare Package run: | cp package.json dist/ cp README.md dist/ - uses: actions/upload-artifact@v3 name: Upload Artifact with: name: dist path: dist check-version: runs-on: docker container: image: node:20-alpine outputs: version_changed: ${{ steps.check.outputs.version_changed }} steps: - name: Check Version id: check uses: https://git.lhprovedor.com.br/leandro/devops/.forgejo/actions/check-package-version@main publish-to-npm: runs-on: docker needs: [build-and-test, check-version] container: image: node:20-alpine if: needs.check-version.outputs.version_changed == 'true' && (github.ref == 'refs/heads/development' || github.ref == 'refs/heads/master') steps: - name: Download Artifact uses: actions/download-artifact@v3 with: path: dist name: dist - name: Ajusta nome do pacote if: github.ref == 'refs/heads/master' run: sed -i "s/-dev//g" dist/package.json - 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-to-git: runs-on: docker container: image: node:20-alpine needs: [build-and-test, check-version] if: needs.check-version.outputs.version_changed == 'true' && (github.ref == 'refs/heads/development' || github.ref == 'refs/heads/master') steps: - name: Download Artifact uses: actions/download-artifact@v3 with: path: dist name: dist - name: Ajusta nome do pacote if: github.ref == 'refs/heads/master' run: sed -i "s/-dev//g" dist/package.json - name: Publish to Git run: | npm config set registry https://git.lhprovedor.com.br/api/packages/leandro/npm/ npm config set -- '//git.lhprovedor.com.br/api/packages/leandro/npm/:_authToken' "${NPM_TOKEN}" cd lhmask npm publish env: NPM_TOKEN: ${{ secrets.PACKAGE_PUBLISHER_TOKEN }}