GitHub Actions
Giovanni Tirloni
gtirloni at ocadu.ca
Fri Jun 19 12:31:46 UTC 2020
Hi Tony,
I translated the Jenkins configuration that lived in the ci-service repository:
https://github.com/fluid-project/ci-service/blob/master/jenkins_jobs/infusion-pull-request.yml
Into the GitHub Actions workflow configuration that lives in each code repository:
https://github.com/fluid-project/infusion/blob/master/.github/workflows/main.yml
Instead of using our Jenkins node (located in the IDRC datacenter), it's using the GitHub-hosted runners.
Here we say the workflow should run on pushes and PRs for the master branch only:
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
The CI job runs on ubuntu-latest (for now, there's a PR to run it on Windows as well):
jobs:
build:
runs-on: ubuntu-latest
The build strategy means GitHub will template/duplicate the build definition for each of these values. They are just strings but it means we're testing against Node.js 10.x and 12.x:
strategy:
matrix:
node-version: [10.x, 12.x]
We pass the HEADLESS env var so our tests run in Firefox/Chrome headless:
env:
HEADLESS: true
Then come the actual build instructions. We first do a Git checkout of the repo:
steps:
- uses: actions/checkout at v2
Then we install the Node.js version we want, based on that matrix definition above.
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node at v1
with:
node-version: ${{ matrix.node-version }}
And the usual build commands in separate Steps:
- name: Install Node.js dependencies
run: npm install
- name: Code linter
run: $(npm bin)/grunt lint
- name: Browser tests
run: $(npm bin)/testem ci --file tests/testem.js
- name: Node.js tests
run: $(npm bin)/nyc node tests/node-tests/basic-node-tests.js
We are not using any special Action but there's a marketplace of them: https://github.com/marketplace?type=actions . They are basically Git repos with docker images or Javascript to run arbitrary code.
The syntax reference for Workflow files is here: https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions
Regards,
Giovanni
________________________________
From: Tony Atkins <tony at raisingthefloor.org>
Sent: Friday, June 19, 2020 06:20
To: Giovanni Tirloni <gtirloni at ocadu.ca>
Cc: fluid-work at lists.idrc.ocad.ca <fluid-work at lists.idrc.ocad.ca>
Subject: Re: GitHub Actions
Hi, Gio.
Great to hear this. I know we could all work our way through the documentation and experiment with our own projects in time, but It'd be great for maintainers in the community to save time by learning from what you had to do. Would you be able to briefly write up what you had to do or possibly demo/present briefly in an upcoming meeting?
Cheers,
Tony
On Tue, 16 Jun 2020 at 21:46, Giovanni Tirloni <gtirloni at ocadu.ca<mailto:gtirloni at ocadu.ca>> wrote:
Hello,
It seems GitHub Actions is working as expected.
With that in mind, I'd like to disable Jenkins for the two Fluid repos that have builds enabled: Infusion and Kettle.
Please let me know if there are any concerns.
Regards,
Giovanni
________________________________
From: Giovanni Tirloni <gtirloni at ocadu.ca<mailto:gtirloni at ocadu.ca>>
Sent: Monday, April 20, 2020 18:10
To: fluid-work at lists.idrc.ocad.ca<mailto:fluid-work at lists.idrc.ocad.ca> <fluid-work at lists.idrc.ocad.ca<mailto:fluid-work at lists.idrc.ocad.ca>>
Subject: GitHub Actions
Hello,
We're running an experiment to see if GitHub Actions [0] is a good replacement for our current Jenkins-based CI system.
I've enabled Actions in the fluid-project/infusion repository today. Every new PR (and updates to old PRs) and commits to the master branch will trigger CI builds in both GitHub Actions and Jenkins. We'll run them in parallel for a while to collect usage data.
The GitHub Actions workflow has a few benefits for us:
* GitHub-owned runners so we don't need to worry about maintaining our own servers
* Configuration As Code: the CI configuration lives in the repository and can be modified with PRs
* Better integration with the GitHub UI
We'll be trying more customizations in the near future but for now the GitHub Actions workflow in the Infusion repository more or less mimics the actions of the Jenkins-based pipeline configuration in the fluid-project/ci-service repository. For example, it doesn't yet publish a new Infusion build when commits are made to the master branch, that's coming next as it requires changes to how we do deployments.
If you notice any issues or have any feedback, please feel free to reach out. If we have a good experience with Actions, we'll add it to more repositories.
0 - https://github.com/features/actions
Regards,
Giovanni Tirloni
DevOps Engineer
Inclusive Design Research Centre, OCAD University
https://idrc.ocadu.ca<https://idrc.ocadu.ca/>
_______________________________________________________
fluid-work mailing list - fluid-work at lists.idrc.ocad.ca<mailto:fluid-work at lists.idrc.ocad.ca>
To unsubscribe, change settings or access archives,
see https://lists.idrc.ocad.ca/mailman/listinfo/fluid-work
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.idrc.ocad.ca/pipermail/fluid-work/attachments/20200619/af4b1806/attachment.htm>
More information about the fluid-work
mailing list