name: Build And Publish run-name: ${{ gitea.actor }} runs ci pipeline on: [ push ] jobs: BuildAndPublish: runs-on: ubuntu-latest steps: - name: Checkout code uses: https://github.com/actions/checkout@v4 - name: Use Node.js uses: https://github.com/actions/setup-node@v3 with: node-version: '18.17.0' - name: Decrypt secrets run: ./decrypt_secrets.sh env: SECRET_PASSPHRASE: ${{ secrets.SECRET_PASSPHRASE }} - name: Login to registry uses: docker/login-action@v3 with: registry: git.ryansnet.xyz username: ${{secrets.REGISTRY_USERNAME}} password: ${{secrets.REGISTRY_PASSWORD}} - name: Set up Docker Buildx uses: https://github.com/docker/setup-buildx-action@v3 with: config-inline: | [registry."${{secrets.REGISTRY_URL}}"] - name: Build and tag image run: | docker build -t ${{secrets.REGISTRY_URL}}/${{secrets.REGISTRY_USERNAME}}/${{secrets.REPO_NAME}}:latest . # docker tag ${{secrets.REGISTRY_URL}}/${{secrets.REGISTRY_USERNAME}}/${{secrets.REPO_NAME}}:latest ${{secrets.REGISTRY_URL}}/${{secrets.REGISTRY_USERNAME}}/${{secrets.REPO_NAME}}:latest - name: Push image run: docker push ${{secrets.REGISTRY_URL}}/${{secrets.REGISTRY_USERNAME}}/${{secrets.REPO_NAME}}:latest - name: Stop and remove old Docker container continue-on-error: true run: | sudo docker stop ${{vars.REPO_NAME}} sudo docker rm ${{vars.REPO_NAME}} - name: Pull new image and start Docker container run: | sudo docker pull ${{secrets.REGISTRY_URL}}/${{secrets.REGISTRY_USERNAME}}/${{vars.REPO_NAME}}:latest sudo docker run -d --restart unless-stopped \ --env-file ./.env \ --name portfolio \ -p ${{vars.DEPLOY_IP}}:3000:3000 \ ${{secrets.REGISTRY_URL}}/${{secrets.REGISTRY_USERNAME}}/${{vars.REPO_NAME}}:latest