aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2021-05-23 10:49:01 -0400
committerJosh Matthews <josh@joshmatthews.net>2021-05-23 11:16:09 -0400
commita82b268be0ee7cdcee26d53c853dbf447dd71d91 (patch)
tree45a316a934fae670f64fa4333d4a67c2c6c74af4
parent84c8653d7e55c6cf660e53e10404ac695368ca4e (diff)
downloadservo-a82b268be0ee7cdcee26d53c853dbf447dd71d91.tar.gz
servo-a82b268be0ee7cdcee26d53c853dbf447dd71d91.zip
Convert more taskcluster jobs to Github Actions.
-rw-r--r--.github/workflows/docs.yml30
-rw-r--r--.github/workflows/nightly.yml110
-rw-r--r--python/servo/package_commands.py9
3 files changed, 148 insertions, 1 deletions
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
new file mode 100644
index 00000000000..4c92e6c2fa6
--- /dev/null
+++ b/.github/workflows/docs.yml
@@ -0,0 +1,30 @@
+name: Docs upload
+
+on:
+ push:
+ branches: ["master"]
+ workflow_dispatch:
+
+jobs:
+ upload-docs:
+ name: Upload docs to GitHub Pages
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ fetch-depth: 2
+ - name: Compile docs
+ run: python3 ./mach doc
+ env:
+ RUSTDOCFLAGS: --disable-minification
+ - name: Upload docs
+ run: |
+ cd target/doc
+ git init
+ git add .
+ git -c user.name="Workflow" -c user.email="" \
+ commit -q -m "Rebuild Servo documentation"
+ git remote set-url origin https://git:${DOC_SERVO_ORG}@github.com/servo/doc.servo.org
+ git push --force origin FETCH_HEAD:gh-pages
+ env:
+ DOC_SERVO_ORG: ${{ secrets.DOC_SERVO_ORG }}
diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml
new file mode 100644
index 00000000000..2748ce5534d
--- /dev/null
+++ b/.github/workflows/nightly.yml
@@ -0,0 +1,110 @@
+name: Nightly builds
+
+on:
+ schedule:
+ # Run at 5:30 am, daily.
+ - cron: '15 5 * * *'
+ workflow_dispatch:
+
+env:
+ RUST_BACKTRACE: 1
+ SHELL: /bin/bash
+
+jobs:
+ build-linux-with-rust-nightly:
+ name: Build (Linux) + rustc nightly
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ fetch-depth: 2
+ - name: Update rustc
+ run: echo nightly > rust-toolchain
+ - name: Bootstrap
+ run: |
+ python3 -m pip install --upgrade pip virtualenv
+ sudo apt update
+ python3 ./mach bootstrap
+ - name: Release build
+ run: python3 ./mach build --release
+ - name: Unit tests
+ run: python3 ./mach test-unit --release
+
+ upload-linux:
+ name: Upload nightly (Linux)
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ fetch-depth: 2
+ - name: Bootstrap
+ run: |
+ python3 -m pip install --upgrade pip virtualenv
+ sudo apt update
+ python3 ./mach bootstrap
+ - name: Release build
+ run: python3 ./mach build --release
+ - name: Package
+ run: python3 ./mach package --release
+ - name: Upload
+ run: python3 ./mach upload-nightly linux --secret-from-environment
+ env:
+ S3_UPLOAD_CREDENTIALS: ${{ secrets.S3_UPLOAD_CREDENTIALS }}
+
+ upload-mac:
+ name: Upload nightly (macOS)
+ runs-on: macos-10.15
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ fetch-depth: 2
+ - name: Bootstrap
+ run: |
+ python3 -m pip install --upgrade pip virtualenv
+ brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile
+ brew bundle install --verbose --no-upgrade --file=etc/taskcluster/macos/Brewfile-build
+ rm -rf /usr/local/etc/openssl
+ rm -rf /usr/local/etc/openssl@1.1
+ brew install openssl@1.1 gnu-tar
+ - name: Release build
+ run: |
+ export OPENSSL_INCLUDE_DIR="$(brew --prefix openssl)/include"
+ export OPENSSL_LIB_DIR="$(brew --prefix openssl)/lib"
+ export PKG_CONFIG_PATH="$(brew --prefix libffi)/lib/pkgconfig/"
+ export PKG_CONFIG_PATH="$(brew --prefix zlib)/lib/pkgconfig/:$PKG_CONFIG_PATH"
+ python3 ./mach build --release
+ - name: Package
+ run: python3 ./mach package --release
+ - name: Smoketest
+ run: ./etc/ci/macos_package_smoketest.sh target/release/servo-tech-demo.dmg
+ - name: Upload
+ run: python3 ./mach upload-nightly mac --secret-from-environment
+ env:
+ S3_UPLOAD_CREDENTIALS: ${{ secrets.S3_UPLOAD_CREDENTIALS }}
+ GITHUB_HOMEBREW_TOKEN: ${{ secrets.HOMEBREW_TOKEN }}
+
+ upload-win:
+ name: Upload nightly (Windows)
+ runs-on: windows-2019
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ fetch-depth: 2
+ - name: Copy to C drive
+ run: cp D:\a C:\ -Recurse
+ - name: Bootstrap
+ working-directory: "C:\\a\\${ REPOSITORY_NAME }\\${ REPOSITORY_NAME }"
+ run: |
+ python -m pip install --upgrade pip virtualenv
+ python mach fetch
+ - name: Release build
+ working-directory: "C:\\a\\${ REPOSITORY_NAME }\\${ REPOSITORY_NAME }"
+ run: python mach build --release --media-stack=dummy
+ - name: Package
+ working-directory: "C:\\a\\${ REPOSITORY_NAME }\\${ REPOSITORY_NAME }"
+ run: python mach package --release
+ - name: Upload
+ working-directory: "C:\\a\\${ REPOSITORY_NAME }\\${ REPOSITORY_NAME }"
+ run: python mach upload-nightly windows-msvc --secret-from-environment
+ env:
+ S3_UPLOAD_CREDENTIALS: ${{ secrets.S3_UPLOAD_CREDENTIALS }}
diff --git a/python/servo/package_commands.py b/python/servo/package_commands.py
index 02c29ba4d23..280fe782481 100644
--- a/python/servo/package_commands.py
+++ b/python/servo/package_commands.py
@@ -601,7 +601,10 @@ class PackageCommands(CommandBase):
@CommandArgument('--secret-from-taskcluster',
action='store_true',
help='Retrieve the appropriate secrets from taskcluster.')
- def upload_nightly(self, platform, secret_from_taskcluster):
+ @CommandArgument('--secret-from-environment',
+ action='store_true',
+ help='Retrieve the appropriate secrets from the environment.')
+ def upload_nightly(self, platform, secret_from_taskcluster, secret_from_environment):
import boto3
def get_s3_secret():
@@ -611,6 +614,10 @@ class PackageCommands(CommandBase):
secret = get_taskcluster_secret("s3-upload-credentials")
aws_access_key = secret["aws_access_key_id"]
aws_secret_access_key = secret["aws_secret_access_key"]
+ elif secret_from_environment:
+ secret = json.loads(os.environ['S3_UPLOAD_CREDENTIALS'])
+ aws_access_key = secret["aws_access_key_id"]
+ aws_secret_access_key = secret["aws_secret_access_key"]
return (aws_access_key, aws_secret_access_key)
def nightly_filename(package, timestamp):