/
romaaaka
/
queuebot
Обзор
Документация
Войти
/
romaaaka
/
queuebot
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
v1.0
.github/workflows/docker.yml
85 строк
3 KB
Roman
secure password
14 июн 2024, 12:55
14 июн 2024, 12:55
dab0d2f
Код
Авторство
О чём код?
name: Docker CI/CD on: push: branches: [ "master" ] release: types: [published] jobs: push_to_registry: runs-on: ubuntu-latest if: ${{ github.event.workflow_run.conclusion != 'failure' }} steps: - name: checkout uses: actions/checkout@v3 - name: Env variable assignment run: echo "CI_REGISTRY_IMAGE=$(echo ${{ secrets.DOCKER_USER }}/${{ github.event.repository.name }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV - name: Assign version run: | echo "DOCKER_TAG=latest" >> $GITHUB_ENV if [ "${{ github.event.release.tag_name }}" != "" ]; then echo "DOCKER_TAG=${{ github.event.release.tag_name }}" >> $GITHUB_ENV fi; - name: Login to DockerHub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USER }} password: ${{ secrets.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_via_ssh: needs: push_to_registry runs-on: ubuntu-latest if: ${{ github.event.workflow_run.conclusion != 'failure' }} steps: - name: checkout uses: actions/checkout@v3 - name: repository name fix and env 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 [ "${{ github.event.release.tag_name }}" != "" ]; then echo "DOCKER_TAG=${{ github.event.release.tag_name }}" >> $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 echo "${{ secrets.DELAYBOT_ENV }}" >> .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 }} password: ${{ secrets.SSH_PASSWORD }} 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 }} with: host: ${{ secrets.SSH_HOST }} username: ${{ secrets.SSH_USER }} port: ${{ secrets.SSH_PORT }} password: ${{ secrets.SSH_PASSWORD }} envs: DOCKER_USER,DOCKER_PASSWORD script: | echo $DOCKER_PASSWORD | docker login -u $DOCKER_USER --password-stdin cd ${{ secrets.SSH_DIR }} docker compose -f ./docker-compose.ci.yaml pull docker compose -f ./docker-compose.ci.yaml up -d