mirror of
https://github.com/aliasvault/aliasvault.git
synced 2026-01-16 18:11:44 -05:00
113 lines
4.1 KiB
YAML
113 lines
4.1 KiB
YAML
# This workflow will test if pulling the latest Docker Compose containers from the registry works.
|
|
name: Docker Compose Pull
|
|
|
|
on:
|
|
push:
|
|
branches: [ "main" ]
|
|
pull_request:
|
|
branches: [ "main" ]
|
|
|
|
jobs:
|
|
test-docker:
|
|
runs-on: ubuntu-latest
|
|
|
|
services:
|
|
docker:
|
|
image: docker:26.0.0
|
|
options: --privileged
|
|
|
|
steps:
|
|
- name: Get repository and branch information
|
|
id: repo-info
|
|
run: |
|
|
echo "REPO_FULL_NAME=${GITHUB_REPOSITORY}" >> $GITHUB_ENV
|
|
echo "BRANCH_NAME=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_ENV
|
|
|
|
- name: Download install script from current branch
|
|
run: |
|
|
INSTALL_SCRIPT_URL="https://raw.githubusercontent.com/$REPO_FULL_NAME/$BRANCH_NAME/install.sh"
|
|
echo "Downloading install script from: $INSTALL_SCRIPT_URL"
|
|
curl -f -o install.sh "$INSTALL_SCRIPT_URL"
|
|
|
|
- name: Create .env file with custom SMTP port as port 25 is not allowed in GitHub Actions
|
|
run: |
|
|
echo "SMTP_PORT=2525" > .env
|
|
|
|
- name: Set permissions and run install.sh
|
|
run: |
|
|
chmod +x install.sh
|
|
./install.sh install --verbose
|
|
|
|
- name: Set up Docker Compose
|
|
run: docker compose -f docker-compose.yml up -d
|
|
|
|
- name: Wait for services to be up
|
|
run: |
|
|
# Wait for a few seconds
|
|
sleep 10
|
|
- name: Test if localhost:443 (WASM app) responds
|
|
uses: nick-fields/retry@v3
|
|
with:
|
|
timeout_minutes: 2
|
|
max_attempts: 3
|
|
command: |
|
|
http_code=$(curl -k -s -o /dev/null -w "%{http_code}" https://localhost:443)
|
|
if [ "$http_code" -ne 200 ]; then
|
|
echo "Service did not respond with 200 OK. Check if client app and/or nginx is configured correctly."
|
|
exit 1
|
|
else
|
|
echo "Service responded with 200 OK"
|
|
fi
|
|
|
|
- name: Test if localhost:443/api (WebApi) responds
|
|
uses: nick-fields/retry@v3
|
|
with:
|
|
timeout_minutes: 2
|
|
max_attempts: 3
|
|
command: |
|
|
http_code=$(curl -k -s -o /dev/null -w "%{http_code}" https://localhost:443/api)
|
|
if [ "$http_code" -ne 200 ]; then
|
|
echo "Service did not respond with expected 200 OK. Check if WebApi and/or nginx is configured correctly."
|
|
exit 1
|
|
else
|
|
echo "Service responded with $http_code"
|
|
fi
|
|
|
|
- name: Test if localhost:443/admin (Admin) responds
|
|
uses: nick-fields/retry@v3
|
|
with:
|
|
timeout_minutes: 2
|
|
max_attempts: 3
|
|
command: |
|
|
http_code=$(curl -k -s -o /dev/null -w "%{http_code}" https://localhost:443/admin/user/login)
|
|
if [ "$http_code" -ne 200 ]; then
|
|
echo "Service did not respond with expected 200 OK. Check if admin app and/or nginx is configured correctly."
|
|
exit 1
|
|
else
|
|
echo "Service responded with $http_code"
|
|
fi
|
|
|
|
- name: Test if localhost:2525 (SmtpService) responds
|
|
uses: nick-fields/retry@v3
|
|
with:
|
|
timeout_minutes: 2
|
|
max_attempts: 3
|
|
command: |
|
|
if ! nc -zv localhost 2525 2>&1 | grep -q 'succeeded'; then
|
|
echo "SmtpService did not respond on port 2525. Check if the SmtpService service is running."
|
|
exit 1
|
|
else
|
|
echo "SmtpService responded on port 2525"
|
|
fi
|
|
|
|
- name: Test install.sh reset-password output
|
|
run: |
|
|
output=$(./install.sh reset-password)
|
|
if ! echo "$output" | grep -E '.*New admin password: [A-Za-z0-9+/=]{8,}.*'; then
|
|
echo "Password reset output format is incorrect. Expected format: 'New admin password: <at least 8 base64 chars>'"
|
|
echo "Actual output: $output"
|
|
exit 1
|
|
else
|
|
echo "Password reset output format is correct"
|
|
fi
|