94 lines
2.2 KiB
YAML
94 lines
2.2 KiB
YAML
name: CI
|
|
|
|
on: [push, pull_request]
|
|
|
|
env:
|
|
IMAGE: ${{ github.repository }}
|
|
TAG: ${{ github.sha }}
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- uses: actions/setup-node@v1
|
|
with:
|
|
node-version: '12.x'
|
|
|
|
- name: Install dependencies
|
|
run: yarn install
|
|
|
|
- name: Build
|
|
run: |
|
|
export VUE_APP_BUILD=$TAG
|
|
export VUE_APP_BUILD_DATE=$(date --iso-8601)
|
|
yarn build
|
|
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: dist
|
|
path: dist
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v1
|
|
|
|
- name: Log in to docker hub
|
|
run: docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} -p ${{ secrets.DOCKER_HUB_PASSWORD }}
|
|
|
|
- name: Build docker image
|
|
run: |
|
|
docker buildx build \
|
|
--platform linux/arm64 \
|
|
--tag $IMAGE:$TAG \
|
|
--file docker/Dockerfile .
|
|
|
|
preview:
|
|
runs-on: ubuntu-latest
|
|
needs: build
|
|
if: github.ref != 'refs/heads/master'
|
|
steps:
|
|
- name: Download artifact
|
|
uses: actions/download-artifact@v2
|
|
with:
|
|
name: dist
|
|
|
|
- name: Deploy preview
|
|
uses: netlify/actions/cli@master
|
|
env:
|
|
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
|
|
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
|
|
with:
|
|
args: deploy --dir=.
|
|
|
|
deploy:
|
|
runs-on: ubuntu-latest
|
|
needs: build
|
|
if: github.ref == 'refs/heads/master'
|
|
steps:
|
|
- name: Download artifact
|
|
uses: actions/download-artifact@v2
|
|
with:
|
|
name: dist
|
|
|
|
- name: Deploy site
|
|
uses: netlify/actions/cli@master
|
|
env:
|
|
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
|
|
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
|
|
with:
|
|
args: deploy --dir=. --prod
|
|
|
|
publish_docker_image:
|
|
runs-on: ubuntu-latest
|
|
needs: build
|
|
if: github.ref == 'refs/heads/master'
|
|
steps:
|
|
- name: Push latest
|
|
run: |
|
|
docker pull $IMAGE:$TAG
|
|
docker tag $IMAGE:$TAG $IMAGE:latest
|
|
docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} -p ${{ secrets.DOCKER_HUB_PASSWORD }}
|
|
docker push $IMAGE:latest
|