Skip to content

Commit

Permalink
Prepare master branch for automatic build and deploy (#334)
Browse files Browse the repository at this point in the history
* Prepare master branch for automatic build and deploy

* Fix nits
  • Loading branch information
beaufortfrancois committed Jun 19, 2019
1 parent 9c07e72 commit 97bdc8d
Show file tree
Hide file tree
Showing 6 changed files with 97 additions and 8 deletions.
18 changes: 18 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
language: python
sudo: false
python:
- "2.7"

install:
# Setup bikeshed. See https://tabatkins.github.io/bikeshed/#install-linux
- git clone https://github.com/tabatkins/bikeshed.git
- pip install --editable $PWD/bikeshed
- bikeshed update

script:
- bash ./deploy.sh

env:
global:
- ENCRYPTION_LABEL: "91c2b054e1aa"
- COMMIT_AUTHOR_EMAIL: travis-ci@w3.org
9 changes: 9 additions & 0 deletions compile.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/bin/bash
set -e # Exit with nonzero exit code if anything fails

make -C spec

if [ -d out ]; then
echo Copy spec/index.html into out/index.html
cp spec/index.html out/index.html
fi
63 changes: 63 additions & 0 deletions deploy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
#!/bin/bash
set -e # Exit with nonzero exit code if anything fails

SOURCE_BRANCH="master"
TARGET_BRANCH="gh-pages"

function doCompile {
chmod 755 ./compile.sh
./compile.sh
}

# Pull requests and commits to other branches shouldn't try to deploy, just build to verify
if [ "$TRAVIS_PULL_REQUEST" != "false" -o "$TRAVIS_BRANCH" != "$SOURCE_BRANCH" ]; then
echo "Skipping deploy; just doing a build."
doCompile
exit 0
fi

# Save some useful information
REPO=`git config remote.origin.url`
SSH_REPO=${REPO/https:\/\/github.com\//git@github.com:}
SHA=`git rev-parse --verify HEAD`

# Clone the existing gh-pages for this repo into out/
# Create a new empty branch if gh-pages doesn't exist yet (should only happen on first deploy)
# Delete all existing contents except .git (we will re-create them)
git clone $REPO out
cd out
git checkout $TARGET_BRANCH || git checkout --orphan $TARGET_BRANCH
find -maxdepth 1 ! -name .git ! -name . | xargs rm -rf
cd ..

# Run our compile script
doCompile

# Now let's go have some fun with the cloned repo
cd out
git config user.name "Travis CI"
git config user.email "$COMMIT_AUTHOR_EMAIL"

# If there are no changes to the compiled out (e.g. this is a README update) then just bail.
if git diff --quiet; then
echo "No changes to the output on this push; exiting."
exit 0
fi

# Commit the "changes", i.e. the new version.
# The delta will show diffs between new and old versions.
git add -A .
git commit -m "Deploy to GitHub Pages: ${SHA}"

# Get the deploy key by using Travis's stored variables to decrypt deploy_key.enc
ENCRYPTED_KEY_VAR="encrypted_${ENCRYPTION_LABEL}_key"
ENCRYPTED_IV_VAR="encrypted_${ENCRYPTION_LABEL}_iv"
ENCRYPTED_KEY=${!ENCRYPTED_KEY_VAR}
ENCRYPTED_IV=${!ENCRYPTED_IV_VAR}
openssl aes-256-cbc -K $ENCRYPTED_KEY -iv $ENCRYPTED_IV -in ../deploy_key.enc -out ../deploy_key -d
chmod 600 ../deploy_key
eval `ssh-agent -s`
ssh-add ../deploy_key

# Now that we're all set up, we can push.
git push $SSH_REPO $TARGET_BRANCH
Binary file added deploy_key.enc
Binary file not shown.
2 changes: 1 addition & 1 deletion spec/Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
all: index.html webgpu.idl

index.html: index.bs
bikeshed -f spec index.bs
bikeshed spec index.bs

webgpu.idl: index.bs extract-idl.py
python extract-idl.py index.bs > webgpu.idl
Expand Down
13 changes: 6 additions & 7 deletions spec/index.bs
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ typedef (sequence<u32> or GPUExtent3DDict) GPUExtent3D;

typedef sequence<any> GPUMappedBuffer; // [GPUBuffer, ArrayBuffer]

interface GPUObjectBase {
interface mixin GPUObjectBase {
attribute DOMString? label;
};

Expand Down Expand Up @@ -823,7 +823,8 @@ dictionary GPULimits {
};

// Device
interface GPUDevice : GPUObjectBase {
[Exposed=(Window, Worker)]
interface GPUDevice : EventTarget {
readonly attribute GPUExtensions extensions;
readonly attribute GPULimits limits;
readonly attribute GPUAdapter adapter;
Expand All @@ -832,7 +833,7 @@ interface GPUDevice : GPUObjectBase {
GPUMappedBuffer createBufferMapped(GPUBufferDescriptor descriptor);
Promise<GPUMappedBuffer> createBufferMappedAsync(GPUBufferDescriptor descriptor);
GPUTexture createTexture(GPUTextureDescriptor descriptor);
GPUSampler createSampler(GPUSamplerDescriptor descriptor);
GPUSampler createSampler(optional GPUSamplerDescriptor descriptor);

GPUBindGroupLayout createBindGroupLayout(GPUBindGroupLayoutDescriptor descriptor);
GPUPipelineLayout createPipelineLayout(GPUPipelineLayoutDescriptor descriptor);
Expand All @@ -847,6 +848,8 @@ interface GPUDevice : GPUObjectBase {
GPUQueue getQueue();
};

GPUDevice includes GPUObjectBase;

dictionary GPUDeviceDescriptor : GPUObjectDescriptorBase {
GPUExtensions extensions;
GPULimits limits;
Expand Down Expand Up @@ -948,10 +951,6 @@ dictionary GPUUncapturedErrorEventInit : EventInit {
required GPUError error;
};

// TODO: EventTarget is actually an interface, not a mixin, but it probably should be a mixin.
[Exposed=Window]
GPUDevice includes EventTarget;

partial interface GPUDevice {
[Exposed=Window]
attribute EventHandler onuncapturederror;
Expand Down

0 comments on commit 97bdc8d

Please sign in to comment.