Skip to content
This repository has been archived by the owner on May 16, 2024. It is now read-only.

Commit

Permalink
feat(release): merge
Browse files Browse the repository at this point in the history
  • Loading branch information
nellyk committed Aug 27, 2020
2 parents ea3ddea + d9dfefa commit eb30bc0
Show file tree
Hide file tree
Showing 17 changed files with 514 additions and 253 deletions.
20 changes: 20 additions & 0 deletions .github/workflows/commit_linter.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Commit Linting
on:
pull_request:
types: [assigned, opened, synchronize, reopened, edited]
jobs:
one-app-unit-tests:
name: Commit Linting
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
persist-credentials: false
ref: ${{ github.event.pull_request.head.sha }}
- name: lint
run: |
FIRST_COMMIT_SHA=$(curl -s -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" ${{ github.event.pull_request.commits_url }} | jq -r '.[0].sha')
NODE_ENV=development npm ci
npx commitlint --from $FIRST_COMMIT_SHA^
46 changes: 34 additions & 12 deletions .github/workflows/docker_development_image.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
name: One App Development Image Build
on:
workflow_dispatch:
inputs:
docker_tag_version:
description: 'Sementic Version'
required: true
repository_dispatch:
types: [one-app-docker-dev-build]
jobs:
Expand All @@ -8,26 +13,43 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
# Setup .npmrc file to publish to npm
- uses: actions/setup-node@v1
with:
node-version: '12.x'
registry-url: 'https://registry.npmjs.org'
- name: Docker Image Versions
id: set_docker_version
run: |
#Runs when the action is triggered by the dispatch function
if [[ "${{ github.event.inputs.docker_tag_version }}" == "" ]]; then
echo ::set-output name=docker_version::${{ github.event.client_payload.docker_tag_version }}
echo ::set-output name=major_version::${{ github.event.client_payload.major_version }}
echo ::set-output name=minor_version::${{ github.event.client_payload.minor_version }}
else
#Runs when a tag is triggered manually
echo ::set-output name=docker_version::${{ github.event.inputs.docker_tag_version }}
MAJOR="$(echo ${{ github.event.inputs.docker_tag_version}} | cut -d'.' -f1)"
MINOR="$(echo ${{ github.event.inputs.docker_tag_version}} | cut -d'.' -f2)"
echo ::set-output name=major_version::${MAJOR}
echo ::set-output name=minor_version::${MINOR}
fi
- name: Build development docker image
run: |
echo "Tags: ${{ github.event.inputs.tags }}"
echo "tag: ${{ github.event.inputs.docker_tag_version }}"
echo "major-version: ${{ github.event.inputs.major_version }}"
echo "minor-version: ${{ github.event.inputs.minor_version }}"
- name: Docker login
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login --username ${{ secrets.DOCKER_USER }} --password-stdin
- name: Build development docker image
run: docker build -t dev . --target=development
- name: Tag Docker Images
run: |
docker tag dev ${{ secrets.DOCKER_USER }}/one-app-dev:${{ github.event.client_payload.major_version }}
docker tag dev ${{ secrets.DOCKER_USER }}/one-app-dev:${{ github.event.client_payload.major_version}}.${{ github.event.client_payload.minor_version }}
docker tag dev ${{ secrets.DOCKER_USER }}/one-app-dev:${{ github.event.client_payload.docker_tag_version }}
docker tag dev ${{ secrets.DOCKER_USER }}/one-app-dev:${{ steps.set_docker_version.outputs.major_version }}
docker tag dev ${{ secrets.DOCKER_USER }}/one-app-dev:${{ steps.set_docker_version.outputs.major_version}}.${{ steps.set_docker_version.outputs.minor_version }}
docker tag dev ${{ secrets.DOCKER_USER }}/one-app-dev:${{ steps.set_docker_version.outputs.docker_version }}
docker tag dev ${{ secrets.DOCKER_USER }}/one-app-dev:latest
- name: Push Docker Images
run: |
docker push ${{ secrets.DOCKER_USER }}/one-app-dev:${{ github.event.client_payload.major_version}}
docker push ${{ secrets.DOCKER_USER }}/one-app-dev:${{ github.event.client_payload.major_version}}.${{ github.event.client_payload.minor_version }}
docker push ${{ secrets.DOCKER_USER }}/one-app-dev:${{ github.event.client_payload.docker_tag_version}}
docker push ${{ secrets.DOCKER_USER }}/one-app-dev:${{ steps.set_docker_version.outputs.major_version}}
docker push ${{ secrets.DOCKER_USER }}/one-app-dev:${{ steps.set_docker_version.outputs.major_version}}.${{ steps.set_docker_version.outputs.minor_version }}
docker push ${{ secrets.DOCKER_USER }}/one-app-dev:${{ steps.set_docker_version.outputs.docker_version}}
docker push ${{ secrets.DOCKER_USER }}/one-app-dev:latest
- name: Trigger Image Publishing
uses: octokit/request-action@v2.x
Expand All @@ -37,6 +59,6 @@ jobs:
repository: ${{ github.repository }}
mediaType: '{"previews": ["everest"]}'
event_type: "publish-statics-npm"
client_payload: '{"docker_tag_version": "${{ github.event.client_payload.docker_tag_version }}"}'
client_payload: '{"docker_tag_version": "${{ steps.set_docker_version.outputs.docker_version }}"}'
env:
GITHUB_TOKEN: ${{ secrets.PA_TOKEN }}
46 changes: 31 additions & 15 deletions .github/workflows/docker_production_image.yml
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
name: One App Production Image Build and Static Extraction
name: One App Production Image Build and Push
on:
workflow_dispatch:
inputs:
docker_tag_version:
description: 'Semantic Version'
required: true
repository_dispatch:
types: [one-app-docker-prod-build]
jobs:
one-app-docker-prod-build:
name: Build Production Image
name: One App Production Image Build and Push
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
# Setup .npmrc file to publish to npm
- uses: actions/setup-node@v1
with:
node-version: '12.x'
registry-url: 'https://registry.npmjs.org'
- name: Docker login
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login --username ${{ secrets.DOCKER_USER }} --password-stdin
- name: Build production docker image
Expand All @@ -25,26 +25,42 @@ jobs:
PATCH="$(echo ${{ github.event.client_payload.docker_tag_version}} | cut -d'.' -f3)"
echo ::set-output name=major_version::${MAJOR}
echo ::set-output name=minor_version::${MINOR}
- name: Docker Image Versions
id: set_docker_version
run: |
#Runs when the action is triggered by the dispatch function
if [[ "${{ github.event.inputs.docker_tag_version }}" == "" ]]; then
echo ::set-output name=docker_version::${{ github.event.client_payload.docker_tag_version }}
echo ::set-output name=major_version::${{ steps.get_sem_version.outputs.major_version }}
echo ::set-output name=minor_version::${{ steps.get_sem_version.outputs.minor_version }}
else
#Runs when a tag is triggered manually
echo ::set-output name=docker_version::${{ github.event.inputs.docker_tag_version }}
MAJOR="$(echo ${{ github.event.inputs.docker_tag_version}} | cut -d'.' -f1)"
MINOR="$(echo ${{ github.event.inputs.docker_tag_version}} | cut -d'.' -f2)"
echo ::set-output name=major_version::${MAJOR}
echo ::set-output name=minor_version::${MINOR}
fi
- name: Tag Docker Images
run: |
docker tag prod ${{ secrets.DOCKER_USER }}/one-app:${{ steps.get_sem_version.outputs.major_version}}
docker tag prod ${{ secrets.DOCKER_USER }}/one-app:${{ steps.get_sem_version.outputs.major_version}}.${{ steps.get_sem_version.outputs.minor_version}}
docker tag prod ${{ secrets.DOCKER_USER }}/one-app:${{ github.event.client_payload.docker_tag_version}}
docker tag prod ${{ secrets.DOCKER_USER }}/one-app:${{ steps.set_docker_version.outputs.major_version}}
docker tag prod ${{ secrets.DOCKER_USER }}/one-app:${{ steps.set_docker_version.outputs.major_version}}.${{steps.set_docker_version.outputs.minor_version}}
docker tag prod ${{ secrets.DOCKER_USER }}/one-app:${{ steps.set_docker_version.outputs.docker_version}}
docker tag prod ${{ secrets.DOCKER_USER }}/one-app:latest
- name: Push Docker Images
run: |
docker push ${{ secrets.DOCKER_USER }}/one-app:${{ steps.get_sem_version.outputs.major_version}}
docker push ${{ secrets.DOCKER_USER }}/one-app:${{ steps.get_sem_version.outputs.major_version}}.${{ steps.get_sem_version.outputs.minor_version}}
docker push ${{ secrets.DOCKER_USER }}/one-app:${{ github.event.client_payload.docker_tag_version}}
docker push ${{ secrets.DOCKER_USER }}/one-app:${{ steps.set_docker_version.outputs.major_version}}
docker push ${{ secrets.DOCKER_USER }}/one-app:${{ steps.set_docker_version.outputs.major_version}}.${{ steps.set_docker_version.outputs.minor_version}}
docker push ${{ secrets.DOCKER_USER }}/one-app:${{ steps.set_docker_version.outputs.docker_version}}
docker push ${{ secrets.DOCKER_USER }}/one-app:latest
- name: Trigger Image Publishing
- name: Trigger Development Image Publishing
uses: octokit/request-action@v2.x
id: dispatch_one_app_docker_dev_build
with:
route: POST /repos/:repository/dispatches
repository: ${{ github.repository }}
mediaType: '{"previews": ["everest"]}'
event_type: "one-app-docker-dev-build"
client_payload: '{"docker_tag_version": "${{ github.event.client_payload.docker_tag_version }}","major_version":"${{ steps.get_sem_version.outputs.major_version}}","minor_version":"${{ steps.get_sem_version.outputs.minor_version}}"}'
client_payload: '{"docker_tag_version": "${{ steps.set_docker_version.outputs.docker_version }}","major_version":"${{ steps.set_docker_version.outputs.major_version}}","minor_version":"${{ steps.set_docker_version.outputs.minor_version}}"}'
env:
GITHUB_TOKEN: ${{ secrets.PA_TOKEN }}
38 changes: 0 additions & 38 deletions .github/workflows/docker_push.yml

This file was deleted.

18 changes: 11 additions & 7 deletions .github/workflows/docker_tag_check.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
name: Docker Tag Version Check
on:
workflow_dispatch:
inputs:
tag_version:
description: 'Tag version'
required: true
push:
tags:
- '*'
Expand All @@ -11,21 +16,20 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
# Setup .npmrc file to publish to npm
- uses: actions/setup-node@v1
with:
node-version: '12.x'
registry-url: 'https://registry.npmjs.org'
- name: Set env
id: set_tag_version
run: |
#Checks for when a valid tag is manually pushed
if [[ $GITHUB_REF != "" && "${{ github.event.client_payload.tagversion }}" == "" ]]; then
if [[ $GITHUB_REF != "" && "${{ github.event.client_payload.tagversion }}" == "" ]];
then
echo ::set-output name=tagversion::$(egrep -o '(v[0-9]+\.[0-9]+\.[0-9]+)(-\S*)?' <<< $GITHUB_REF)
else
#Runs when a tag is triggered automatically
echo ::set-output name=tagversion::${{ github.event.client_payload.tagversion }}
fi
if [[ "${{ github.event.inputs.tag_version }}" != "" ]]
then
echo ::set-output name=tagversion::${{ github.event.inputs.tag_version }}
fi
echo $tagversion
- name: Check Tag Version
run: |
Expand Down
5 changes: 0 additions & 5 deletions .github/workflows/docker_tagging.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
# Setup .npmrc file to publish to npm
- uses: actions/setup-node@v1
with:
node-version: '12.x'
registry-url: 'https://registry.npmjs.org'
- name: Docker login
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login --username ${{ secrets.DOCKER_USER }} --password-stdin
- name: Docker tag version
Expand Down
45 changes: 45 additions & 0 deletions .github/workflows/integrations_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: One App Integration Tests
on:
push:
branches:
- master
- prepare-release
jobs:
one-app-integration:
name: One App Integration Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/cache@v1
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- uses: actions/setup-node@v1
with:
node-version: 12.x
- name: npm install
run: NODE_ENV=development npm ci
- name: Build docker image
run: docker build -t one-app:at-test .
- name: Build Sample Modules
run: |
npm run build:sample-modules -- --archive-built-artifacts --bundle-statics-origin=https://one-app-statics.surge.sh
echo 'https://one-app-sample.herokuapp.com' >> sample-module-bundles/CORS
- name: Teardown Surge
run: npx surge teardown one-app-statics.surge.sh
- name: Move sample modules to Surge
run: npx surge sample-module-bundles one-app-statics.surge.sh
- name: Login to Heroku
run: docker login -u="$HEROKU_DOCKER_USERNAME" -p="$HEROKU_API_KEY" registry.heroku.com
- name: Docker Tag
run: docker tag one-app:at-test registry.heroku.com/$HEROKU_APP_ID/web
- name: Docker Push
run: docker push registry.heroku.com/$HEROKU_APP_ID/web
- name: Heroku Release Images
run: npx heroku container:release web -a $HEROKU_APP_ID
- name: Run Integration Tests on Heroku
run: ONE_DANGEROUSLY_SKIP_ONE_APP_IMAGE_BUILD=true npm run test:integration -- --remote-one-app-environment=$HEROKU_APP_URL


16 changes: 15 additions & 1 deletion .github/workflows/publish_statics_npm.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
name: One App Statics Publish to NPM
on:
workflow_dispatch:
inputs:
tag_version:
description: 'Tag version'
required: true
repository_dispatch:
types: [publish-statics-npm]
jobs:
Expand All @@ -15,9 +20,18 @@ jobs:
registry-url: 'https://registry.npmjs.org'
- name: Docker login
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login --username ${{ secrets.DOCKER_USER }} --password-stdin
- name: Tag Version
id: set_tag_version
run: |
if [[ "${{ github.event.inputs.tag_version }}" == "" ]]
then
echo ::set-output name=tagversion::${{ github.event.client_payload.docker_tag_version }}
else
echo ::set-output name=tagversion::${{ github.event.inputs.tag_version }}
fi
- name: Extract and zip production statics
run: |
docker create --name prod ${{ secrets.DOCKER_USER }}/one-app:${{ github.event.client_payload.docker_tag_version}}
docker create --name prod ${{ secrets.DOCKER_USER }}/one-app:${{ steps.set_tag_version.outputs.tagversion}}
docker cp prod:opt/one-app/build ./one-app-statics
zip -r one-app-static-assets one-app-statics/build
- name: Publish statics to NPM
Expand Down
30 changes: 0 additions & 30 deletions .github/workflows/pull_request.yml

This file was deleted.

25 changes: 25 additions & 0 deletions .github/workflows/pull_request_integration_test .yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: One App Integration Tests - PR
on:
pull_request:
types: [assigned, opened, synchronize, reopened, edited]
jobs:
one-app-integration-pr:
name: One App Integration Tests - PR
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/cache@v1
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- uses: actions/setup-node@v1
with:
node-version: 12.x
- name: npm install
run: NODE_ENV=development npm ci
- name: Build docker image
run: docker build -t one-app:at-test .
- name: Run Integration Tests
run: ONE_DANGEROUSLY_SKIP_ONE_APP_IMAGE_BUILD=true npm run test:integration
Loading

0 comments on commit eb30bc0

Please sign in to comment.