-
Notifications
You must be signed in to change notification settings - Fork 0
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
Mrc 5976 - use github actions and ghcr #232
Merged
Merged
Changes from all commits
Commits
Show all changes
52 commits
Select commit
Hold shift + click to select a range
20d9f2b
try with test jobs
M-Kusumgar 13ab650
adding more into the action
M-Kusumgar 12a9d3f
composite actions can only take strings?
M-Kusumgar db30122
better logic
M-Kusumgar 33e67c9
disable playwright web server in config
M-Kusumgar f1256dd
split up backend and frontend tests
M-Kusumgar 662c2d1
fix workflow tests and install playwright browsers
M-Kusumgar fa4afe1
try fully parallel tests
M-Kusumgar f8ebc09
cache playwright binaries and shard tests
M-Kusumgar 8aad0a7
testing playwright cache
M-Kusumgar 5e7e0ad
try to make stochastic less flaky
M-Kusumgar 3f9f2a2
try and make tests less flaky
M-Kusumgar 01e8f08
add build action
M-Kusumgar daceefa
full context
M-Kusumgar 5718e8b
try original dockerfile
M-Kusumgar 5fee2ed
clean up buildkite stuff
M-Kusumgar a1412a3
add codecov config to silence dumb failures
M-Kusumgar 5a88d81
try 2% threshold
M-Kusumgar 785e6c0
smoke test after build
M-Kusumgar b178401
proper smoke test
M-Kusumgar f94c773
wait for server for longer
M-Kusumgar a814d20
slower timing
M-Kusumgar b1fdd8a
get base image with node 20 from repo
M-Kusumgar 6fccbb0
specify tag
M-Kusumgar ce8392e
split general action into multiple
M-Kusumgar 8386fb9
emma changed: clean up code and better working
M-Kusumgar a581934
try pull manifest on github action
M-Kusumgar c89308f
try again
M-Kusumgar abb9581
space
M-Kusumgar 0234f16
try with new token
M-Kusumgar d616c9e
now with auth
M-Kusumgar d531170
use double quotes instead of single quotyes
M-Kusumgar e71abda
add conditional step to make new docker image
M-Kusumgar 6b2b5b1
just checking lint for now
M-Kusumgar bc92d1a
fix typo in curl
M-Kusumgar 1ae4c4c
put all in single workflow
M-Kusumgar ee07278
test conditional
M-Kusumgar 13e16fd
publish to latest tag if on main and testing is done
M-Kusumgar 692968b
complete script
M-Kusumgar a0f73d6
rename to CI
M-Kusumgar b879ab1
consistent spacing
M-Kusumgar 9611cb0
fix npm package install action + pull out stochastic logic into helper
M-Kusumgar 4f39338
fix actions
M-Kusumgar 7cf5ebb
npm i instead of ci
M-Kusumgar b68a5a8
install playwright first
M-Kusumgar c6fc9fb
ci instead of i
M-Kusumgar 677e6d2
switch order again
M-Kusumgar 715d0af
pin playwright version
M-Kusumgar a55a6b9
typo
M-Kusumgar 63ac83e
testing current implementation
M-Kusumgar 8b3c2ab
add checkout to publish job
M-Kusumgar 5018d12
add comment and revert to main branch publishing
M-Kusumgar File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
name: Build and run WODIN (and deps) | ||
|
||
runs: | ||
using: "composite" | ||
steps: | ||
- uses: actions/setup-node@v4 | ||
with: | ||
node-version: 20 | ||
|
||
- name: Build and run server | ||
shell: bash | ||
run: | | ||
./scripts/build.sh | ||
./scripts/run-dependencies.sh | ||
npm run serve --prefix=app/server & |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
name: Setup CI Env and login to GHCR | ||
|
||
inputs: | ||
ghcr-username: | ||
required: true | ||
ghcr-password: | ||
required: true | ||
|
||
outputs: | ||
CI_SHA: | ||
description: "Short SHA of current commit" | ||
value: ${{ steps.ci-env.outputs.CI_SHA }} | ||
CI_BRANCH: | ||
description: "Current branch" | ||
value: ${{ steps.ci-env.outputs.CI_BRANCH }} | ||
|
||
runs: | ||
using: "composite" | ||
steps: | ||
- id: ci-env | ||
name: Setup Environment | ||
shell: bash | ||
run: | | ||
if [ "${{github.event_name}}" = "pull_request" ]; | ||
then | ||
long_sha=${{ github.event.pull_request.head.sha }} | ||
echo "CI_BRANCH=${{ github.head_ref }}" >> $GITHUB_OUTPUT | ||
else | ||
long_sha=${GITHUB_SHA} | ||
echo "CI_BRANCH=${{ github.ref_name }}" >> $GITHUB_OUTPUT | ||
fi | ||
echo "CI_SHA=${long_sha:0:7}" >> $GITHUB_OUTPUT | ||
|
||
- name: Login to GHCR (GitHub Packages) | ||
uses: docker/login-action@v3 | ||
with: | ||
registry: ghcr.io | ||
username: ${{ inputs.ghcr-username }} | ||
password: ${{ inputs.ghcr-password }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
name: Install NPM packages | ||
|
||
inputs: | ||
server: | ||
required: false | ||
default: 'false' | ||
static: | ||
required: false | ||
default: 'false' | ||
|
||
runs: | ||
using: "composite" | ||
steps: | ||
- uses: actions/setup-node@v4 | ||
with: | ||
node-version: 20 | ||
|
||
- name: Install server (backend) NPM packages | ||
if: inputs.server == 'true' | ||
shell: bash | ||
run: | | ||
npm ci --prefix=app/server | ||
|
||
- name: Install static (frontend) NPM packages | ||
if: inputs.static == 'true' | ||
shell: bash | ||
run: | | ||
npm ci --prefix=app/static |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,135 @@ | ||
name: CI | ||
|
||
on: [push] | ||
|
||
env: | ||
TAG_GHCR: mrc-ide/wodin | ||
|
||
jobs: | ||
build-and-push: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- id: ci-env | ||
uses: ./.github/actions/ci-env-and-ghcr-login | ||
with: | ||
ghcr-username: ${{ github.actor }} | ||
ghcr-password: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Build and push docker | ||
uses: docker/build-push-action@v5 | ||
with: | ||
file: ./docker/Dockerfile | ||
push: true | ||
tags: | | ||
ghcr.io/${{ env.TAG_GHCR }}:${{ steps.ci-env.outputs.CI_SHA }} | ||
ghcr.io/${{ env.TAG_GHCR }}:${{ steps.ci-env.outputs.CI_BRANCH }} | ||
- name: Smoke test | ||
run: | | ||
./scripts/run-version.sh --app ${{ steps.ci-env.outputs.CI_BRANCH }} & | ||
./scripts/smoke-test.sh | ||
|
||
fe-unit-tests: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: ./.github/actions/install-npm-packages | ||
with: | ||
static: true | ||
|
||
- name: Test front end | ||
run: npm run coverage --prefix=app/static | ||
- uses: codecov/codecov-action@v4 | ||
with: | ||
fail_ci_if_error: true | ||
files: ./app/static/coverage/coverage-final.json | ||
token: ${{ secrets.CODECOV_TOKEN }} | ||
codecov_yml_path: ./codecov.yml | ||
|
||
be-unit-tests: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: ./.github/actions/build-and-run-wodin | ||
|
||
- name: Test back end | ||
run: npm test --prefix=app/server | ||
- name: Check versions | ||
run: npm run genversion --prefix=app/server -- --check-only | ||
- uses: codecov/codecov-action@v4 | ||
with: | ||
fail_ci_if_error: true # optional (default = false) | ||
files: ./app/server/coverage/coverage-final.json | ||
token: ${{ secrets.CODECOV_TOKEN }} # required | ||
|
||
integration-tests: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: ./.github/actions/build-and-run-wodin | ||
|
||
- name: Test back end integration | ||
run: npm run integration-test --prefix=app/server | ||
|
||
playwright-tests: | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
shard: [1, 2, 3, 4, 5, 6] | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: ./.github/actions/build-and-run-wodin | ||
|
||
- name: Get installed Playwright version | ||
run: echo "PLAYWRIGHT_VERSION=$(node -e "console.log(require('./app/static/package-lock.json').packages['node_modules/@playwright/test'].version)")" >> $GITHUB_ENV | ||
- name: Cache binaries for playwright version | ||
uses: actions/cache@v4 | ||
id: playwright-cache | ||
with: | ||
path: | | ||
~/.cache/ms-playwright | ||
key: ${{ runner.os }}-playwright-${{ env.PLAYWRIGHT_VERSION }} | ||
- name: Install Playwright Browsers | ||
if: steps.playwright-cache.outputs.cache-hit != 'true' | ||
run: npx playwright@${{ env.PLAYWRIGHT_VERSION }} install --with-deps | ||
- name: Test e2e | ||
run: npm run test:e2e --prefix=app/static -- --shard=${{ matrix.shard }}/6 | ||
|
||
lint: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: ./.github/actions/install-npm-packages | ||
with: | ||
static: true | ||
server: true | ||
|
||
- name: Lint back end | ||
run: npm run lint --prefix=app/server | ||
- name: Lint front end | ||
run: npm run lint --prefix=app/static | ||
|
||
publish-latest-image: | ||
runs-on: ubuntu-latest | ||
# change this ref to publish to "latest" tag from another branch | ||
if: github.ref == 'refs/heads/main' | ||
needs: [build-and-push, fe-unit-tests, be-unit-tests, integration-tests, playwright-tests, lint] | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- id: ci-env | ||
uses: ./.github/actions/ci-env-and-ghcr-login | ||
with: | ||
ghcr-username: ${{ github.actor }} | ||
ghcr-password: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Publish image manifest to latest | ||
run: | | ||
GHCR_TOKEN=$(echo ${{ secrets.GITHUB_TOKEN }} | base64) | ||
curl "https://ghcr.io/v2/mrc-ide/wodin/manifests/${{ steps.ci-env.outputs.CI_BRANCH }}" \ | ||
-H "accept: application/vnd.docker.distribution.manifest.v2+json" \ | ||
-H "Authorization: Bearer ${GHCR_TOKEN}" \ | ||
> manifest.json | ||
curl -XPUT "https://ghcr.io/v2/mrc-ide/wodin/manifests/latest" \ | ||
-H "content-type: application/vnd.docker.distribution.manifest.v2+json" \ | ||
-H "Authorization: Bearer ${GHCR_TOKEN}" \ | ||
-d '@manifest.json' |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why isn't this needed any more? On CI it does build and run server so I guess don't need it there? But it's nice to not have to remember to run the app manually when running locally.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this was pretty much never needed, the thing is we have to remember to run the app manually when running browser tests anyway, because doing an npm run dev/serve doesnt actually bring up our app, we have to also start our express server, i can include this in a later pr and only have this config if we are on local but we will have to run our build and run script or something like that