name: Build and Push Docker Image on: push: branches: - docker_workflow jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 - name: Login to GitHub Docker Registry uses: docker/login-action@v1 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.DOCKER_TOKEN }} - name: Set Repo Name to Lowercase run: echo "REPO_NAME_LOWER=$(echo ${{ github.event.repository.name }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV - name: Build and Push Image uses: docker/build-push-action@v2 with: context: . file: ./Dockerfile push: true tags: ghcr.io/${{ github.repository_owner }}/${{ env.REPO_NAME_LOWER }}/jobspy_api:latest - name: Fetch Latest Release Tag id: latest_version run: | LATEST_TAG=$(curl --silent "https://api.github.com/repos/${{ github.repository }}/releases/latest" \ -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" | jq -r .tag_name) echo "::set-output name=version::${LATEST_TAG}" - name: Set Release Tag Name run: | CURRENT_VERSION=${{ steps.latest_version.outputs.version }} if [[ $CURRENT_VERSION == v0.*.0 ]]; then MINOR_VERSION=$(echo $CURRENT_VERSION | cut -d. -f2) NEW_MINOR_VERSION=$((MINOR_VERSION + 1)) RELEASE_TAG="v0.${NEW_MINOR_VERSION}.0" else RELEASE_TAG="v0.1.0" fi echo "RELEASE_TAG=${RELEASE_TAG}" >> $GITHUB_ENV - name: Create Release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ env.RELEASE_TAG }} release_name: Docker ${{ env.RELEASE_TAG }} draft: false prerelease: false - name: Attach Docker Image to Release run: | echo "Image ghcr.io/${{ github.repository }}/jobspy_api:latest is available under assets in the release."