name: build on: [push] jobs: test: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - name: cache node modules uses: actions/cache@v2 id: yarn-cache with: path: node_modules key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- - name: yarn install if: steps.yarn-cache.outputs.cache-hit != 'true' run: yarn install - name: yarn netlify-sass run: yarn netlify-sass - name: yarn build run: yarn build - name: run tests run: yarn test-ci - name: run puppeteer tests run: yarn test-puppeteer-build docker: runs-on: ubuntu-20.04 needs: test permissions: packages: write contents: read steps: - uses: actions/checkout@v2 - name: Set up Docker Buildx id: buildx uses: docker/setup-buildx-action@v1 - name: Cache Docker layers uses: actions/cache@v2 with: path: /tmp/.buildx-cache key: ${{ runner.os }}-buildx-${{ github.sha }} restore-keys: | ${{ runner.os }}-buildx- - name: login to container registry uses: docker/login-action@v1 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: get tags shell: bash run: echo "##[set-output name=tags;]ghcr.io/commaai/cabana:$(echo ${GITHUB_REF#refs/heads/})$(if [ ${GITHUB_REF} = refs/heads/master ] ; then echo ,ghcr.io/commaai/cabana:latest; fi;)" id: extract_tags - name: Build and push uses: docker/build-push-action@v2 with: build-args: SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }} builder: ${{ steps.buildx.outputs.name }} context: . push: true tags: ${{ steps.extract_tags.outputs.tags }} cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache-new - name: Move cache run: | rm -rf /tmp/.buildx-cache mv /tmp/.buildx-cache-new /tmp/.buildx-cache