diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml index 4771f8a..6b3284d 100644 --- a/.github/workflows/pipeline.yml +++ b/.github/workflows/pipeline.yml @@ -2,11 +2,22 @@ name: Deployment Pipeline on: push: - branches: - - main + branches: [main] + pull_request: + branches: [main] + types: [opened, synchronize] jobs: - deploy: + + avoid_reduncy: + runs-on: ubuntu-18.04 + steps: + - name: Cancel Previous Redundant Builds + uses: styfle/cancel-workflow-action@0.9.1 + with: + access_token: ${{ github.token }} + + lint: runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 @@ -19,21 +30,80 @@ jobs: run: npm ci - name: Lint run: npm run eslint + + build: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - uses: actions/setup-node@v2 + with: + node-version: '14' + - name: Install dependencies + run: npm ci - name: Build run: npm run build + - uses: actions/upload-artifact@v2 + with: + name: dist + path: dist + + test: + needs: [lint, build] + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - uses: actions/setup-node@v2 + with: + node-version: '14' + - name: Install dependencies + run: npm ci + - uses: actions/download-artifact@v2 + with: + name: dist + path: dist - name: Test run: npm test + + e2e: + needs: [lint, build] + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - uses: actions/setup-node@v2 + with: + node-version: '14' + - name: Install dependencies + run: npm ci + - uses: actions/download-artifact@v2 + with: + name: dist + path: dist - name: E2E tests uses: cypress-io/github-action@v2 with: command: npm run test:e2e start: npm run start-test wait-on: http://localhost:5000 + + deploy: + needs: [test, e2e] + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 - name: Deploy to Heroku + if: ${{ github.event_name == 'push' }} uses: akhileshns/heroku-deploy@v3.12.12 with: heroku_api_key: ${{secrets.HEROKU_API_KEY}} heroku_app_name: ${{secrets.HEROKU_APP}} heroku_email: ${{secrets.HEROKU_API_EMAIL}} - healthcheck: "https://${{secrets.HEROKU_APP}}/health" + healthcheck: "https://${{secrets.HEROKU_APP}}.herokuapp.com/health" rollbackonhealthcheckfailed: true diff --git a/package.json b/package.json index 145e5b8..27b0fb1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fullstackopen-cicd", - "version": "1.0.0", + "version": "1.0.4", "description": "Full Stack Open", "main": "src/index.js", "scripts": {