Merge pull request #100 from Greenstand/Kpoke-patch-2 #120
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
name: Service CI/CD Pipeline | |
on: | |
push: | |
branches: | |
- main | |
env: | |
project-directory: ./ | |
jobs: | |
test: | |
name: Test | |
runs-on: ubuntu-latest | |
container: node:10.18-jessie | |
services: | |
# Label used to access the service container | |
postgres: | |
# Docker Hub image | |
image: postgis/postgis | |
# Provide the password for postgres | |
env: | |
POSTGRES_PASSWORD: postgres | |
# Set health checks to wait until postgres has started | |
options: >- | |
--health-cmd pg_isready | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
rabbitmq: | |
image: rabbitmq | |
env: | |
RABBITMQ_DEFAULT_USER: rabbitmq | |
RABBITMQ_DEFAULT_PASS: rabbitmq | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Use Node.js 16.x | |
uses: actions/setup-node@v1 | |
with: | |
node-version: '16.x' | |
- name: Install dependencies | |
run: npm install | |
working-directory: ${{ env.project-directory }} | |
- name: npm clean install | |
run: npm ci | |
working-directory: ${{ env.project-directory }} | |
- name: run ESLint | |
run: npm run lint | |
working-directory: ${{ env.project-directory }} | |
- name: run db-migrate | |
run: npm run db-migrate-ci | |
working-directory: ${{ env.project-directory }} | |
env: | |
DATABASE_URL: postgresql://postgres:postgres@postgres/postgres | |
- name: run api-tests | |
run: npm run test | |
working-directory: ${{ env.project-directory }} | |
env: | |
DATABASE_URL: postgresql://postgres:postgres@postgres/postgres | |
DATABASE_URL_LEGACYDB: postgresql://postgres:postgres@postgres/postgres | |
RABBIT_MQ_URL: amqp://rabbitmq:rabbitmq@rabbitmq | |
release: | |
name: Release | |
needs: test | |
runs-on: ubuntu-latest | |
if: | | |
!contains(github.event.head_commit.message, 'skip-ci') && | |
github.event_name == 'push' && | |
github.repository_owner == 'Greenstand' | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Use Node.js 18.x | |
uses: actions/setup-node@v1 | |
with: | |
node-version: '18.x' | |
- name: npm clean install | |
run: npm ci | |
working-directory: ${{ env.project-directory }} | |
- run: npm i -g semantic-release @semantic-release/{git,exec,changelog} | |
- run: semantic-release | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: get-npm-version | |
id: package-version | |
uses: martinbeentjes/npm-get-version-action@master | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v1 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v1 | |
- name: Login to DockerHub | |
uses: docker/login-action@v1 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Build snapshot and push on merge | |
id: docker_build_release | |
uses: docker/build-push-action@v2 | |
with: | |
context: ./ | |
file: ./Dockerfile | |
push: true | |
tags: greenstand/${{ github.event.repository.name }}:${{ steps.package-version.outputs.current-version }} | |
- id: export_bumped_version | |
run: | | |
export BUMPED_VERSION="${{ steps.package-version.outputs.current-version }}" | |
echo "::set-output name=bumped_version::${BUMPED_VERSION}" | |
- name: Install kustomize | |
run: curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash | |
- name: Run kustomize | |
run: (cd deployment/overlays/development && ../../../kustomize edit set image greenstand/${{ github.event.repository.name }}:${{ steps.export_bumped_version.outputs.bumped_version }} ) | |
- name: Commit dev kustomization file with new app version | |
if: | | |
!contains(github.event.head_commit.message, 'chore') | |
run: | | |
git config --local user.email "[email protected]" | |
git config --local user.name "GitHub Action" | |
git commit -am "chore: bump docker image tag ${{ steps.export_bumped_version.outputs.bumped_version }} [skip ci]" | |
- name: Push changes | |
uses: ad-m/github-push-action@master | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
outputs: | |
bumped_version: ${{ steps.export_bumped_version.outputs.bumped_version }} |