feat: test en pr on main #1
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: Deployment tests | |
on: | |
pull_request: | |
branches: main | |
workflow_dispatch: | |
jobs: | |
build-push-docker: | |
runs-on: ubuntu-latest | |
environment: | |
name: Production | |
url: https://statlist.fr | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install SSH key | |
uses: shimataro/ssh-key-action@v2 | |
with: | |
key: ${{ secrets.SSH_SERVER_KEY }} | |
name: id_rsa # optional | |
known_hosts: ${{ secrets.KNOWN_HOSTS }} | |
- name: Deploy to Server | |
- id: vps_deployement | |
run: | | |
echo "test=https://statlist.fr" >> "$GITHUB_OUTPUT" | |
ssh -p $DEPLOY_PORT $DEPLOY_USER@$DEPLOY_DOMAIN << 'EOF' | |
source ~/.zshrc | |
set -e -o errexit | |
docker network inspect statlist-net >/dev/null 2>&1 || docker network create --driver overlay statlist-net | |
echo 'Login to docker registry...' | |
echo ${{ secrets.DCR_PASSWD }} | docker login --username=kaldray --password-stdin | |
echo 'succesfully logged in to registry docker' | |
echo 'Build with docker (and cache)...🔄' | |
export DOCKER_BUILDKIT=1 | |
cd projects/StatList | |
git fetch origin main | |
git checkout main | |
git pull origin main | |
# Build & push docker image | |
BUILD_ARGS="--build-arg NEXT_PUBLIC_VERCEL_URL=statlist.fr --build-arg NEXTAUTH_URL=${{ secrets.NEXTAUTH_URL }} --build-arg SPOTIFY_CLIENT_ID=${{ secrets.SPOTIFY_CLIENT_ID }} --build-arg SPOTIFY_CLIENT_SECRET=${{ secrets.SPOTIFY_CLIENT_SECRET }} --build-arg DEEZER_CLIENT_ID=${{ secrets.DEEZER_CLIENT_ID }} --build-arg DEEZER_CLIENT_SECRET=${{ secrets.DEEZER_CLIENT_SECRET }} --build-arg NEXTAUTH_SECRET=${{ secrets.NEXTAUTH_SECRET }} --build-arg USERNAME=${{ secrets.USERNAME }} --build-arg PASSWORD=${{ secrets.PASSWORD }}" | |
docker buildx build $BUILD_ARGS --push -f ./docker/prod.Dockerfile -t kaldray/statlist-next:latest . | |
echo 'build successful ✅' | |
# Start docker instances | |
echo 'updating docker services...🔄' | |
docker stack deploy --with-registry-auth -c ./docker/docker-compose.prod.yml test | |
echo 'services updated succesfully ✅' | |
EOF | |
env: | |
DEPLOY_PORT: ${{ secrets.DEPLOY_PORT }} | |
DEPLOY_DIR: ${{ secrets.DEPLOY_DIR }} | |
DEPLOY_DOMAIN: ${{ secrets.DEPLOY_DOMAIN }} | |
DEPLOY_USER: ${{ secrets.DEPLOY_USER }} | |
BRANCH_NAME: ${{ github.head_ref || github.ref_name }} | |
test_e2e: | |
needs: build-push-docker | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install Node environnment | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
- uses: pnpm/action-setup@v2 | |
name: Install pnpm | |
with: | |
version: 7.14.2 | |
- name: Install dependencies | |
run: pnpm install | |
- name: Install Playwright Browsers | |
run: pnpm playwright install --with-deps | |
- name: Run server | |
run: xvfb-run --auto-servernum pnpm run test | |
env: | |
CI: true | |
NEXT_AUTH_URL: ${{ secrets.NEXTAUTH_URL }} | |
PASSWORD: ${{secrets.PASSWORD}} | |
USERNAME: ${{secrets.USERNAME}} | |
NEXTAUTH_SECRET: ${{secrets.NEXTAUTH_SECRET}} | |
SPOTIFY_CLIENT_ID: ${{secrets.SPOTIFY_CLIENT_ID}} | |
SPOTIFY_CLIENT_SECRET: ${{secrets.SPOTIFY_CLIENT_SECRET}} | |
- name: Download trace of test | |
uses: actions/upload-artifact@v3 | |
if: always() | |
with: | |
name: playwright-report | |
path: playwright-report/ | |
retention-days: 30 |