Release #267
This file contains hidden or 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: "Release" | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| env: | |
| description: 'Environment' | |
| default: 'dev' | |
| type: choice | |
| options: | |
| - 'dev' | |
| - 'stage' | |
| - 'prod' | |
| build_flag: | |
| description: 'Docker Build Flags' | |
| default: '' | |
| type: choice | |
| options: | |
| - '' | |
| - '--no-cache' | |
| build_module: | |
| description: 'Docker Build Module' | |
| default: '' | |
| type: string | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| name: Build, Push, Deploy | |
| environment: ${{github.event.inputs.env}} | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@v2 | |
| # frontend submod | |
| - name: Checkout frontend | |
| uses: actions/checkout@v2 | |
| with: | |
| repository: TaskarCenterAtUW/workspaces-frontend | |
| path: frontend | |
| ref: refs/tags/${{github.event.inputs.env}} | |
| - run: cd frontend; echo FRONTEND_VERSION=`/usr/bin/git log -1 --format='%h'` >> "$GITHUB_ENV" | |
| # osm-cgimap submod | |
| - name: Checkout osm-cgimap | |
| uses: actions/checkout@v2 | |
| with: | |
| repository: TaskarCenterAtUW/workspaces-cgimap | |
| path: osm-cgimap | |
| ref: refs/tags/${{github.event.inputs.env}} | |
| - run: cd osm-cgimap; echo CGIMAP_VERSION=`/usr/bin/git log -1 --format='%h'` >> "$GITHUB_ENV" | |
| # osm-rails submod | |
| - name: Checkout osm-rails | |
| uses: actions/checkout@v2 | |
| with: | |
| repository: TaskarCenterAtUW/workspaces-openstreetmap-website | |
| path: osm-rails | |
| ref: refs/tags/${{github.event.inputs.env}} | |
| - run: cd osm-rails; echo OSMRAILS_VERSION=`/usr/bin/git log -1 --format='%h'` >> "$GITHUB_ENV" | |
| # pathways submod | |
| - name: Checkout pathways-editor | |
| uses: actions/checkout@v2 | |
| with: | |
| repository: TaskarCenterAtUW/workspaces-pathways-editor | |
| path: pathways-editor | |
| ref: refs/tags/${{github.event.inputs.env}} | |
| - run: cd pathways-editor; echo PATHWAYS_VERSION=`/usr/bin/git log -1 --format='%h'` >> "$GITHUB_ENV" | |
| # rapid submod | |
| - name: Checkout rapid | |
| uses: actions/checkout@v2 | |
| with: | |
| repository: TaskarCenterAtUW/workspaces-rapid | |
| path: rapid | |
| ref: refs/tags/${{github.event.inputs.env}} | |
| - run: cd rapid; echo RAPID_VERSION=`/usr/bin/git log -1 --format='%h'` >> "$GITHUB_ENV" | |
| # tasking-manager submod | |
| - name: Checkout tasking-manager | |
| uses: actions/checkout@v2 | |
| with: | |
| repository: TaskarCenterAtUW/workspaces-tasking-manager | |
| path: tasking-manager | |
| ref: refs/tags/${{github.event.inputs.env}} | |
| - run: cd tasking-manager; echo TM_VERSION=`/usr/bin/git log -1 --format='%h'` >> "$GITHUB_ENV" | |
| # leaderboard submod | |
| - name: Checkout leaderboard | |
| uses: actions/checkout@v2 | |
| with: | |
| repository: TaskarCenterAtUW/workspaces-leaderboard | |
| path: leaderboard | |
| ref: refs/tags/${{github.event.inputs.env}} | |
| - run: cd leaderboard; echo LB_VERSION=`/usr/bin/git log -1 --format='%h'` >> "$GITHUB_ENV" | |
| - uses: docker/login-action@v3 | |
| with: | |
| registry: ${{ vars.WS_DOCKER_REGISTRY }} | |
| username: ${{ vars.DOCKERHUB_USERNAME }} | |
| password: ${{ secrets.DOCKERHUB_TOKEN }} | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| # see tdei_uw.env for why | |
| - name: Override ENV_NAME_PARAM for prod deployments | |
| if: github.event.inputs.env == 'prod' | |
| run: echo "ENV_NAME_PARAM=" >> "$GITHUB_ENV" | |
| - name: Override ENV_NAME_PARAM for dev or stage deployments | |
| if: github.event.inputs.env != 'prod' | |
| env: | |
| ENV: ${{ vars.ENV }} | |
| run: echo "ENV_NAME_PARAM=-${ENV}" >> "$GITHUB_ENV" | |
| - name: Build and push | |
| run: | | |
| docker compose -f docker-compose.build.yml --env-file tdei_uw.env build --build-arg CODE_VERSION=${CODE_VERSION} ${{github.event.inputs.build_flag}} ${{github.event.inputs.build_module}} | |
| docker compose -f docker-compose.build.yml --env-file tdei_uw.env push | |
| env: | |
| ENV: ${{ vars.ENV }} | |
| CODE_VERSION: "${{ env.FRONTEND_VERSION }}-${{ env.CGIMAP_VERSION }}-${{ env.OSMRAILS_VERSION }}-${{ env.PATHWAYS_VERSION }}-${{ env.RAPID_VERSION }}-${{ env.TM_VERSION }}-${{ env.LB_VERSION }}" | |
| ENV_NAME_PARAM: ${{ env.ENV_NAME_PARAM }} | |
| # hosts | |
| WS_DOCKER_REGISTRY: ${{ vars.WS_DOCKER_REGISTRY }} | |
| WS_POSM_DB_HOST: ${{ vars.WS_POSM_DB_HOST }} | |
| # passwords | |
| WS_API_DB_PASS: ${{ secrets.WS_API_DB_PASS }} | |
| WS_MAPBOX_ACCESS_TOKEN: ${{ secrets.WS_MAPBOX_ACCESS_TOKEN }} | |
| WS_OSM_DB_PASS: ${{ secrets.WS_OSM_DB_PASS }} | |
| WS_OSM_SECRET_KEY_BASE: ${{ secrets.WS_OSM_SECRET_KEY_BASE }} | |
| WS_SMTP_PASS: ${{ secrets.WS_SMTP_PASS }} | |
| WS_TASKS_DB_PASS: ${{ secrets.WS_TASKS_DB_PASS }} | |
| WS_TASKS_SECRET_KEY: ${{ secrets.WS_TASKS_SECRET_KEY }} | |
| - name: Deploy | |
| env: | |
| ENV: ${{ vars.ENV }} | |
| CODE_VERSION: "${{ env.FRONTEND_VERSION }}-${{ env.CGIMAP_VERSION }}-${{ env.OSMRAILS_VERSION }}-${{ env.PATHWAYS_VERSION }}-${{ env.RAPID_VERSION }}-${{ env.TM_VERSION }}-${{ env.LB_VERSION }}" | |
| ENV_NAME_PARAM: ${{ env.ENV_NAME_PARAM }} | |
| # machine to deploy to | |
| AZURE_DOCKER_HOST_IP: ${{ vars.AZURE_DOCKER_HOST_IP }} | |
| # tag to deploy | |
| WS_DOCKER_TAG: "${{ env.FRONTEND_VERSION }}-${{ env.CGIMAP_VERSION }}-${{ env.OSMRAILS_VERSION }}-${{ env.PATHWAYS_VERSION }}-${{ env.RAPID_VERSION }}-${{ env.TM_VERSION }}-${{ env.LB_VERSION }}" | |
| # hosts | |
| WS_DOCKER_REGISTRY: ${{ vars.WS_DOCKER_REGISTRY }} | |
| WS_POSM_DB_HOST: ${{ vars.WS_POSM_DB_HOST }} | |
| # passwords | |
| WS_API_DB_PASS: ${{ secrets.WS_API_DB_PASS }} | |
| WS_MAPBOX_ACCESS_TOKEN: ${{ secrets.WS_MAPBOX_ACCESS_TOKEN }} | |
| WS_OSM_DB_PASS: ${{ secrets.WS_OSM_DB_PASS }} | |
| WS_OSM_SECRET_KEY_BASE: ${{ secrets.WS_OSM_SECRET_KEY_BASE }} | |
| WS_SMTP_PASS: ${{ secrets.WS_SMTP_PASS }} | |
| WS_TASKS_DB_PASS: ${{ secrets.WS_TASKS_DB_PASS }} | |
| WS_TASKS_SECRET_KEY: ${{ secrets.WS_TASKS_SECRET_KEY }} | |
| run: | | |
| mkdir -p ~/.ssh | |
| echo Starting SSH agent | |
| eval `ssh-agent -s` | |
| ssh-keyscan ${{ vars.AZURE_DOCKER_HOST_IP }} >> ~/.ssh/known_hosts | |
| echo "${{ secrets.GH_ACTIONS_SSH_KEY }}" > ~/.ssh/github_actions | |
| chmod 600 ~/.ssh/github_actions | |
| ssh-add ~/.ssh/github_actions | |
| echo Configuring docker context | |
| docker context create ${{ vars.ENV }} --docker "host=ssh://github-actions@${{ vars.AZURE_DOCKER_HOST_IP }}" | |
| docker context use ${{ vars.ENV }} | |
| # remove images no longer in use--may need disk space to pull | |
| echo Pruning old docker images | |
| docker image prune -a -f | |
| # pull new images, recreate containers | |
| docker compose -f docker-compose.deploy.yml --env-file tdei_uw.env up -d --force-recreate --remove-orphans | |
| # check what was deployed, just to save in the GH logs | |
| echo Waiting for deployment to complete | |
| sleep 30s | |
| echo Deploy list | |
| docker ps | |