Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GitHub Actions: Build Plugin zip, store as artifact on every PR #26746

Merged
merged 3 commits into from
Nov 20, 2020

Conversation

ockham
Copy link
Contributor

@ockham ockham commented Nov 5, 2020

Description

Spun off from #19626 since apparently this functionality was found useful 😄

Build the plugin zip on every PR and store the file as an artifact so it can be used for testing outside of a dev environment.

How has this been tested?

  • At the bottom of this PR, locate the GitHub actions that were run.
  • Find the 'Build Gutenberg Plugin Zip' one and click on its 'Details' link.

image

  • Click the 'Artifacts' dropdown

image

  • Click the 'gutenberg-plugin` link in order to start the download

  • This will download a zip named gutenberg-plugin.zip which contains the actual plugin zip (gutenberg.zip). The double-zip is due to a limitation of GitHub's upload-artifacts action. We can work around this (by changing the action to upload files individually, and rely on GH to bundle them in a zip anyway), but that might have the downside that if we want to pass artifacts between jobs (which might come in handy e.g. for e2e tests and the like), we'll also have to pass artifact contents individually, which seems suboptimal. I thus opted to keep the double zip for now.

Types of changes

New dev feature.

@ockham ockham added the [Type] Build Tooling Issues or PRs related to build tooling label Nov 5, 2020
@ockham ockham self-assigned this Nov 5, 2020
@github-actions
Copy link

github-actions bot commented Nov 5, 2020

Size Change: 0 B

Total Size: 1.19 MB

ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/annotations/index.js 3.8 kB 0 B
build/api-fetch/index.js 3.42 kB 0 B
build/autop/index.js 2.84 kB 0 B
build/blob/index.js 664 B 0 B
build/block-directory/index.js 8.72 kB 0 B
build/block-directory/style-rtl.css 943 B 0 B
build/block-directory/style.css 942 B 0 B
build/block-editor/index.js 133 kB 0 B
build/block-editor/style-rtl.css 11.3 kB 0 B
build/block-editor/style.css 11.3 kB 0 B
build/block-library/editor-rtl.css 8.95 kB 0 B
build/block-library/editor.css 8.95 kB 0 B
build/block-library/index.js 147 kB 0 B
build/block-library/style-rtl.css 8.1 kB 0 B
build/block-library/style.css 8.1 kB 0 B
build/block-library/theme-rtl.css 792 B 0 B
build/block-library/theme.css 793 B 0 B
build/block-serialization-default-parser/index.js 1.87 kB 0 B
build/block-serialization-spec-parser/index.js 3.06 kB 0 B
build/blocks/index.js 48 kB 0 B
build/components/index.js 172 kB 0 B
build/components/style-rtl.css 15.3 kB 0 B
build/components/style.css 15.3 kB 0 B
build/compose/index.js 9.95 kB 0 B
build/core-data/index.js 14.8 kB 0 B
build/data-controls/index.js 827 B 0 B
build/data/index.js 8.8 kB 0 B
build/date/index.js 11.2 kB 0 B
build/deprecated/index.js 768 B 0 B
build/dom-ready/index.js 571 B 0 B
build/dom/index.js 4.92 kB 0 B
build/edit-navigation/index.js 11.2 kB 0 B
build/edit-navigation/style-rtl.css 881 B 0 B
build/edit-navigation/style.css 885 B 0 B
build/edit-post/index.js 306 kB 0 B
build/edit-post/style-rtl.css 6.45 kB 0 B
build/edit-post/style.css 6.44 kB 0 B
build/edit-site/index.js 23.2 kB 0 B
build/edit-site/style-rtl.css 3.85 kB 0 B
build/edit-site/style.css 3.85 kB 0 B
build/edit-widgets/index.js 26.4 kB 0 B
build/edit-widgets/style-rtl.css 3.13 kB 0 B
build/edit-widgets/style.css 3.13 kB 0 B
build/editor/editor-styles-rtl.css 476 B 0 B
build/editor/editor-styles.css 478 B 0 B
build/editor/index.js 42.7 kB 0 B
build/editor/style-rtl.css 3.85 kB 0 B
build/editor/style.css 3.85 kB 0 B
build/element/index.js 4.62 kB 0 B
build/escape-html/index.js 735 B 0 B
build/format-library/index.js 6.86 kB 0 B
build/format-library/style-rtl.css 547 B 0 B
build/format-library/style.css 548 B 0 B
build/hooks/index.js 2.16 kB 0 B
build/html-entities/index.js 623 B 0 B
build/i18n/index.js 3.57 kB 0 B
build/is-shallow-equal/index.js 698 B 0 B
build/keyboard-shortcuts/index.js 2.54 kB 0 B
build/keycodes/index.js 1.94 kB 0 B
build/list-reusable-blocks/index.js 3.1 kB 0 B
build/list-reusable-blocks/style-rtl.css 476 B 0 B
build/list-reusable-blocks/style.css 476 B 0 B
build/media-utils/index.js 5.32 kB 0 B
build/notices/index.js 1.81 kB 0 B
build/nux/index.js 3.42 kB 0 B
build/nux/style-rtl.css 671 B 0 B
build/nux/style.css 668 B 0 B
build/plugins/index.js 2.56 kB 0 B
build/primitives/index.js 1.43 kB 0 B
build/priority-queue/index.js 790 B 0 B
build/redux-routine/index.js 2.84 kB 0 B
build/reusable-blocks/index.js 3.06 kB 0 B
build/rich-text/index.js 13.3 kB 0 B
build/server-side-render/index.js 2.77 kB 0 B
build/shortcode/index.js 1.69 kB 0 B
build/token-list/index.js 1.27 kB 0 B
build/url/index.js 4.05 kB 0 B
build/viewport/index.js 1.86 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.22 kB 0 B

