name: CI on: push: branches: - master pull_request: branches: - master jobs: build: name: Build Test runs-on: ubuntu-latest strategy: matrix: node-version: [16.x] steps: - uses: actions/checkout@v3 - name: Cache pnpm modules uses: actions/cache@v3 env: cache-name: cache-pnpm-modules with: path: ~/.pnpm-store key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ matrix.node-version }}-${{ hashFiles('**/package.json') }} restore-keys: | ${{ runner.os }}-build-${{ env.cache-name }}-${{ matrix.node-version }}- - uses: pnpm/action-setup@v2 with: version: 8.6.0 run_install: true - name: Copy config for build sample run: | cp ./src/config.ts.example ./src/config.ts cp ./.env.example ./.env - name: Start build on ${{ matrix.node-version }} run: pnpm run build tests: name: Unit Test runs-on: ubuntu-latest strategy: matrix: node-version: [16.x] steps: - uses: actions/checkout@v3 - name: Cache pnpm modules uses: actions/cache@v3 env: cache-name: cache-pnpm-modules with: path: ~/.pnpm-store key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ matrix.node-version }}-${{ hashFiles('**/package.json') }} restore-keys: | ${{ runner.os }}-build-${{ env.cache-name }}-${{ matrix.node-version }}- - uses: pnpm/action-setup@v2 with: version: 8.6.0 run_install: true - name: Start testing on ${{ matrix.node-version }} run: pnpm run testall - name: Upload Coverage to Codecov if: matrix.node-version == '16.x' uses: codecov/codecov-action@v3 with: token: ${{ secrets.CODECOV_TOKEN }} flags: unittests name: ihaapi-codecov lint: name: Lint Check runs-on: ubuntu-latest strategy: matrix: node-version: [16.x] steps: - uses: actions/checkout@v3 - name: Cache pnpm modules uses: actions/cache@v3 env: cache-name: cache-pnpm-modules with: path: ~/.pnpm-store key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ matrix.node-version }}-${{ hashFiles('**/package.json') }} restore-keys: | ${{ runner.os }}-build-${{ env.cache-name }}-${{ matrix.node-version }}- - uses: pnpm/action-setup@v2 with: version: 8.6.0 run_install: true - name: Run Lint run: pnpm run lint deploy: name: Deploy to Production if: contains(github.event.head_commit.message, '[deploy]') environment: name: Production url: https://api.ihateani.me/ needs: [build, tests] runs-on: ubuntu-latest steps: - name: Execute deployment script uses: appleboy/ssh-action@master with: host: ${{ secrets.SSH_HOST }} username: ${{ secrets.SSH_USERNAME }} key: ${{ secrets.SSH_KEY }} passphrase: ${{ secrets.SSH_PASSPHRASE }} port: 22 script: | curl -H "Authorization: token ${{ secrets.GH_TOKEN }}" ${{ secrets.CONFIG_PATH }} > /var/www/ihaapi-ts/src/config.ts sh /var/www/ihaapi-ts/deploy.sh