name: Ontime build on: push: # run when a tag is created tags: - '*' workflow_dispatch: jobs: build_mac: runs-on: macOS-latest timeout-minutes: 20 env: CI: '' steps: - uses: actions/checkout@v2 - name: Use Node.js uses: actions/setup-node@v2 with: node-version: '14.x' # React - name: React - Install dependencies run: yarn install --frozen-lockfile --network-timeout 300000 working-directory: ./client - name: React - Build project run: yarn build working-directory: ./client # Node server - name: Server - Install dependencies run: yarn install --frozen-lockfile --production --network-timeout 300000 working-directory: ./server/src # App - name: Electron - Install dependencies shell: bash run: yarn install --frozen-lockfile --network-timeout 300000 && yarn setdb working-directory: ./server - name: Electron - Build app run: yarn dist-mac working-directory: ./server # Release - name: Release uses: softprops/action-gh-release@v1 with: files: ./server/dist/ontime-macOS.dmg env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} build_win: runs-on: windows-latest timeout-minutes: 20 env: CI: '' steps: - uses: actions/checkout@v2 - name: Use Node.js uses: actions/setup-node@v1 with: node-version: '14.x' # React - name: React - Install dependencies run: yarn install --frozen-lockfile --network-timeout 300000 working-directory: ./client - name: React - Build project run: yarn build working-directory: ./client # Node server - name: Server - Install dependencies run: yarn install --frozen-lockfile --production --network-timeout 300000 working-directory: ./server/src # App - name: Electron - Install dependencies shell: bash run: yarn install --frozen-lockfile --network-timeout 300000 && yarn setdb working-directory: ./server - name: Electron - Build app run: yarn dist-win working-directory: ./server # Release - name: Release uses: softprops/action-gh-release@v1 with: files: ./server/dist/ontime-win64.exe env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} build_linux: runs-on: ubuntu-latest timeout-minutes: 20 env: CI: '' steps: - uses: actions/checkout@v2 - name: Use Node.js uses: actions/setup-node@v1 with: node-version: '14.x' # React - name: React - Install dependencies run: yarn install --frozen-lockfile --network-timeout 300000 working-directory: ./client - name: React - Build project run: yarn build working-directory: ./client # Node server - name: Server - Install dependencies run: yarn install --frozen-lockfile --production --network-timeout 300000 working-directory: ./server/src # App - name: Electron - Install dependencies shell: bash run: yarn install --frozen-lockfile --network-timeout 300000 && yarn setdb working-directory: ./server - name: Electron - Build app run: yarn dist-linux working-directory: ./server # Release - name: Release uses: softprops/action-gh-release@v1 with: files: ./server/dist/ontime-linux.AppImage env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} publish_docker: runs-on: ubuntu-latest timeout-minutes: 20 env: CI: '' steps: - uses: actions/checkout@v2 - name: Setup env run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV - name: Use Node.js uses: actions/setup-node@v1 with: node-version: '14.x' # React - name: React - Install dependencies run: yarn install --network-timeout 300000 working-directory: ./client - name: React - Build project run: yarn build working-directory: ./client # Node server - name: Server - Install dependencies run: yarn install --frozen-lockfile --production --network-timeout 300000 working-directory: ./server/src # Login to docker - name: Login to Docker Hub uses: docker/login-action@v1 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} # Prepare builder - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 # Build and push - name: Build and push uses: docker/build-push-action@v2 with: context: . file: ./Dockerfile push: true tags: ${{ secrets.DOCKERHUB_USERNAME }}/ontime:${{ env.RELEASE_VERSION }} , ${{ secrets.DOCKERHUB_USERNAME }}/ontime:latest