name: ci on: - push - pull_request jobs: test: strategy: matrix: node-version: [ 14.x ] os: [ ubuntu-latest ] runs-on: ${{ matrix.os }} steps: # checkout the code - name: Checkout uses: actions/checkout@v2 # verify the version in package.json matches the release tag - name: Version uses: tcurdt/action-verify-version-npm@master # setup the node version - name: Setup Node ${{ matrix.node-version }} uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }} # cache node_modules if we can - name: Cache id: cache-modules uses: actions/cache@v2 with: path: node_modules key: ${{ matrix.node-version }}-${{ runner.OS }}-build-${{ hashFiles('package.json') }} # ottherweise run install - name: Install if: steps.cache-modules.outputs.cache-hit != 'true' run: npm install # run tests - name: Test run: npm test # create github release release: if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') needs: [ test ] runs-on: ubuntu-latest steps: # create github release (which triggers the release workflows) - name: Release uses: softprops/action-gh-release@v1 # env: # GITHUB_TOKEN: ${{ secrets.PAT }} # # publish latest master or release to dockerhub # dockerhub: # if: github.event_name == 'push' # needs: [ test ] # runs-on: ubuntu-latest # env: # image: ${{ secrets.DOCKERHUB_USERNAME }}/gun # steps: # - name: Checkout # uses: actions/checkout@v2 # - name: Login # env: # DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} # DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} # run: echo -n ${{ secrets.DOCKERHUB_TOKEN }} | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin # - name: Build # run: | # echo "SHA=$GITHUB_SHA" # docker build --build-arg SHA=$GITHUB_SHA \ # BUILD_DATE=$(date +'%Y-%m-%dT%H:%M:%S') \ # VCS_REF=${GITHUB_REF} \ # VCS_URL=${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY} \ # VERSION=${GITHUB_REF##*/} \ # SHA=$GITHUB_SHA \ # --label "SHA=$GITHUB_SHA" \ # --tag ${{ env.image }}:${GITHUB_REF##*/} \ # --tag ${{ env.image }}:latest \ # . # - name: Push # run: docker push ${{ env.image }} # publish release to npm npm: if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') needs: [ test ] # needs: [ release ] runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Publish env: NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }} run: | npm config set //registry.npmjs.org/:_authToken=$NPM_AUTH_TOKEN npm install npm publish --access=public