compressed-size-action

@ellatrix
Copy link
Member

ellatrix commented Nov 7, 2020

Hm, what I think would be more useful is to have a build repository (so it is version controlled and bisectable) that syncs with every commit in master. Testers can download a zip straight from the build repository on Github (UI is familiar and less steps). A potential Gutenberg bleeding edge plugin can just pull the changes from this repository (which would be an svn mirror of this build repository).

@ockham
Copy link
Contributor Author

ockham commented Nov 9, 2020

Hm, what I think would be more useful is to have a build repository (so it is version controlled and bisectable) that syncs with every commit in master. Testers can download a zip straight from the build repository on Github (UI is familiar and less steps). A potential Gutenberg bleeding edge plugin can just pull the changes from this repository (which would be an svn mirror of this build repository).

I think that the zips generated from this PR would be available for GH master, from the CI integration there, no? (The little yellow dot left of 'Some checks haven't completed yet' in the screenshot below.) After all, the action is set to be triggered by pushes to master.
image

I think that those should be accessible via GH's REST API, so they would also be available for fetching by a bleeding edge plugin as you describe 🤔

Copy link
Member

@sirreal sirreal left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I find this helpful and likely to make testing easier.

In the future, I can imagine scenarios where the zip artifact is used in other parts of the build, for example it could be installed as the plugin for the e2e tests. That would help to prevent issues that only manifest in the zipped plugin such as #25792.

I'd approve, but I don't want to overstep and think approval from the folks who own the build + deploy is important for this type of change.

paths-ignore:
- '**.md'
push:
branches: [master]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I assume this is a different yaml array syntax, but I expected a single-item list like:

  branches:
    - master

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point! FWIW, this was copy-pasted from the existing unit-test GH action, and I think that most of the other actions also have it like this, but we can change it here (and maybe file a PR to change it for the existing actions).

Comment on lines +33 to +36
- name: Use Node.js 12.x
uses: actions/setup-node@v1
with:
node-version: 12.x
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It might be nice to use .nvmrc version. There are some good suggestions here: actions/setup-node#32

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Same as #26746 (comment) applies.)

@ockham ockham force-pushed the add/build-gh-action-on-every-pr branch from 0a0a80b to fa37f2a Compare November 19, 2020 13:54
@sirreal sirreal force-pushed the add/build-gh-action-on-every-pr branch from fa37f2a to 7265734 Compare November 20, 2020 08:52
@sirreal
Copy link
Member

sirreal commented Nov 20, 2020

There was a test failure that looks unrelated. I've gone ahead and rebased.

Copy link
Member

@sirreal sirreal left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this adds value and downsides are not apparent to me. Let's go ahead and land this, it's easy enough to remove.

@ockham
Copy link
Contributor Author

ockham commented Nov 20, 2020

Thans a lot, Jon!

@ockham ockham merged commit c06d7a1 into master Nov 20, 2020
@ockham ockham deleted the add/build-gh-action-on-every-pr branch November 20, 2020 11:54
@github-actions github-actions bot added this to the Gutenberg 9.5 milestone Nov 20, 2020
@skorasaurus
Copy link
Member

Just want to say major kudos for adding this; thank you! This greatly lowers the barriers/obstacles for users to test out pull requests: it's no longer require for someone to have git installed, configured to check out a pull request!

I noticed isn't applicable to any PRs that were first made before this was merged understandably; although I'm not sure if that also applies to PRs that pull changes from the master branch since then.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Type] Build Tooling Issues or PRs related to build tooling
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants