Skip to content

Merge pull request #92 from swisstopo/chore/create-bug-template #22

Merge pull request #92 from swisstopo/chore/create-bug-template

Merge pull request #92 from swisstopo/chore/create-bug-template #22

Workflow file for this run

name: build
on:
push:
branches:
- '*'
workflow_dispatch:
env:
NODE_VERSION: '20.x'
jobs:
install:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: Cache node modules
uses: actions/cache@v4
with:
path: ./node_modules
key: "${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}"
restore-keys: |
${{ runner.os }}-npm-
- name: Install node dependencies
run: npm ci
- name: Run postinstall
run: npm run postinstall
- name: Generate prisma types
run: |
cd apps/server-asset-sg/
npx ng gen-prisma-client
test:
runs-on: ubuntu-latest
needs: install
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: Restore cached node modules
uses: actions/cache@v4
with:
path: ./node_modules
key: "${{ runner.os }}-npm-${{ steps.cache-node-modules.outputs.cache-key }}"
- name: Run tests
run: npm run test
lint:
runs-on: ubuntu-latest
needs: install
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: Restore cached node modules
uses: actions/cache@v4
with:
path: ./node_modules
key: "${{ runner.os }}-npm-${{ steps.cache-node-modules.outputs.cache-key }}"
- name: Run lint
run: npm run lint
# It would be cleaner and probably more performant to replace this build step
# with either a non-emitting build or a simple type check.
# We only have `build` available for now,
# since the project is currently split across a multitude of small packages,
# all of which have to specify their own commands.
# (Daniel von Atzigen, 2024-04-12)
build:
runs-on: ubuntu-latest
needs:
- test
- lint
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: Restore cached node modules
uses: actions/cache@v4
with:
path: ./node_modules
key: "${{ runner.os }}-npm-${{ steps.cache-node-modules.outputs.cache-key }}"
- name: Reset nx
run: npx nx reset
- name: Run build
run: npm run build
build_and_push_app:
name: 'build and push app'
if: github.event_name == 'push' && github.ref == 'refs/heads/develop'
needs:
- build
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Create image
uses: ./.github/actions/create-image
with:
IMAGE_NAME: ${{ vars.BASE_IMAGE_NAME }}-app
TAG: edge
DOCKERFILE: ./apps/client-asset-sg/docker/Dockerfile
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
build_and_push_api:
name: 'build and push api'
if: github.event_name == 'push' && github.ref == 'refs/heads/develop'
needs:
- build
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Create image
uses: ./.github/actions/create-image
with:
IMAGE_NAME: ${{ vars.BASE_IMAGE_NAME }}-api
TAG: edge
DOCKERFILE: ./apps/server-asset-sg/docker/Dockerfile
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
tag_edge_commit:
name: 'tag edge commit'
needs:
- build_and_push_app
- build_and_push_api
runs-on: ubuntu-latest
steps:
- name: Create/update tag
uses: actions/github-script@v7
with:
script: |
github.rest.git.createRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: 'refs/tags/edge',
sha: context.sha
}).catch(err => {
if (err.status !== 422) throw err;
github.rest.git.updateRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: 'tags/edge',
sha: context.sha
});
})
tag_rc_image:
name: tag rc image
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
needs:
- build
runs-on: ubuntu-latest
steps:
- name: Login to GitHub Packages
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.repository_owner }} --password-stdin
- name: Pull docker image
run: docker pull ${{ vars.BASE_IMAGE_NAME }}-app:edge
- name: Tag docker image
run: docker tag ${{ vars.BASE_IMAGE_NAME }}-app:edge ${{ vars.BASE_IMAGE_NAME }}-app:release-candidate
- name: Push docker image
run: docker push ${{ vars.BASE_IMAGE_NAME }}-app:release-candidate
tag_rc_commit:
name: 'tag rc commit'
needs: tag_rc_image
runs-on: ubuntu-latest
steps:
- name: Create/update tag
uses: actions/github-script@v7
with:
script: |
github.rest.git.createRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: 'refs/tags/release-candidate',
sha: context.sha
}).catch(err => {
if (err.status !== 422) throw err;
github.rest.git.updateRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: 'tags/release-candidate',
sha: context.sha
});
})