Skip to content

Commit

Permalink
chore: improve publishing workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
Karol Sójko committed Oct 14, 2022
1 parent 5cc471c commit dd2a19f
Showing 1 changed file with 262 additions and 11 deletions.
273 changes: 262 additions & 11 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on:
branches: [ main ]

jobs:
Build:
build:
if: "${{ contains(github.event.head_commit.message, 'chore(release): publish') == false }}"
runs-on: ubuntu-latest
steps:
Expand All @@ -15,40 +15,233 @@ jobs:
token: ${{ secrets.CI_PAT_TOKEN }}
fetch-depth: 0

- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"

- name: Cache build
id: cache-build
uses: actions/cache@v3
with:
path: packages/**/dist
key: ${{ runner.os }}-workspace-build

- uses: actions/cache@v3
id: yarn-cache
with:
path: [ ${{ steps.yarn-cache-dir-path.outputs.dir }}, packages/**/node_modules ]
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Set up Node
uses: actions/setup-node@v3
with:
registry-url: 'https://registry.npmjs.org'
node-version-file: '.nvmrc'
cache: 'yarn'

- name: Setup git config
run: |
git config --global user.name "standardci"
git config --global user.email "ci@standardnotes.com"
- name: Import GPG key
uses: crazy-max/ghaction-import-gpg@v4
- name: Install dependencies
if: steps.yarn-cache.outputs.cache-hit != 'true'
run: yarn install --immutable

- name: Build
if: steps.cache-build.outputs.cache-hit != 'true'
run: yarn build:all

lint:
runs-on: ubuntu-latest

needs: build

steps:
- name: Checkout code
uses: actions/checkout@v3
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.PASSPHRASE }}
git_user_signingkey: true
git_commit_gpgsign: true
token: ${{ secrets.CI_PAT_TOKEN }}
fetch-depth: 0

- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"

- name: Cache build
id: cache-build
uses: actions/cache@v3
with:
path: packages/**/dist
key: ${{ runner.os }}-workspace-build

- uses: actions/cache@v3
id: yarn-cache
with:
path: [ ${{ steps.yarn-cache-dir-path.outputs.dir }}, packages/**/node_modules ]
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Set up Node
uses: actions/setup-node@v3
with:
registry-url: 'https://registry.npmjs.org'
node-version-file: '.nvmrc'
cache: 'yarn'

- name: Install dependencies
if: steps.yarn-cache.outputs.cache-hit != 'true'
run: yarn install --immutable

- name: Build
if: steps.cache-build.outputs.cache-hit != 'true'
run: yarn build:all

- name: ESLint
run: yarn lint

android:
runs-on: ubuntu-latest

needs: build

steps:
- name: Checkout code
uses: actions/checkout@v3
with:
token: ${{ secrets.CI_PAT_TOKEN }}
fetch-depth: 0

- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"

- name: Cache build
id: cache-build
uses: actions/cache@v3
with:
path: packages/**/dist
key: ${{ runner.os }}-workspace-build

- uses: actions/cache@v3
id: yarn-cache
with:
path: [ ${{ steps.yarn-cache-dir-path.outputs.dir }}, packages/**/node_modules ]
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Set up Node
uses: actions/setup-node@v3
with:
registry-url: 'https://registry.npmjs.org'
node-version-file: '.nvmrc'
cache: 'yarn'

- name: Install dependencies
if: steps.yarn-cache.outputs.cache-hit != 'true'
run: yarn install --immutable

- name: Build
if: steps.cache-build.outputs.cache-hit != 'true'
run: yarn build:all

- name: Build Android
run: yarn android:bundle

test:
runs-on: ubuntu-latest

needs: build

steps:
- name: Checkout code
uses: actions/checkout@v3
with:
token: ${{ secrets.CI_PAT_TOKEN }}
fetch-depth: 0

- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"

- name: Cache build
id: cache-build
uses: actions/cache@v3
with:
path: packages/**/dist
key: ${{ runner.os }}-workspace-build

- uses: actions/cache@v3
id: yarn-cache
with:
path: [ ${{ steps.yarn-cache-dir-path.outputs.dir }}, packages/**/node_modules ]
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Set up Node
uses: actions/setup-node@v3
with:
registry-url: 'https://registry.npmjs.org'
node-version-file: '.nvmrc'
cache: 'yarn'

- name: Install dependencies
if: steps.yarn-cache.outputs.cache-hit != 'true'
run: yarn install --immutable

- name: Build
if: steps.cache-build.outputs.cache-hit != 'true'
run: yarn build:all

- name: Test
run: yarn test

e2e:
runs-on: ubuntu-latest

needs: build

steps:
- name: Checkout code
uses: actions/checkout@v3
with:
token: ${{ secrets.CI_PAT_TOKEN }}
fetch-depth: 0

- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"

- name: Cache build
id: cache-build
uses: actions/cache@v3
with:
path: packages/**/dist
key: ${{ runner.os }}-workspace-build

- uses: actions/cache@v3
id: yarn-cache
with:
path: [ ${{ steps.yarn-cache-dir-path.outputs.dir }}, packages/**/node_modules ]
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Set up Node
uses: actions/setup-node@v3
with:
registry-url: 'https://registry.npmjs.org'
node-version-file: '.nvmrc'
cache: 'yarn'

- name: Install dependencies
if: steps.yarn-cache.outputs.cache-hit != 'true'
run: yarn install --immutable

- name: Build
if: steps.cache-build.outputs.cache-hit != 'true'
run: yarn build:all

- name: Login to Docker Hub
if: "${{ contains(github.event.head_commit.message, 'skip e2e') == false }}"
uses: docker/login-action@v2
Expand Down Expand Up @@ -76,6 +269,64 @@ jobs:
trigger_workflow: true
wait_workflow: true

publish:
runs-on: ubuntu-latest

needs: [ lint, android, test, e2e ]

steps:
- name: Checkout code
uses: actions/checkout@v3
with:
token: ${{ secrets.CI_PAT_TOKEN }}
fetch-depth: 0

- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"

- name: Cache build
id: cache-build
uses: actions/cache@v3
with:
path: packages/**/dist
key: ${{ runner.os }}-workspace-build

- uses: actions/cache@v3
id: yarn-cache
with:
path: [ ${{ steps.yarn-cache-dir-path.outputs.dir }}, packages/**/node_modules ]
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Set up Node
uses: actions/setup-node@v3
with:
registry-url: 'https://registry.npmjs.org'
node-version-file: '.nvmrc'
cache: 'yarn'

- name: Install dependencies
if: steps.yarn-cache.outputs.cache-hit != 'true'
run: yarn install --immutable

- name: Build
if: steps.cache-build.outputs.cache-hit != 'true'
run: yarn build:all

- name: Setup git config
run: |
git config --global user.name "standardci"
git config --global user.email "ci@standardnotes.com"
- name: Import GPG key
uses: crazy-max/ghaction-import-gpg@v4
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.PASSPHRASE }}
git_user_signingkey: true
git_commit_gpgsign: true

- name: Bump version
run: yarn release:prod

Expand Down

0 comments on commit dd2a19f

Please sign in to comment.