diff --git a/.github/workflows/ci-pre-release.yml b/.github/workflows/ci-pre-release.yml new file mode 100644 index 0000000..5c79e33 --- /dev/null +++ b/.github/workflows/ci-pre-release.yml @@ -0,0 +1,85 @@ +name: 'CI' + +on: + push: + branches: + - 'release/**' + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Set up NodeJs + uses: actions/setup-node@v2 + with: + node-version: 16 + - name: Install dependencies + run: npm ci + - name: Linter + run: npm run lint + - name: Typecheck + run: npm run typecheck + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Set up NodeJs + uses: actions/setup-node@v2 + with: + node-version: 16 + - name: Install dependencies + run: npm ci + - name: Unit tests + run: npm run test:unit:ci + docker: + runs-on: ubuntu-latest + needs: + - lint + - test + steps: + - name: Checkout + uses: actions/checkout@v2 + + - uses: actions/setup-node@v2 + with: + node-version: 16 + - name: Prepare + id: prep + run: | + DOCKER_IMAGE=${{ secrets.DOCKER_USERNAME }}/${GITHUB_REPOSITORY#*/} + VERSION=$(node -e "console.log(require('./package.json').version);") + + TAGS="${DOCKER_IMAGE}:${VERSION}-pre" + + echo ::set-output name=tags::${TAGS} + echo ::set-output name=docker_image::${DOCKER_IMAGE} + + - name: Set up QEMU + uses: docker/setup-qemu-action@master + with: + platforms: all + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@master + + - name: Available platforms + run: echo ${{ steps.buildx.outputs.platforms }} + + - name: Login to DockerHub + if: github.event_name != 'pull_request' + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Build + uses: docker/build-push-action@v2 + with: + builder: ${{ steps.buildx.outputs.name }} + context: . + file: ./Dockerfile + platforms: linux/amd64,linux/arm64 + push: true + tags: ${{ steps.prep.outputs.tags }}