name: CI on: - push env: IMAGE: ${{ github.repository }} VERSION: ${{ 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=$VERSION export VUE_APP_BUILD_DATE=$(date --iso-8601) yarn build - name: Upload artifact uses: actions/upload-artifact@v2 with: name: dist path: dist build_docker_image: runs-on: ubuntu-latest needs: build steps: - uses: actions/checkout@v2 - name: Download artifact uses: actions/download-artifact@v2 with: name: dist path: dist - name: Build docker image run: docker build -t $IMAGE:$VERSION -f docker/Dockerfile . - name: Push docker image if: ${{ github.event_name != 'pull_request' }} run: | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} -p ${{ secrets.DOCKER_HUB_PASSWORD }} docker push $IMAGE:$VERSION 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 path: 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=dist 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 path: 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=dist --prod publish_latest_docker_image: runs-on: ubuntu-latest needs: build_docker_image if: github.ref == 'refs/heads/master' steps: - name: Push latest run: | docker pull $IMAGE:$VERSION docker tag $IMAGE:$VERSION $IMAGE:latest docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} -p ${{ secrets.DOCKER_HUB_PASSWORD }} docker push $IMAGE:latest