Skip to content

Merge pull request #3828 from SwiftPackageIndex/dependabot/npm_and_ya… #10970

Merge pull request #3828 from SwiftPackageIndex/dependabot/npm_and_ya…

Merge pull request #3828 from SwiftPackageIndex/dependabot/npm_and_ya… #10970

Workflow file for this run

# Copyright Dave Verwer, Sven A. Schmidt, and other contributors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
name: Continuous Integration
on:
workflow_dispatch:
push:
schedule:
- cron: "0 8 * * *"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
test-linux:
name: Test
runs-on: ubuntu-latest
container:
image: registry.gitlab.com/finestructure/spi-base:2.0.0
options: --privileged
steps:
- name: GH Runner bug workaround
run: sysctl -w vm.mmap_rnd_bits=28
- name: Checkout code
uses: actions/checkout@v4
with: { 'fetch-depth': 0 }
- name: Install unzip (for tests) and zstd (for faster caching)
run: apt-get update && apt-get install -y unzip zstd
- name: Restore .build
if: ${{ !(github.run_attempt > 1) }} # Because maybe the cache is causing issues
id: "restore-cache"
uses: actions/cache/restore@v4
with:
path: .build
key: "spi-debug-build-${{ runner.os }}-${{ github.event.after }}"
restore-keys: "spi-debug-build-${{ runner.os }}-"
- name: Build tests
run: cp .env.testing.template .env.testing && make build-tests
- name: Cache .build
if: steps.restore-cache.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: .build
key: "spi-debug-build-${{ runner.os }}-${{ github.event.after }}"
- name: Run tests
run: cp .env.testing.template .env.testing && make run-tests
env:
COLLECTION_SIGNING_PRIVATE_KEY: ${{ secrets.COLLECTION_SIGNING_PRIVATE_KEY }}
services:
spi_test_0:
image: postgres:16-alpine
env:
POSTGRES_DB: spi_test
POSTGRES_USER: spi_test
POSTGRES_PASSWORD: xxx
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
spi_test_1:
image: postgres:16-alpine
env:
POSTGRES_DB: spi_test
POSTGRES_USER: spi_test
POSTGRES_PASSWORD: xxx
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
spi_test_2:
image: postgres:16-alpine
env:
POSTGRES_DB: spi_test
POSTGRES_USER: spi_test
POSTGRES_PASSWORD: xxx
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
spi_test_3:
image: postgres:16-alpine
env:
POSTGRES_DB: spi_test
POSTGRES_USER: spi_test
POSTGRES_PASSWORD: xxx
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
spi_test_4:
image: postgres:16-alpine
env:
POSTGRES_DB: spi_test
POSTGRES_USER: spi_test
POSTGRES_PASSWORD: xxx
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
spi_test_5:
image: postgres:16-alpine
env:
POSTGRES_DB: spi_test
POSTGRES_USER: spi_test
POSTGRES_PASSWORD: xxx
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
spi_test_6:
image: postgres:16-alpine
env:
POSTGRES_DB: spi_test
POSTGRES_USER: spi_test
POSTGRES_PASSWORD: xxx
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
spi_test_7:
image: postgres:16-alpine
env:
POSTGRES_DB: spi_test
POSTGRES_USER: spi_test
POSTGRES_PASSWORD: xxx
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
release-build-linux:
name: Release build
runs-on: ubuntu-latest
container:
image: registry.gitlab.com/finestructure/spi-base:2.0.0
options: --privileged
steps:
- name: GH Runner bug workaround
run: sysctl -w vm.mmap_rnd_bits=28
- name: Checkout code
uses: actions/checkout@v4
with: { 'fetch-depth': 0 }
- name: Install zstd (for faster caching)
run: apt-get update && apt-get install -y zstd
- name: Restore .build
if: ${{ !(github.run_attempt > 1) }} # Because maybe the cache is causing issues
id: "restore-cache"
uses: actions/cache/restore@v4
with:
path: .build
key: "spi-release-build-${{ runner.os }}-${{ github.event.after }}"
restore-keys: "spi-release-build-${{ runner.os }}-"
- name: Build release
run: |
# Since we're only pinging the version api endpoint, no database is needed and
# we can just copy the development template to ensure the db env variables are set.
cp .env.development.template .env.development
swift build -c release --static-swift-stdlib -Xlinker -ljemalloc --enable-experimental-prebuilts
- name: Cache .build
if: steps.restore-cache.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: .build
key: "spi-release-build-${{ runner.os }}-${{ github.event.after }}"
- name: Test release
run: |
$(swift build --show-bin-path -c release)/Run serve --port 8080 --hostname 0.0.0.0 &
sleep 10
echo Probing api/version...
bash -c '[ "$(curl -sL -w "%{http_code}" -o /dev/null http://127.0.0.1:8080/api/version)" == "200" ] || (echo Connection failed ; exit 1)'
# test-macos:
# name: Test macOS
# runs-on: macOS-latest
# services:
# postgres:
# image: postgres:16-alpine
# env:
# POSTGRES_DB: spi_dev
# POSTGRES_USER: spi_dev
# POSTGRES_PASSWORD: xxx
# options: >-
# --health-cmd pg_isready
# --health-interval 10s
# --health-timeout 5s
# --health-retries 5
# steps:
# - uses: actions/checkout@v4
# - name: Select Xcode 11.4
# run: sudo xcode-select -s /Applications/Xcode_11.4.app
# - name: Log Xcode version
# run: /usr/bin/xcodebuild -version
# - name: Run tests
# run: make test
# env:
# DATABASE_HOST: postgres
# DATABASE_PORT: 5432