name: Joplin Continuous Integration on: [push, pull_request] jobs: Main: runs-on: ${{ matrix.os }} strategy: matrix: # Removed windows-2016 for now - discontinued by GitHub os: [macos-latest, ubuntu-latest, windows-2019] steps: # Silence apt-get update errors (for example when a module doesn't # exist) since otherwise it will make the whole build fails, even though # it might work without update. libsecret-1-dev is required for keytar - # https://github.com/atom/node-keytar - name: Install Linux dependencies if: runner.os == 'Linux' run: | sudo apt-get update || true sudo apt-get install -y gettext sudo apt-get install -y libsecret-1-dev sudo apt-get install -y translate-toolkit - name: Install macOS dependencies if: runner.os == 'macOS' run: | brew update brew install gettext brew install translate-toolkit - name: Install Docker Engine # if: runner.os == 'Linux' && startsWith(github.ref, 'refs/tags/server-v') if: runner.os == 'Linux' run: | sudo apt-get install -y apt-transport-https sudo apt-get install -y ca-certificates sudo apt-get install -y curl sudo apt-get install -y gnupg sudo apt-get install -y lsb-release curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo \ "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update || true sudo apt-get install -y docker-ce docker-ce-cli containerd.io - uses: actions/checkout@v2 - uses: olegtarasov/get-tag@v2.1 - uses: actions/setup-node@v2 with: node-version: '16' - name: Install Yarn run: | # https://yarnpkg.com/getting-started/install corepack enable # Login to Docker only if we're on a server release tag. If we run this on # a pull request it will fail because the PR doesn't have access to # secrets - uses: docker/login-action@v1 if: runner.os == 'Linux' && startsWith(github.ref, 'refs/tags/server-v') with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Run tests, build and publish Linux and macOS apps if: runner.os == 'Linux' || runner.os == 'macOs' env: APPLE_ASC_PROVIDER: ${{ secrets.APPLE_ASC_PROVIDER }} APPLE_ID: ${{ secrets.APPLE_ID }} APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} CSC_KEY_PASSWORD: ${{ secrets.APPLE_CSC_KEY_PASSWORD }} CSC_LINK: ${{ secrets.APPLE_CSC_LINK }} GH_TOKEN: ${{ secrets.GH_TOKEN }} IS_CONTINUOUS_INTEGRATION: 1 BUILD_SEQUENCIAL: 1 run: | "${GITHUB_WORKSPACE}/.github/scripts/run_ci.sh" - name: Build and publish Windows app if: runner.os == 'Windows' && startsWith(github.ref, 'refs/tags/v') env: CSC_KEY_PASSWORD: ${{ secrets.WINDOWS_CSC_KEY_PASSWORD }} CSC_LINK: ${{ secrets.WINDOWS_CSC_LINK }} GH_TOKEN: ${{ secrets.GH_TOKEN }} IS_CONTINUOUS_INTEGRATION: 1 BUILD_SEQUENCIAL: 1 # To ensure that the operations stop on failure, all commands # should be on one line with "&&" in between. run: | yarn install && cd packages/app-desktop && yarn run dist # Build and package the Windows app, without publishing it, just to # verify that the build process hasn't been broken. - name: Build Windows app (no publishing) if: runner.os == 'Windows' && !startsWith(github.ref, 'refs/tags/v') env: IS_CONTINUOUS_INTEGRATION: 1 BUILD_SEQUENCIAL: 1 SERVER_REPOSITORY: joplin/server SERVER_TAG_PREFIX: server run: | yarn install && cd packages/app-desktop && yarn run dist --publish=never ServerDockerImage: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest] steps: - name: Install Docker Engine run: | sudo apt-get install -y apt-transport-https sudo apt-get install -y ca-certificates sudo apt-get install -y curl sudo apt-get install -y gnupg sudo apt-get install -y lsb-release curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo \ "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update || true sudo apt-get install -y docker-ce docker-ce-cli containerd.io - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: node-version: '16' - name: Install Yarn run: | # https://yarnpkg.com/getting-started/install corepack enable - name: Build Docker Image env: BUILD_SEQUENCIAL: 1 run: | yarn install yarn run buildServerDocker --tag-name server-v0.0.0 --repository joplin/server