/
romaaaka
/
queuebot
Обзор
Документация
Войти
/
romaaaka
/
queuebot
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
.github/workflows/docker.yml
101 строка
4 KB
Roman
ci/cd
26 апр 2025, 12:20
26 апр 2025, 12:20
9f7edf2
Код
Авторство
О чём код?
name: Docker Image CI/CD on: push: branches: [ "master" ] jobs: build_and_push: runs-on: ubuntu-latest name: "Build and push" steps: - name: checkout uses: actions/checkout@v3 with: fetch-depth: 0 - name: Install GitVersion uses: gittools/actions/gitversion/setup@v1.1.1 with: versionSpec: '5.x' - name: Use GitVersion id: gitversion uses: gittools/actions/gitversion/execute@v1.1.1 - name: Assign registry image name run: echo "CI_REGISTRY_IMAGE=$(echo ${{ secrets.DOCKER_USER }}/${{ github.event.repository.name }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV - name: Assign image tag run: | echo "DOCKER_TAG=latest" >> $GITHUB_ENV if [ "${{ steps.gitversion.outputs.semVer }}" != "" ]; then echo "DOCKER_TAG=v${{ steps.gitversion.outputs.semVer }}" >> $GITHUB_ENV fi; - name: docker login env: DOCKER_USER: ${{secrets.DOCKER_USER}} DOCKER_PASSWORD: ${{secrets.DOCKER_PASSWORD}} run: docker login -u $DOCKER_USER -p $DOCKER_PASSWORD - name: Build the Docker image run: docker build . --file Dockerfile --tag ${{ env.CI_REGISTRY_IMAGE }}:${{ env.DOCKER_TAG }} - name: Docker Push run: docker push ${{ env.CI_REGISTRY_IMAGE }}:${{ env.DOCKER_TAG }} deploy: needs: build_and_push name: "Deploy" runs-on: ubuntu-latest if: ${{ github.event.workflow_run.conclusion != 'failure' || github.event_name == 'workflow_dispatch' }} steps: - name: checkout uses: actions/checkout@v3 with: fetch-depth: 0 - name: Install GitVersion uses: gittools/actions/gitversion/setup@v1.1.1 with: versionSpec: '5.x' - name: Use GitVersion id: gitversion uses: gittools/actions/gitversion/execute@v1.1.1 - name: Assign image name and tag run: | echo "CI_REGISTRY_IMAGE=$(echo ${{ secrets.DOCKER_USER }}/${{ github.event.repository.name }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV echo "DOCKER_TAG=latest" >> $GITHUB_ENV if [ "${{ steps.gitversion.outputs.semVer }}" != "" ]; then echo "DOCKER_TAG=v${{ steps.gitversion.outputs.semVer }}" >> $GITHUB_ENV fi; if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then echo "DOCKER_TAG=${{ inputs.version }}" >> $GITHUB_ENV fi; - name: Create .env file run: | echo "Generating .env file" echo "# Autogenerated .env file" > .env echo "CI_REGISTRY_IMAGE=${{ env.CI_REGISTRY_IMAGE }}" >> .env echo "DOCKER_TAG=${{ env.DOCKER_TAG }}" >> .env echo "SSH_DIR=${{ secrets.SSH_DIR }}" >> .env - name: copy files to target server via scp uses: appleboy/scp-action@v0.1.3 with: host: ${{ secrets.SSH_HOST }} username: ${{ secrets.SSH_USER }} port: ${{ secrets.SSH_PORT }} key: ${{ secrets.SSH_KEY }} source: "./docker-compose.ci.yaml,./.env" target: "${{ secrets.SSH_DIR }}" - name: remote docker-compose up via ssh uses: appleboy/ssh-action@v0.1.5 env: DOCKER_USER: ${{ secrets.DOCKER_USER }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} DOCKER_COMPOSE_OVERRIDE: ${{ vars.DOCKER_COMPOSE_OVERRIDE }} with: host: ${{ secrets.SSH_HOST }} username: ${{ secrets.SSH_USER }} port: ${{ secrets.SSH_PORT }} key: ${{ secrets.SSH_KEY }} envs: DOCKER_USER,DOCKER_PASSWORD,DOCKER_COMPOSE_OVERRIDE script: | echo $DOCKER_PASSWORD | docker login -u $DOCKER_USER --password-stdin cd ${{ secrets.SSH_DIR }} echo "$DOCKER_COMPOSE_OVERRIDE" > docker-compose.override.yaml docker compose -f ./docker-compose.ci.yaml -f ./docker-compose.override.yaml config > docker-compose.yaml docker compose up -d --remove-orphans --pull always