name: Preview build on: repository_dispatch: types: - Preview* jobs: preview: name: Build preview runs-on: ubuntu-20.04 container: # If you change this version, change the number in the cache step too. image: emscripten/emsdk:3.1.37 steps: - name: Update deployment status to in progress uses: octokit/request-action@v2.x with: route: POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses mediaType: | previews: - ant-man - flash owner: ${{ github.event.repository.owner.login }} repo: ${{ github.event.repository.name }} deployment_id: ${{ github.event.client_payload.deployment_id }} state: in_progress env: GITHUB_TOKEN: ${{ secrets.PREVIEW_GITHUB_TOKEN }} - name: Checkout uses: actions/checkout@v3 with: ref: ${{ github.event.client_payload.sha }} - name: Name branch run: | git config --global --add safe.directory ${GITHUB_WORKSPACE} name=$(echo "${{ github.event.client_payload.folder }}") git checkout -b ${name} - name: Setup cache uses: actions/cache@v3 with: path: /emsdk/upstream/emscripten/cache key: 3.1.37-${{ runner.os }} - name: Patch Emscripten to support LZMA run: | cd /emsdk/upstream/emscripten patch -p1 < ${GITHUB_WORKSPACE}/os/emscripten/emsdk-liblzma.patch - name: Build (host tools) run: | mkdir build-host cd build-host echo "::group::CMake" cmake .. -DOPTION_TOOLS_ONLY=ON echo "::endgroup::" echo "::group::Build" echo "Running on $(nproc) cores" make -j$(nproc) tools echo "::endgroup::" - name: Install GCC problem matcher uses: ammaraskar/gcc-problem-matcher@master - name: Build run: | mkdir build cd build echo "::group::CMake" emcmake cmake .. \ -DHOST_BINARY_DIR=../build-host \ -DCMAKE_BUILD_TYPE=Release \ # EOF echo "::endgroup::" echo "::group::Build" echo "Running on $(nproc) cores" cmake --build . -j $(nproc) --target openttd echo "::endgroup::" - name: Publish preview run: | pip3 install awscli aws s3 cp --only-show-errors build/openttd.data s3://${{ secrets.PREVIEW_S3_BUCKET }}/${{ github.event.client_payload.folder }}/ aws s3 cp --only-show-errors build/openttd.html s3://${{ secrets.PREVIEW_S3_BUCKET }}/${{ github.event.client_payload.folder }}/ aws s3 cp --only-show-errors build/openttd.js s3://${{ secrets.PREVIEW_S3_BUCKET }}/${{ github.event.client_payload.folder }}/ aws s3 cp --only-show-errors build/openttd.wasm s3://${{ secrets.PREVIEW_S3_BUCKET }}/${{ github.event.client_payload.folder }}/ # Invalidate the cache of the CloudFront distribution aws cloudfront create-invalidation --distribution-id ${{ secrets.PREVIEW_CF_DISTRIBUTION_ID }} --paths "/${{ github.event.client_payload.folder }}/*" env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - name: Update deployment status to success uses: octokit/request-action@v2.x with: route: POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses mediaType: | previews: - ant-man - flash owner: ${{ github.event.repository.owner.login }} repo: ${{ github.event.repository.name }} deployment_id: ${{ github.event.client_payload.deployment_id }} state: success environment_url: https://preview.openttd.org/${{ github.event.client_payload.folder }}/ env: GITHUB_TOKEN: ${{ secrets.PREVIEW_GITHUB_TOKEN }} - if: failure() name: Update deployment status to failure uses: octokit/request-action@v2.x with: route: POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses mediaType: | previews: - ant-man - flash owner: ${{ github.event.repository.owner.login }} repo: ${{ github.event.repository.name }} deployment_id: ${{ github.event.client_payload.deployment_id }} state: failure env: GITHUB_TOKEN: ${{ secrets.PREVIEW_GITHUB_TOKEN }}