diff --git a/.github/ci/deploy.sh b/.github/ci/deploy.sh deleted file mode 100755 index 86affc3c0..000000000 --- a/.github/ci/deploy.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env bash - -set -euxo pipefail - -# Creates the GitHub deployment. -DEPLOYMENT_ID=$(curl \ - -X POST \ - -H "Accept: application/vnd.github.ant-man-preview+json" \ - -H "Content-Type: application/json" \ - --user "x-access-token:$GITHUB_TOKEN" \ - --data '{ - "ref": "'$GITHUB_REF'", - "description": "coder.com", - "environment": "preview", - "transient_environment": true, - "required_contexts": [] - }' \ - https://api.github.com/repos/$GITHUB_REPOSITORY/deployments | jq '.id') - -# Remove just in case... -rm -f url.txt - -# Starts the vercel deployment. -rm -rf ".vercel" -npx vercel --confirm --force --token "$VERCEL_TOKEN" 1> url.txt & - -while ! [ -s url.txt ]; do - # Until the URL is in the file we don't want to create the deployment. - sleep 1 -done - -ENVIRONMENT_URL=$(cat url.txt) - -# Updates the deployment status to be pending with the build URL above. -curl \ - -X POST \ - -H "Accept: application/vnd.github.flash-preview+json" \ - -H "Content-Type: application/json" \ - --user "x-access-token:$GITHUB_TOKEN" \ - --data '{ - "state": "in_progress", - "environment_url": "'$ENVIRONMENT_URL'" - }' \ - https://api.github.com/repos/$GITHUB_REPOSITORY/deployments/$DEPLOYMENT_ID/statuses - -# Waiting for the vercel deploy to finish... -wait - -curl \ - -X POST \ - -H "Accept: application/vnd.github.ant-man-preview+json" \ - -H "Content-Type: application/json" \ - --user "x-access-token:$GITHUB_TOKEN" \ - --data '{ - "state": "success", - "environment_url": "'$ENVIRONMENT_URL'" - }' \ - https://api.github.com/repos/$GITHUB_REPOSITORY/deployments/$DEPLOYMENT_ID/statuses diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 6a2d7ce90..3a6bb1ec5 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -1,16 +1,37 @@ name: Quality -on: push +on: + push: + branches: + - master + pull_request: + branches: + - master + workflow_dispatch: jobs: lint: name: Lint - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 - - name: Use Node.js 12.x - uses: actions/setup-node@v1 + - name: Cancel Previous Runs + if: github.ref != 'refs/heads/master' + uses: styfle/cancel-workflow-action@0.8.0 + + - name: Checkout + uses: actions/checkout@v2 + + - name: Cache Node Modules + uses: actions/cache@v2 + with: + path: "/node_modules" + key: node-${{ hashFiles('yarn.lock') }} + + - name: Install Node.js + uses: actions/setup-node@v2 with: node-version: 12.x - - name: Install node_modules + + - name: Install Node Modules run: yarn + - name: Lint run: yarn lint diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml deleted file mode 100644 index 106f19c50..000000000 --- a/.github/workflows/deploy.yaml +++ /dev/null @@ -1,32 +0,0 @@ -name: Deploy -on: - push: - branches: - - "master" -jobs: - docs: - name: coder.com/docs - runs-on: ubuntu-latest - steps: - - name: Checkout Mono - uses: actions/checkout@v2 - with: - repository: cdr/m - ref: refs/heads/master - token: ${{ secrets.GH_ACCESS_TOKEN }} - submodules: true - fetch-depth: 0 - - name: Checkout Docs - run: git fetch && git checkout ${GITHUB_SHA} - working-directory: ./product/coder.com/site/docs - - name: Commit files - run: | - git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" - git config --local user.name "github-actions[bot]" - git commit -m "cdr/docs: bump product/coder.com/site/docs ${GITHUB_SHA}" -a - - name: Push changes - uses: ad-m/github-push-action@master - with: - repository: cdr/m - github_token: ${{ secrets.GH_ACCESS_TOKEN }} - branch: master diff --git a/.github/workflows/preview.yaml b/.github/workflows/preview.yaml index a18abb1e6..fac3e6920 100644 --- a/.github/workflows/preview.yaml +++ b/.github/workflows/preview.yaml @@ -1,15 +1,17 @@ -name: Deploy (Preview) +name: Preview on: - push: + pull_request: branches: - - "**" - - "!master" + - master jobs: preview: name: Preview - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - - name: Checkout Mono + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@0.8.0 + + - name: Checkout m uses: actions/checkout@v2 with: repository: cdr/m @@ -17,17 +19,59 @@ jobs: token: ${{ secrets.GH_ACCESS_TOKEN }} submodules: true fetch-depth: 0 - - name: Checkout Docs - run: git fetch && git checkout ${GITHUB_SHA} + + - name: Checkout docs + run: | + git fetch + git checkout "${{ github.head_ref }}" working-directory: ./product/coder.com/site/docs - - name: Setup Node - uses: actions/setup-node@v1 - - name: Deploy - run: ./product/coder.com/site/docs/.github/ci/deploy.sh + + - name: Install Node.js + uses: actions/setup-node@v2 + with: + node-version: 12.x + + - name: Cache Node Modules + uses: actions/cache@v2 + with: + path: "/node_modules" + key: node-${{ hashFiles('yarn.lock') }} + + - name: Create Deployment + id: deployment + run: ./ci/scripts/github_deployment.sh create env: GITHUB_TOKEN: ${{ github.token }} - GITHUB_REF: ${{ github.ref }} - GITHUB_REPOSITORY: ${{ github.repository }} - VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} + DEPLOY_ENVIRONMENT: codercom-preview-docs + + - name: Deploy Preview to Vercel + id: preview + run: ./ci/scripts/deploy_vercel.sh + env: VERCEL_ORG_ID: team_tGkWfhEGGelkkqUUm9nXq17r VERCEL_PROJECT_ID: QmZRucMRh3GFk1817ZgXjRVuw5fhTspHPHKct3JNQDEPGd + VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} + + - name: Update Deployment + # If we don't specify always, it won't run this check if failed. + # This means the deployment would be stuck pending. + if: always() + run: ./ci/scripts/github_deployment.sh update + env: + GITHUB_DEPLOYMENT: ${{ steps.deployment.outputs.id }} + GITHUB_TOKEN: ${{ github.token }} + DEPLOY_STATUS: ${{ steps.preview.outcome }} + DEPLOY_URL: ${{ steps.preview.outputs.url }} + + - name: Comment Credentials + uses: marocchino/sticky-pull-request-comment@v2 + if: always() + with: + header: codercom-preview-docs + message: | + ✨ Coder.com for PR #${{ github.event.number }} deployed! It will be updated on every commit. + + * _Host_: ${{ steps.preview.outputs.url }}/docs + * _Last deploy status_: ${{ steps.preview.outcome }} + * _Commit_: ${{ github.sha }} + * _Workflow status_: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}