name: docker on: push: branches: [master] paths-ignore: - '.github/**' - '.vscode/**' - 'chrome-extension/**' - 'releases/**' - '**/**.md' - '**.crx' - '**.pem' - '.dockerignore' - '.gitignore' schedule: - cron: '34 4 * * 2' workflow_dispatch: jobs: build-and-push: runs-on: ubuntu-latest steps: - name: checkout code uses: actions/checkout@v2 - name: Set hash id: vars run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)" - name: Get current date id: date run: echo "::set-output name=date::$(date +'%Y-%m-%d')" - name: create-json id: create-json uses: jsdaniell/create-json@v1.2.2 with: name: "version.json" json: '{"type": "docker", "tag": "${{secrets.DOCKERHUB_MASTER_TAG}}", "commit": "${{ steps.vars.outputs.sha_short }}", "date": "${{ steps.date.outputs.date }}"}' dir: 'backend/' - name: setup platform emulator uses: docker/setup-qemu-action@v1 - name: setup multi-arch docker build uses: docker/setup-buildx-action@v2 - name: Generate Docker image metadata id: docker-meta uses: docker/metadata-action@v4 # Defaults: # DOCKERHUB_USERNAME : tzahi12345 # DOCKERHUB_REPO : youtubedl-material # DOCKERHUB_MASTER_TAG: nightly with: images: | ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_REPO }} ghcr.io/${{ github.repository_owner }}/${{ secrets.DOCKERHUB_REPO }} tags: | type=raw,${{secrets.DOCKERHUB_MASTER_TAG}}-{{ date 'YYYY-MM-DD' }} type=raw,${{secrets.DOCKERHUB_MASTER_TAG}} type=sha,prefix=sha-,format=short - name: Login to DockerHub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Login to GitHub Container Registry uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: build & push images uses: docker/build-push-action@v2 with: context: . file: ./Dockerfile platforms: linux/amd64,linux/arm64/v8,linux/arm/v7 push: true tags: ${{ steps.docker-meta.outputs.tags }} labels: ${{ steps.docker-meta.outputs.labels }}