From fa538ca22fec971160c6c85fa30908efc9c5f953 Mon Sep 17 00:00:00 2001 From: colin Date: Sun, 12 Jan 2025 18:08:03 -0500 Subject: [PATCH] Update .woodpecker.yml --- .woodpecker.yml | 124 ++++++++++++++++-------------------------------- 1 file changed, 42 insertions(+), 82 deletions(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index 742b491..9430efd 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -1,144 +1,104 @@ labels: - hostname: "macmini7" + location: manager + clone: git: image: woodpeckerci/plugin-git settings: partial: false depth: 1 + steps: - # Build Step for staging Branch + # Build Step for Staging build-staging: name: build-staging image: woodpeckerci/plugin-docker-buildx - secrets: [REGISTRY_USER, REGISTRY_PASSWORD] + environment: + REGISTRY_USER: + from_secret: REGISTRY_USER + REGISTRY_PASSWORD: + from_secret: REGISTRY_PASSWORD volumes: - /var/run/docker.sock:/var/run/docker.sock commands: - echo "Building application for staging branch" - echo "$${REGISTRY_PASSWORD}" | docker login -u "$${REGISTRY_USER}" --password-stdin git.nixc.us - - echo compose build - docker compose -f docker-compose.staging.yml build when: branch: main event: push - # path: - # include: [ 'stack.production.yml', 'stack.staging.yml', 'docker-compose.staging.yml', 'docker-compose.production.yml', 'Dockerfile', '*.tests.ts' ] + # Deploy New to Staging deploy-new: name: deploy-new - when: - branch: main - # path: - # include: [ 'stack.production.yml', 'stack.staging.yml', 'docker-compose.staging.yml', 'docker-compose.production.yml', 'Dockerfile', '*.tests.ts' ] image: woodpeckerci/plugin-docker-buildx - secrets: [REGISTRY_USER, REGISTRY_PASSWORD] + environment: + REGISTRY_USER: + from_secret: REGISTRY_USER + REGISTRY_PASSWORD: + from_secret: REGISTRY_PASSWORD volumes: - /var/run/docker.sock:/var/run/docker.sock commands: - echo "$${REGISTRY_PASSWORD}" | docker login -u "$${REGISTRY_USER}" --password-stdin git.nixc.us - - echo compose push - docker compose -f docker-compose.staging.yml push - # - docker stack deploy --with-registry-auth -c ./stack.staging.yml $${CI_REPO_NAME}-staging - - # # Wait for Deploy to Complete - # wait-for-deploy-staging: - # name: wait-for-deploy-staging - # image: woodpeckerci/plugin-git - # commands: - # - echo "Waiting for staging deploy step to complete rollout." - # - sleep 60 - # when: - # - branch: main - # - event: push - - # # Run Automated Tests on staging Branch - # test-staging: - # name: run-tests-staging - # image: git.nixc.us/colin/playwright:latest - # secrets: [ base_url ] - # when: - # - branch: main - # - event: push - # - path: - # include: [ 'tests/', 'src/','docker-compose.staging.yml', 'docker-compose.production.yml', '*.tests.ts' ] # Specify paths relevant to tests - # volumes: - # - /var/run/docker.sock:/var/run/docker.sock:ro - - cleanup-staging: - name: cleanup-staging when: branch: main - # path: - # include: [ 'stack.production.yml', 'stack.staging.yml', 'docker-compose.staging.yml', 'docker-compose.production.yml', 'Dockerfile', '*.tests.ts' ] + event: push + + # Cleanup Staging + cleanup-staging: + name: cleanup-staging image: woodpeckerci/plugin-docker-buildx - secrets: [REGISTRY_USER, REGISTRY_PASSWORD] + environment: + REGISTRY_USER: + from_secret: REGISTRY_USER + REGISTRY_PASSWORD: + from_secret: REGISTRY_PASSWORD volumes: - /var/run/docker.sock:/var/run/docker.sock commands: - # - docker stack rm $${CI_REPO_NAME}-staging - ## added fault tolerance for docker stack rm - # - for i in {1..5}; do docker stack rm ${CI_REPO_NAME}-staging && break || sleep 10; done - docker compose -f docker-compose.staging.yml down - docker compose -f docker-compose.staging.yml rm -f + when: + branch: main + event: push - # Build Step for staging Branch + # Build and Push for Production build-build-push-production: name: build-build-push-production image: woodpeckerci/plugin-docker-buildx - secrets: [REGISTRY_USER, REGISTRY_PASSWORD] + environment: + REGISTRY_USER: + from_secret: REGISTRY_USER + REGISTRY_PASSWORD: + from_secret: REGISTRY_PASSWORD volumes: - /var/run/docker.sock:/var/run/docker.sock commands: - - echo "Building application for staging branch" + - echo "Building application for production branch" - echo "$${REGISTRY_PASSWORD}" | docker login -u "$${REGISTRY_USER}" --password-stdin git.nixc.us - - echo compose build - docker compose -f docker-compose.production.yml build --no-cache - docker compose -f docker-compose.production.yml push when: branch: main event: [push, cron] - # path: - # include: [ 'stack.production.yml', 'stack.staging.yml', 'docker-compose.staging.yml', 'docker-compose.production.yml', 'Dockerfile', '*.tests.ts' ] - # Deploy to Production Branch + # Deploy to Production deploy-production: name: deploy-production image: woodpeckerci/plugin-docker-buildx - secrets: [REGISTRY_USER, REGISTRY_PASSWORD] + environment: + REGISTRY_USER: + from_secret: REGISTRY_USER + REGISTRY_PASSWORD: + from_secret: REGISTRY_PASSWORD volumes: - /var/run/docker.sock:/var/run/docker.sock commands: - echo "$${REGISTRY_PASSWORD}" | docker login -u "$${REGISTRY_USER}" --password-stdin git.nixc.us + # Uncomment this line to use docker stack deployment # - docker stack deploy --with-registry-auth -c ./stack.production.yml $${CI_REPO_NAME} - # - docker image rm git.nixc.us/colin/$${CI_REPO_NAME}:production when: branch: main event: [push, cron] - # path: - # include: [ 'stack.production.yml', 'stack.staging.yml', 'docker-compose.staging.yml', 'docker-compose.production.yml', 'Dockerfile', '*.tests.ts' ] - - - # # Wait for Deploy to Complete - # wait-for-deploy-production: - # name: wait-for-deploy-production - # image: woodpeckerci/plugin-git - # commands: - # - echo "Waiting for deploy step to complete rollout." - # - sleep 60 - # when: - # branch: main - # event: push - - # # Run Post-Deployment Smoke Tests - # post-deploy-smoke-tests-git-nixc-us: - # name: run-post-deploy-smoke-tests-git-nixc-us - # image: git.nixc.us/colin/playwright:latest - # # secrets: [TEST_USER, TEST_PASSWORD] - # environment: - # - BASE_URL=https://git.nixc.us - # when: - # branch: main - # event: push - # # path: - # # include: [ 'stack.production.yml', 'stack.staging.yml', 'docker-compose.staging.yml', 'docker-compose.production.yml', 'Dockerfile', '*.tests.ts' ] \ No newline at end of file