name: Build on: workflow_dispatch: push: branches: - master paths-ignore: - '**/*.md' - '**/*.yml' - '.gitignore' - '.dockerignore' - '.github/**' - '.github/workflows/**' - 'Dockerfile' 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=${{ vars.MAJOR }}.${{ vars.MINOR }}" \ --build-arg "BUILD_ARG=${GITHUB_RUN_ID}" \ --build-arg "DATE_ARG=${{ github.event.repository.updated_at }}" \ --label "build=${GITHUB_RUN_ID}" \ --label "version=${{ vars.MAJOR }}.${{ vars.MINOR }}" \ --tag "${{ github.repository }}:latest" \ --tag "${{ github.repository }}:${{ vars.MAJOR }}.${{ vars.MINOR }}" \ --tag "ghcr.io/${{ github.repository }}:latest" \ --tag "ghcr.io/${{ github.repository }}:${{ vars.MAJOR }}.${{ vars.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 }}:${{ vars.MAJOR }}.${{ vars.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 }}:${{ vars.MAJOR }}.${{ vars.MINOR }}" && \ docker push "ghcr.io/${{ github.repository }}:latest" release: needs: build name: Release runs-on: ubuntu-latest permissions: contents: write steps: - uses: actions/checkout@v3 - name: Create a release uses: action-pack/github-release@v6 env: GITHUB_TOKEN: ${{ secrets.REPO_ACCESS_TOKEN }} with: tag: "v${{ vars.MAJOR }}.${{ vars.MINOR }}" title: "v${{ vars.MAJOR }}.${{ vars.MINOR }}" body: "Release v${{ vars.MAJOR }}.${{ vars.MINOR }}" - name: Increment minor version uses: action-pack/increment@v2 with: name: 'MINOR' 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: action-pack/gitlab-sync@v3 with: url: ${{ secrets.GITLAB_URL }} token: ${{ secrets.GITLAB_TOKEN }} username: ${{ secrets.GITLAB_USERNAME }}