name: Build on: push: branches: - master paths-ignore: - '**/*.md' - '.gitignore' - '.dockerignore' - '.github/**' - '.github/workflows/**' jobs: shellcheck: name: Check uses: ./.github/workflows/check.yml build: name: Build needs: shellcheck runs-on: ubuntu-latest permissions: packages: write contents: read steps: - uses: actions/checkout@v3 - name: Build the Docker image run: | docker build . \ --file Dockerfile \ --build-arg "VERSION_ARG=${{ secrets.MAJOR }}.${{ secrets.MINOR }}" \ --build-arg "BUILD_ARG=${GITHUB_RUN_ID}" \ --build-arg "DATE_ARG=${{ github.event.repository.updated_at }}" \ --label "build=${GITHUB_RUN_ID}" \ --label "version=${{ secrets.MAJOR }}.${{ secrets.MINOR }}" \ --tag "${{ github.repository }}:latest" \ --tag "${{ github.repository }}:${{ secrets.MAJOR }}.${{ secrets.MINOR }}" \ --tag "ghcr.io/${{ github.repository }}:latest" \ --tag "ghcr.io/${{ github.repository }}:${{ secrets.MAJOR }}.${{ secrets.MINOR }}" - name: Login to Docker Hub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Push to DockerHub run: | docker push "${{ github.repository }}:${{ secrets.MAJOR }}.${{ secrets.MINOR }}" &&\ docker push "${{ github.repository }}:latest" - name: Login to GitHub Container Registry uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Push to Github Container Registry run: | docker push "ghcr.io/${{ github.repository }}:${{ secrets.MAJOR }}.${{ secrets.MINOR }}" && \ docker push "ghcr.io/${{ github.repository }}:latest" release: needs: build runs-on: ubuntu-latest permissions: contents: write steps: - uses: actions/checkout@v3 - name: Create a release uses: kroese/github-release@v5 env: GITHUB_TOKEN: ${{ secrets.REPO_ACCESS_TOKEN }} with: tag: "v${{ secrets.MAJOR }}.${{ secrets.MINOR }}" title: "v${{ secrets.MAJOR }}.${{ secrets.MINOR }}" body: "Release v${{ secrets.MAJOR }}.${{ secrets.MINOR }}" - name: Increment minor version run: | echo "NEW_MINOR=$((${{ secrets.MINOR }}+1))" >> $GITHUB_ENV - name: Update minor version uses: kroese/set-secret@v4 with: name: 'MINOR' value: ${{ env.NEW_MINOR }} repository: ${{ github.repository }} token: ${{ secrets.REPO_ACCESS_TOKEN }} mirror: name: Mirror runs-on: ubuntu-latest permissions: contents: read steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - name: Push to Gitlab mirror uses: wangchucheng/git-repo-sync@v0.1.0 with: target-url: ${{ secrets.GITLAB_URL }} target-token: ${{ secrets.GITLAB_TOKEN }} target-username: ${{ secrets.GITLAB_USERNAME }}