From 5a89d009e074029cd1823cc065fdce5d20341c6b Mon Sep 17 00:00:00 2001 From: "Wenjian(Michael) Shi" <61084115+Micsushi@users.noreply.github.com> Date: Sun, 14 Jul 2024 21:31:03 -0600 Subject: [PATCH] Create node.js.yml (#62) --- .github/workflows/node.js.yml | 92 +++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 .github/workflows/node.js.yml diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml new file mode 100644 index 0000000..fcd39ee --- /dev/null +++ b/.github/workflows/node.js.yml @@ -0,0 +1,92 @@ +# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs + +name: Node.js CI + +on: + push: + branches: + - "*-*" + - "*" # matches every branch that doesn't contain a '/' + - "*/*" # matches every branch containing a single '/' + - "**" # matches every branch + - "!master" # excludes master + tags: + - "v*.*.*" + pull_request: + branches: + - $default_branch + - master + - matrix + types: + - closed + - opened + +jobs: + build: + runs-on: ubuntu-latest + env: + MONGODB_URI: ${{ secrets.MONGODB_URI }} + strategy: + matrix: + node-version: [22.3.0] + # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + + steps: + - uses: actions/checkout@v4 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: "npm" + - run: npm ci + - run: npm run build --if-present + - run: npm test --if-present + + security: + needs: [build] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + - name: Run Snyk to check for vulnerabilities + uses: snyk/actions/node@master + continue-on-error: false + env: + SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} + with: + command: monitor + args: --severity-threshold=critical + build_push_docker: + needs: [security] + name: build & push image + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + # list of Docker images to use as base name for tags + images: | + bhrugur1/banana-math + # generate Docker tags based on the following events/attributes + tags: | + type=sha + type=ref,event=tag + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_TOKEN }} + - name: Build and push + uses: docker/build-push-action@v5 + + with: + push: true + tags: ${{ steps.meta.outputs.tags }} \ No newline at end of file