Skip to content

Commit

Permalink
GitHub Actions refactor (#25)
Browse files Browse the repository at this point in the history
Separate out custom actions so that all the CI jobs are in one legible
file.

**Ticket**

https://app.shortcut.com/danielsincere-opensource/story/241/refactor-github-actions
  • Loading branch information
DanielSincere authored Nov 9, 2024
1 parent 0cdb7dd commit dbf73d0
Show file tree
Hide file tree
Showing 7 changed files with 188 additions and 243 deletions.
47 changes: 47 additions & 0 deletions .github/actions/setup-postgres-on-mac/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: 'Setup Postgres on Mac'
description: 'Setup Postgres on Mac'

outputs:
database-url:
description: "Connection URL of database that was created"
value: ${{ steps.set-database-url.outputs.database-url }}

runs:
using: "composite"
steps:
- shell: bash
run: |
brew install postgresql
brew services start postgresql
echo "Check PostgreSQL service is running"
i=10
COMMAND='pg_isready'
while [ $i -gt 0 ]; do
echo "Check PostgreSQL service status"
eval $COMMAND && break
((i--))
if [ $i == 0 ]; then
echo "PostgreSQL service not ready, all attempts exhausted"
exit 1
fi
echo "PostgreSQL service not ready, wait 10 more sec, attempts left: $i"
sleep 10
done
- shell: bash
run: |
psql --command="CREATE USER myuser PASSWORD 'mypassword'" --command="\du" postgres
- shell: bash
run: |
createdb --owner=myuser mydatabase
PGPASSWORD=mypassword psql --username=myuser --host=localhost --list mydatabase
- id: set-database-url
shell: bash
run: echo "database-url=postgresql://myuser:mypassword@localhost/mydatabase" >> $GITHUB_OUTPUT

- shell: bash
run: psql $DATABASE_URL -c "select version()"
env:
DATABASE_URL: ${{ steps.set-database-url.outputs.database-url }}
31 changes: 31 additions & 0 deletions .github/actions/sincere-auth-build-action/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: 'Sincere Auth Build Action'
description: "Separate action to either build or test Sincere Auth"
inputs:
swift-version:
description: 'Version of Swift to build with'
required: true
action:
description: Build for release or run tests. Options are 'build' or 'test'
required: true
database-url:
description: Database URL to use during tests
required: true

runs:
using: "composite"
steps:
- uses: SwiftyLab/setup-swift@latest
with:
swift-version: ${{ inputs.swift-version }}
- shell: bash
run: swift --version

- if: ${{ inputs.action == 'test' }}
shell: bash
run: |
swift run SincereAuthServer migrate -y --env test && swift test
env:
DATABASE_URL: ${{ inputs.database-url }}
- if: ${{ inputs.action == 'build' }}
shell: bash
run: swift build -c release
29 changes: 29 additions & 0 deletions .github/actions/sincere-auth-docker-action/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: "Sincere Auth Docker Action"
description: "Build & push a docker image"
inputs:
target:
description: "The Dockerfile target to build and push"
required: true

runs:
using: "composite"
steps:
- name: Docker metadata - ${{ inputs.target }}
id: docker-metadata
uses: docker/metadata-action@v4
with:
images: |
ghcr.io/${{ github.repository }}-${{ inputs.target }}
tags: |
type=ref,event=tag
type=sha,format=long
type=semver,pattern={{version}}
- name: Build and push Docker image - ${{ inputs.target }}
uses: docker/build-push-action@v6
with:
context: .
push: true
target: ${{ inputs.target }}
tags: ${{ steps.docker-metadata.outputs.tags }}
labels: ${{ steps.docker-metadata.outputs.labels }}
81 changes: 81 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: Continuous Integration

on:
push:
branches: "**"
pull_request:
tags:
- "**"

jobs:
docker:
runs-on: ubuntu-latest
strategy:
matrix:
target: ["web", "release", "queues", "scheduled-queues"]
steps:
- uses: actions/checkout@v4
- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ghcr.io/${{ github.repository }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: ./.github/actions/sincere-auth-docker-action
with:
target: ${{ matrix.target }}

mac:
name: Mac ${{ matrix.action }}, Swift ${{ matrix.swift-version }}
runs-on: macos-latest
strategy:
matrix:
swift-version: ["5.9", "5.10"]
action: ["build", "test"]
steps:
- uses: actions/checkout@v4
- id: setup-postgres
uses: ./.github/actions/setup-postgres-on-mac
- uses: shogo82148/actions-setup-redis@v1
- uses: ./.github/actions/sincere-auth-build-action
with:
swift-version: ${{ matrix.swift-version }}
action: ${{ matrix.action }}
database-url: ${{ steps.setup-postgres.outputs.database-url }}

ubuntu:
name: Ubuntu ${{ matrix.action }}, Swift ${{ matrix.swift-version }}
runs-on: ubuntu-latest
strategy:
matrix:
swift-version: ["5.9", "5.10"]
action: ["build", "test"]
services:
redis:
image: redis:latest
ports: ["6379:6379"]
postgres:
image: postgres:latest
env:
POSTGRES_DB: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
ports: ["5432:5432"]
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/sincere-auth-build-action
with:
swift-version: ${{ matrix.swift-version }}
action: ${{ matrix.action }}
database-url: "postgresql://postgres:postgres@localhost/postgres"

env:
DB_SYMMETRIC_KEY: "9/Vk5Rlzctc5tyX0SCmIJaRzEg+QgwWjlTzD0LMPqNY="
REDIS_URL: "redis://127.0.0.1:6379"
SELF_ISSUER_ID: "com.fullqueuedeveloper.FQAuth"
APPLE_APP_ID: "com.fullqueuedeveloper.FQAuth"
APPLE_TEAM_ID: "FQDV1234"
APPLE_SERVICES_KEY_ID: "com.fullqueuedeveloper.FQAuthServer.AppleServicesKeyID"
APPLE_SERVICES_KEY: "LS0tLS1CRUdJTiBFQyBQQVJBTUVURVJTLS0tLS0KQmdVcmdRUUFJdz09Ci0tLS0tRU5EIEVDIFBBUkFNRVRFUlMtLS0tLQotLS0tLUJFR0lOIEVDIFBSSVZBVEUgS0VZLS0tLS0KTUlIY0FnRUJCRUlCdXRBYnNFUjY1bVFnby9iKzJYcTVsaDZQTDhuRTJSRjZ0WjFDdWNmdW5UaWtyNDFwL3JhZwpYaXd6MTJVOWxoY211Y2wrWDh5MkVacUowQ0FXS0VhTHluYWdCd1lGSzRFRUFDT2hnWWtEZ1lZQUJBQm92SWc2CkNRREdkcjMxNlR6bEJXRG56SHIvWDVoSnVzbnpSY0E2WUpUS1RVMll2bXdCaHVGUFBiNit1MUttaUdkTnQ2N1EKTU16RjMxYjY0L0gwS3prQ1BnRVZicklMVkthNDlUbTdNQU1WT3dsUUxaVHBIck8xMVk2bVd5eERydEFCSXNDTApqNnBRMFhGNlZiNWNOT3RWL1BpMC9lcTIxY3UwV3h5aDNHODY2TlQ0T1E9PQotLS0tLUVORCBFQyBQUklWQVRFIEtFWS0tLS0tCg=="
AUTH_PRIVATE_KEY: "LS0tLS1CRUdJTiBFQyBQQVJBTUVURVJTLS0tLS0KQmdVcmdRUUFJdz09Ci0tLS0tRU5EIEVDIFBBUkFNRVRFUlMtLS0tLQotLS0tLUJFR0lOIEVDIFBSSVZBVEUgS0VZLS0tLS0KTUlIY0FnRUJCRUlCV1Q2RVFQZkRNelNwME1tNjFlbFRaaXljQSs5Sy9QRzN6TFFka0hsMnFlWnlCWEs4VlRrRQpTbGovemxXRkhUWG1RTTB0d3V5YnAyTEFMaHVwd2ZJR3l5eWdCd1lGSzRFRUFDT2hnWWtEZ1lZQUJBRXh5QS9wCitEM05CTmdjMm1XUjdBOVRUa0tkdWMrWVlaeFN2ZWdPMWpMeC9QbG1TUHdHcGF3c2NiYWxHYTgwbkRTNTU2SXUKR1l0S2ZnbkJGSXBFcU1FQkdBQ2MrUys2cTNBNU10emM4bHhzamRlYVlSWDdIbnJNejlVdzRROGNUUmkzUXVJNwpKdi93OEJnZFhRNnVMdGdSMTZLTzJQcVg2azRSSDdmY3BSL20vUEU1OEE9PQotLS0tLUVORCBFQyBQUklWQVRFIEtFWS0tLS0tCg=="
107 changes: 0 additions & 107 deletions .github/workflows/docker.yml

This file was deleted.

79 changes: 0 additions & 79 deletions .github/workflows/macos.yaml

This file was deleted.

Loading

0 comments on commit dbf73d0

Please sign in to comment.